Oracle 基础(二) 结构,创建表空间等命令

本文深入探讨了Oracle数据库的体系结构,包括物理存储结构、逻辑结构、实例内存结构及后台进程。详细讲解了数据文件、控制文件、日志文件的作用,表空间的创建、修改与删除,以及数据字典的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关系数据库

1.关系型数模型
2.关系数据库的泛化理论
3.数据库设计(实体-关系模型,E-R图绘制)
4.Oracle应用体系
~ 1.单磁盘独立主机结构
~ 2.多磁盘独立主机结构
~ 3.客户端/服务器端系统结构
~ 4.浏览器/服务器系统结构
~ 5.分布式数据库体系结构

Oracle数据库体系结构
1.物理存储结构
1.数据文件
2.控制文件
3.日志文件 重做日志文件
4.其他文件
2.逻辑结构
1.表空间
数据库实例
1.内存结构

1.系统全局区
2.程序全局区
3.排序区
4.大池
5.java 池

2.后台进程

1.CKPT进程
2.DBWR
3.LGWR
4.SMON
5.PMON
6.RECO
7.LCKN
8.DNNN
9.SNPN

3.数据字典

是Oracle存放数据库实例信息的一组表,通过数据字典可以了解数据库的详细配置信息
数据库字典的所有者为sys用户,而数据字典和数据字典视图都是存储在system表空间中的

  1. user_* : 用户对象信息表.
    user_tablees;
  2. all视图
    1.all_ 为前缀的用来记录用户对象的所有信息,和授权访问对象的信息
  3. dba视图
    1.dba_user,dba_table 等都是存储数据库实例所有信息
  4. v$视图
    1.活动相关的性能统计信息
  5. GV$视图
    1.分布式系统环境下使用的多文件存储信息

dba_table
dba_views

sql*plus:

注册表:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
页面设置大小
set pagesize 行数
SQL> desc dept 部门表
	 名称                                      是否为空? 类型
	 ----------------------------------------- -------- ----------------------------
	 DEPTNO                                    NOT NULL NUMBER(2)
	 DNAME                                              VARCHAR2(14)
	 LOC                                                VARCHAR2(13)
表空间

物理结构上 数据信息存储在数据文件中
逻辑结构上,数据信息存储在表空间中

一个数据库是由多个表空间构成,表空间和数据文件存在紧密的对应关系
每个表空间是由一个或多个数据文件组成

dba_tablespaces : 存储Oracle数据库中所有表信息结构

SQL> select tablespace_name,block_size,allocation_type from dba_tablespaces;

	TABLESPACE_NAME                BLOCK_SIZE ALLOCATIO
	------------------------------ ---------- ---------
	SYSTEM                               8192 SYSTEM
	SYSAUX                               8192 SYSTEM
	UNDOTBS1                             8192 SYSTEM
	TEMP                                 8192 UNIFORM
	USERS                                8192 SYSTEM
	EXAMPLE                              8192 SYSTEM
	
	已选择6行。
创建基本表空间
在创建表空间的时候:
1.在数据字典和控件文件中添加新建的表空间信息
2.操作系统中,创建指定大小的操作系统文件,并作为与表空间对应的数据文件
使用脚本创建:
create [temporary | undo] tablespace table_name
datafile filepath
blocaksizze number k
autoallocate number [n/k]
SQL> create tablespace hnkj
	  2  datafile 'd:\db_file\hnkj.dbf'
	  3  size 10m
	  4  autoextend on
	  5  next 5m
	  6  maxsize unlimited;
	  表空间已创建。

修改表空间

  1. 为表空间增加新的数据文件
SQL> alter tablespace hnkj
    		  2  add datafile 'd:\db_file\hnkj_02.dbf'
    		  3  size 10m;
    		  表空间已更改。
  1. 查询数据文件信息
SQL> select file_id,file_name,bytes from dba_data_files;
	
	   FILE_ID FILE_NAME                                               BYTES
	---------- -------------------------------------------------- ----------
	         4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF                 5242880
	         3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF             104857600
	         2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF              534773760
	         1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF              713031680
	         5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF             104857600
	         6 D:\DB_FILE\HNKJ.DBF                                  10485760
	         7 D:\DB_FILE\HNKJ_02.DBF                               10485760
	
	已选择7行。
  1. 修改数据文件大小
