ORACLE为每个数据文件指定两个关联的文件号,一是绝对文件号,二是相对文件号
绝对文件号
Absolute FileNumber 在数据库中唯一地标识一个数据文件。
相对文件号
Relative File Number 在表空间中唯一地标识一个数据文件。对较小和中等大小的数据库,相对文件号通常与绝对文件号具有相同的值。但当一个数据库中的数据文件数超过阀值(1022)时,相对文件号和绝对文件号就不一样了。
初始化参数文件中的 data_files 参数指定了在SGA区中能够保存的数据文件信息的最大数l量。即一个例程所能够支持的最大数据文件量。
新创建的数据文件不仅被记录到数据字典中还被记录到控制文件中。
查询数据文件和临时数据文件的两个视图dba_data_files 和 dba_temp_files。
取消数据文件的自动扩展方式
ALTER DATABASEDATAFILE ‘d:\datafile01.dbf’ AUTOEXTEND OFF;
增加数据文件的大小(RESIZE既可以增大数据文件又可以缩小数据文件)
ALTER DATABASEDATAFILE ‘d:\datafile01.dbf’ RESIZE 9M;
在ARCHIVELOG模式下修改数据文件的可用性
在该模式使数据文件脱机,容易丢失数据文件。将数据文件设置为联机或脱机状态不会影响表空间的状态。但是将表空间设置为联机或脱机状态则该表空间中的所有数据文件都会同时变为联机或脱机状态。改变表空间的可用性使用 ALTER TABLESPACE 但是改变数据文件的可用性使用 ALTER DATABASE.
查询当前数据库的模式
ARCHIVE LOGLIST;
将数据库从NOARCHIVELOG模式改为ARCHIVELOG模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
在ARCHIVELOG模式下将表空间中的所有数据文件脱机
ALTERTABLESPACE tablespace_name DATAFILE OFFLINE;
在重新联机之前需要进行介质恢复。而临时文件则不需要。
介质恢复:RECOVER DATAFILE‘d:\datafile01.dbf’;
表空间中的所有数据文件都进行完介质恢复后才能将表空间中的所有数据文件联机
ALTERTABLESPACE tablespace_name DATAFILE ONLINE;
移动数据文件
在数据库处于OPEN状态、数据文件属于同一个表空间时,使用
ALTERTABLESPACE RENAME DATAFILE或ALTER DATABASE RENAME FILE语句进行操作。数据文件所属的表空间必须处于OFFLINE状态。
例如:
移动数据文件前后安全期间备份控制文件或数据库
ALTER DATABASEBACKUP CONTROLFILE TO ‘e:\backupfile\control.bkp’;
备份为文本文件: ALTER DATABASE BACKUPCONTROLFILE TO TRACE;
ALTERTABLESPACE tablespace_name OFFLINE;
HOST MOVEd:\datafilecurold.dbf e:\datafilecurold.dbf;--只移动了位置
ALTERTABLESPACE tablespace_name RENAME DATAFILE ‘d:\datafilecurold.dbf’ TO‘e:\datafilecurold.dbf’;---进行逻辑修改,即修改数据字典中的信息,控制文件中的数据文件信息。就是讲表空间中原来的文件名对应地更名为新的文件名。
ALTERTABLESPACE tablespace_name ONLINE;
以上是移动一个表空间中的数据文件;
移动多个表空间中的数据文件:
ALTER TABLESPACE tabspace01 OFFLINE;
ALTER TABLESPACE tabspace02 OFFLINE;
HOST MOVE d:\datafile01.dbfe:\datafilenew01.dbf;
HOST MOVE d:\test\datafile02.dbfe:\datafile02.dbf;
ALTER DATABASE RENAME FILE
‘d:\datafile01.dbf’,’ d:\test\datafile02.dbf’
TO
‘e:\datafilenew01.dbf’,’ e:\datafile02.dbf’;
ALTER TABLESPACE tabspace01 ONLINE;
ALTER TABLESPACE tabspace02 ONLINE;
如数据文件分别属于多个表空间、或数据库处于MOUNT状态下时,使用
ALTER DATABASERENAME FILE语句操作。
例如:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
HOST MOVE d:\datafile03.dbfe:\datafilenew03.dbf; -–即移动有重命名
ALTER DATABASE RENAME FILE
‘d:\datafile03.dbf’ TO ‘e:\datafilenew03.dbf’;
ALTER DATABASE OPEN;
删除数据文件
删除已个临时表空间;
ALTER TABLESPACE tablespace_name TEMPFILEOFFLINE;
DROP TABLESPACE tablespace_name;
删除已个非空的表空间;
ALTER TABLESPACE tablespace_name OFFLINE;
DROP TABLESPACE tablespace_name INCLUDINGCONTENTS AND DATAFILES;
只删除单个数据文件
ATLER DATABASE DATAFILE ‘e:\datafiles01.dbf’OFFLINE DROP;
该语句只是将该数据文件的状态改变为RECOVER了,并没有从数据库中和磁盘中删除。该数据文件还可以继续被重新使用,需要介质恢复,并将数据文件的状态改为ONLINE即可。
RECOVER DATAFILE ‘e:\datafiles01.dbf’;
ALTER DATABASE DATAFILE ‘e:\datafiles01.dbf’ ONLINE;