Oracle 数据库的物理存储结构包含操作系统中创建的各类物理文件
其中主要包括数据文件、控制文件、重做日志文件以及归档重做日志文件等类型
对这些文件的管理是 Oracle 数据库物理存储结构设计与维护的主要内容
数据文件
扩展名通常为 dbf,用于存储系统数据、数据字典数据、索引数据以及用户应用数据等,用户进行数据增加、删除以及修改等操作实际上是对数据文件的操作
数据文件分两种类型,一种为永久数据文件,用于存储永久性数据;另一种为临时数据文件,用于存储临时数据
-
创建数据文件
Oracle 数据库的数据文件由表空间统一管理,一个表空间包含多个数据文件,一个数据文件只能属于一个表空间,数据文件的创建实质上是给指定表空间增加数据文件
//datafile 用于创建永久数据文件,tempfile 用于创建临时文件,filename 用于指定数据文件的存储路径包括文件名 //参数列表包括: //size: 指定数据文件的初始化大小,单位为 GB、MB 或者 KB //autoextend: 指定数据文件是否可以自动扩展, autoextend on 表示可以自动增长,并使用 next 子句指定每次增长的大小, autoextend off 表示关闭自动增长方式 //maxsize: 指定数据库文件的最大容量,值为 unlimited 时表示可以无限增长 alter tablespace 表空间名称 add datafile|tempfile filename 参数列表 //例:向数据库的 users 表空间添加一个新的数据文件 users03.dbf, 初始化大小为 5MB alter tablespace users add datafile 'D:\users03.dbf' size 5M; //例:向数据库的 users 表空间添加一个新的数据文件 users04.dbf, 初始化大小为 5MB, 支持自动扩展,每次扩展 5MB, 并且文件大小不受限制 alter tablespace users add datafile 'D:\users04.dbf' size 5M autoextend on next 5M maxsize unlimited; //例:向数据库的 temp 表空间添加一个临时文件 temp02.dbf, 初始化大小为 5MB alter tablespace temp add tempfile 'D:\temp02.dbf' size 5M;
-
修改数据文件
修改数据文件大小
//两种方式调整数据文件大小,一种为改变数据文件自动增长方式,另一种为通过 resize 子句手工调整数据文件大小 alter database datafile filename 参数列表 //例:取消数据文件 user04.dbf 的自动增长方式 alter database datafile 'D:\user04.dbf' autoextend off; //例:将数据文件 user03.dbf 的大小设置为 10 MB alter database datafile 'D:\user03.dbf' resize 10M;
修改数据文件名称或存储路径
//数据文件在使用过程中可以进行重命名或者改变存储位置等操作,并且可以同时修改多个数据文件的名称以及存储位置 //如果需要修改的多个文件属于同个表空间,则可以使用 //该语句执行前提是设置文件所在表空间为脱机状态 alter tablespace ... rename datafile ... to ... //如果需要修改的多个文件不属于同个表空间,则可以使用 //该语句执行前提是需要关闭数据库 alter database rename file ... to ... //上述两种命令的执行只是修改而来数据文件在控制文件以及数据字典保存的信息,实际上并没有改变系统中数据文件名称以及存储路径 //因此需要手工改变操作系统中数据文件名称和存储路径
//例1:将数据库 users 表空间中数据文件 users03.dbf 和 users04.dbf 的名称分别修改为 user03a.dbf 和 users04a.dbf alter tablespace users offline; //在操作系统中分别将对于数据文件进行重命名 alter tablespace users rename datafile 'D:\users03.dbf','D:\users04.dbf' to 'D:\users03a.dbf','D:\users04a.dbf'; alter tablespace users online; //例2:将数据库 users 表空间中数据文件 users03a.dbf 和 users04a.dbf 的名称分别修改为 user03.dbf 和 users04.dbf,同时将 temp 表空间中的数据文件 temp02.dbf 移动到新的位置 shutdown immediate startup mount //在操作系统中分别将对于数据文件进行重命名和移动 alter database rename file 'D:\users03a.dbf','D:\users04a.dbf','D:\orcl\temp02.dbf' to 'D:\users03.dbf','D:\users04.dbf','D:\temp02.dbf'; alter database open;
修改数据文件可用性
//online 状态下数据文件可以正常使用,offline 状态下数据文件不可以使用 //通常在数据库处于归档模式时才能将数据文件进行脱机操作,否则将会报错 //例1:对数据库 users 表空间的数据文件 users03.dbf 执行脱机操作,再进行联机操作 alter database datafile 'D:\users03.dbf' offline; recover datafile 'D:\users03.dbf'; alter database datafile 'D:\users03.dbf' online; //例2:对数据库 users 表空间的所有数据文件执行脱机操作,然后再执行联机操作 alter tablespace users datafile offline; recover tablespace users; alter tablespace users online;
-
删除数据文件
//删除某个空的永久性或者临时数据字典,删除操作如果成功执行,则该数据文件在控制文件和数据字典中的相关信息也会被删除 //同时也将自动删除操作系统中对应的物理文件 alter tablespace ... drop datafile|tempfile ... alter tablespace users drop datafile 'D:\users04.dbf0';
-
查询数据文件信息
通过查询数据字典视图和动态性能视图。Oracle 数据库提供了多个数据字典视图和动态性能视图可以查询数据文件的相关信息,其中包括:
(1)dba_data_files:可以查询数据库所有文件的名称、所属表空间、文件编号、文件大小以及状态等信息
(2)dba_temp_files:可以查询数据所有临时文件的基本信息
(3)v $ datafile:可以查询从控制文件获取的数据文件的基本信息
(4)v $ tempfile:可以查询从控制文件获取的临时文件的基本信息//例:查询 orcl 数据库 users 表空间下的数据文件名称及大小 select file_name,bytes from dba_data_files where tablespace_name='USERS';