SQL> select file_id,file_name,bytes from dba_data_files;
	
	   FILE_ID FILE_NAME                                               BYTES
	---------- -------------------------------------------------- ----------
	         4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF                 5242880
	         3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF             104857600
	         2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF              534773760
	         1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF              713031680
	         5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF             104857600
	         6 D:\DB_FILE\HNKJ.DBF                                  10485760
	         7 D:\DB_FILE\HNKJ_02.DBF                                5242880
	
	已选择7行。
  1. 修改数据文件是自动增长
  2. `SQL> alter database datafile ‘D:\DB_FILE\HNKJ_02.DBF’ autoextend on;

数据库已更改。

SQL> select file_id,file_name,autoextensible from dba_data_files;

   FILE_ID FILE_NAME                                          AUT
---------- -------------------------------------------------- ---
         4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF              YES
         3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF            YES
         2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF             YES
         1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF             YES
         5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF            YES
         6 D:\DB_FILE\HNKJ.DBF                                YES
         7 D:\DB_FILE\HNKJ_02.DBF                             YES

已选择7行。`
修改表空间状态
正常状态 : online(在线),read write(读写)
非正常状态 : offline(离线),read only(只读)
移动数据文件
  1. 修改表空间状态为offline状态,防止其他用户操作
    alter tablespace hnkj offline;
SQL> select tablespace_name,status from dba_tablespaces;

	TABLESPACE_NAME                STATUS
	------------------------------ ---------
	SYSTEM                         ONLINE
	SYSAUX                         ONLINE
	UNDOTBS1                       ONLINE
	TEMP                           ONLINE
	USERS                          ONLINE
	EXAMPLE                        ONLINE
	HNKJ                           OFFLINE
  1. 复制数据文件到另一个磁盘
  2. 使用 alter tablespace rename 语句修改数据文件名称
SQL> alter tablespace hnkj
	  2  rename datafile 'd:\db_file\hnkj.dbf'
	  3  to
	  4  'd:\db\hnkj.dbf';
	
	表空间已更改。
	
	SQL> alter tablespace hnkj
	  2  rename datafile 'd:\db_file\hnkj_02.dbf'
	  3  to
	  4  'd:\db\hnkj_02.dbf';
	
	表空间已更改。

	SQL> select file_id,file_name,bytes from dba_data_files;
	
	   FILE_ID FILE_NAME                                               BYTES
	---------- -------------------------------------------------- ----------
	         4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF                 5242880
	         3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF             104857600
	         2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF              534773760
	         1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF              713031680
	         5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF             104857600
	         6 D:\DB\HNKJ.DBF
	         7 D:\DB\HNKJ_02.DBF
	
	已选择7行。
  1. 将表空间的状态修改为onlin
SQL> alter tablespace hnkj online;

	表空间已更改。
	
	SQL> select tablespace_name,status from dba_tablespaces;
	
	TABLESPACE_NAME                STATUS
	------------------------------ ---------
	SYSTEM                         ONLINE
	SYSAUX                         ONLINE
	UNDOTBS1                       ONLINE
	TEMP                           ONLINE
	USERS                          ONLINE
	EXAMPLE                        ONLINE
	HNKJ                           ONLINE
	
	已选择7行。

删除表空间
drop tablespace tablespace_name [including contents] | [including contents and datafiles]

including contents : 表示删除表空间,但是保留该表空间的数据文件(即使保留其数据文件,这些文件也无法使用)
including contents and datafiles : 删除表空间,将内容全部和数据文件全部删除

SQL> drop tablespace hnkj including contents and datafiles;

表空间已删除。

filename 字段最多允许占用50个字符
SQL> column file_name format a50
临时表空间
临时表空间主要用来为排序或者汇总等操作提供的临时工作空间

create temporary tablespace temp_01
tempfile ‘page.temp_01.dbf’
size 10m
autoextend on
next 10m maxsize 100m

临时表空间用于存储临时数据,不能够存储永久性数据.
大文件表空间
最大可以存储4G字节的数据块大小
create bigfile tablespace bigfile_name
datafile ‘page’
size 10m
控制文件和日志文件
控制文件,是一个很小的二进制文件,用于描述数据块物理结构,包括数据库文件和日志文件的信息
1. 数据库名和标识符
2. 数据库创建的时间戳
3. 表空间的名称
4. 数据文件和日志文件得位置
5. 当前日志文件的序列号

SQL> select name from v$datafile;
	
	NAME
	--------------------------------------------------------------------------------
	D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF
	D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF
	D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF
	D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF
	D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF
	
	SQL> select member from v$logfile;
	
	MEMBER
	--------------------------------------------------------------------------------
	D:\APP\LINNE\ORADATA\ORCL\REDO03.LOG
	D:\APP\LINNE\ORADATA\ORCL\REDO02.LOG
	D:\APP\LINNE\ORADATA\ORCL\REDO01.LOG
	
	SQL> select name from v$controlfile
	  2  ;
	
	NAME
	--------------------------------------------------------------------------------
	D:\APP\LINNE\ORADATA\ORCL\CONTROL01.CTL
	D:\APP\LINNE\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL
	
	SQL>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值