---------------数据文件介绍:
oracle 数据库的数据文件(扩展名为 DBF 的文件)是用于保存数据库中数据的文件,系统数据、数据字典数据、临时数据、索引数据、应用数据等都物理
地存储在数据文件中。oracle 数据库所占用的空间主要就是数据文件所占用的空间。用户对数据库的操作,例如数据的插入、删除、修改和查询等,其本质都是
对数据文件进行操作。
oracle 数据库中有一种特殊的数据文件,称为临时数据文件,属于数据库的临时表空间。临时数据文件中的内容是临时性的,在一定条件下自动释放。
---------------创建数据文件:
由于在oracle 数据库中,数据文件是依附于表空间而存在的,因此创建数据文件的过程实质上就是向表空间添加文件的过程。在创建数据文件时应该根据数据
量的大小确定文件的大小和文件的增长方式。
向表空间中添加数据文件:alter tablespace ....add datafile
向临时表空间中添加临时数据文件:alter tablespace ... add tempfile
例如:向案例数据库的 users 表空间中添加一个大小为 10MB 的数据文件
SQL>alter tablespace users add datafile '.......USRERS_3.DBF' size 1M;
例如:向案例数据库的 TEMP 表空间中添加一个大小为 5MB 的临时数据文件
SQL>alter tablespace temp add tempfile '......temp.DBF' sieze 5M;
注意:若所指定的数据文件已经存在,可以使用 REUSE 子句进行覆盖
---------------修改数据文件的大小:
在oracle 11g 数据库中,随着数据库中数据容量的变化,可以调整数据文件的大小。改变数据文件大小的方法包括:设置数据文件为自动增长方式及
手动重置数据文件大小。
---------------改变数据文件的可用性:
可以通过将数据文件联机或脱机来改变数据文件的可用性。处于脱机状态的数据文件对数据库来说是不可用的,直到它们被恢复为联机状态。
下面几种情况需要改变数据文件的可用性:
》》要进行数据文件的脱机备份时,需要先将数据文件脱机
》》需要重命名数据文件或改变数据文件的位置时,需要先将数据文件脱机
》》如果oracle 在写入某个数据文件时发生错误,会自动将数据文件设置为脱机状态,并且记录在警告文件中。排除故障后,需要以手动方式重新
将数据文件恢复为联机状态
》》数据文件丢失或损坏,需要在启动数据库之前将数据文件脱机
------------------------------------------------------------------------
在归档模式下:
设置数据文件的联机或脱机状态: alter database datafile .... online| offline
设置临时文件的联机或脱机状态:alter database tempfile ...online | offline
《案例》
在数据库的归档模式下,将案例数据库 users 表空间的数据文件 USERS02.DBF 脱机
SQL> alter database datafile '..........USERS02.DBF' offline;
《案例》
将案例数据库USERS 表空间的数据文件 USERS02.DBF 联机
SQL> alter database datafile '..........USERS02.DBF' online;
注意:在归档模式下,将数据文件联机之前需要使用 recover datafile 对数据文件进行恢复
例如:
SQL>recover datafile '.......USERS02.DBF' ;
------------改变数据文件的名称或位置:
在数据文件建立之后,还可以改变它们的名称和位置。通过重命名或移动数据文件,可以在不改变数据库逻辑
存储结构的情况下对数据库的物理存储结构进行调整。
》》如果要改变的数据文件属于同一个表空间,则使用 alter tablespace 表空间名 rename datafile '.......DBF' to '........DBF';
》》如果要改变的数据文件属于多个表空间,则使用 alter database rename file '.......DBF' to '......DBF'
注意:改变数据文件的名称或位置时,oracle 只是改变记录在控制文件和数据字典中的数据文件信息,并没有改变操作系统中数据文件的
名称和位置,因此需要 DBA 手动更改操作系统中文件的名称和位置。
1.改变同一个表空间中的数据文件的名称和位置
改变同一个表空间中的数据文件的名臣或位置,可以在表空间级别进行,将改变数据文件名称或位置的操作对系统的影响降低到最小。其步骤为:
(1)、将数据文件所属表空间设置为脱机状态
(2)、在操作系统中改变数据文件的名称或位置
(3)、执行alter tablespace 表空间名 rename datafile '.......DBF' to '........DBF'; ,修改数据字典和控制文件中与该数据文件相关的信息
(4)、将数据文件所属表空间设置为联机状态
《案例》
将案例数据库中 USERS 表空间的数据文件 USER01.DBF 移动到 D:\ORADATA 目录中:
SQL>alter tablespace USERS offline;
SQL>host copy D:\HUMAN_RESOURCE\ USER01.DBF D:\ORADATA\USER01.DBF; (在操作系统中复制文件)
SQL>alter tablespace USERS rename datafile 'D:\HUMAN_RESOURCE\ USER01.DBF' to 'D:\ORADATA\USER01.DBF';
SQL>alter tablespace USERS online;
2.改变多个表空间的数据文件的名称或位置
如果需要修改多个表空间中数据文件的名称或位置,可以以表为单位分别进行修改,也可以在数据库级别进行,一次性完成所有的数据文件名称
或位置的修改。
如果要在数据库级别一次性完成所有数据文件名称或位置的修改,必须关闭数据库,将数据库启动到加载(MOUNT)状态下进行。步骤为:
(1)、关闭数据库
(2)、启动数据库到加载状态(MOUNT)
(3)、在操作系统中修改数据文件的名称或位置
(4)、执行 alter database rename file '.......DBF' to '......DBF' ,修改数据字典和控制文件与这些数据文件相关的信息
(5)、打开数据库
《案例》
将案例数据库 USERS 表空间中的 USER02.DBF 文件和 UNDOTBS1 表空间中的 UNDOTBS01.DBF 文件 移动到 D:\ORADATA 目录中:
SQL> shutdown immediate;
SQL> host copy D:\USER02.DBF D:\ORADATA\USER02.DBF (在操作系统中复制文件)
SQL> host copy D:\UNDOTBS01.DBF D:\ORADATA\UNDOTBS01.DBF(在操作系统中复制文件)
SQL>startup mount;
SQL>alter database rename file 'D:\USER02.DBF' to 'D:\ORADATA\USER02.DBF' ;
SQL>alter database rename file ' D:\UNDOTBS01.DBF' to 'D:\ORADATA\UNDOTBS01.DBF' ;
SQL>alter database open;
--------------查询数据文件信息:
在 oracle 11g 数据库中,
查询数据字典视图 DBA_DATA_FILES 、V$DATAFILE 获取永久性数据文件信息,
查询数据字典视图DBA_TEMP_FILES 、V$TEMPFILE 获取临时数据文件信息
《案例》
查询当前数据库所有的表空间及其数据文件信息:
SQL> select tablespace_name , file_name from dba_data_files;