无论何时使用文件名称来指定一个已经存在的文件时,OMF的文件名称在SQL语句中都被接受。OMF操作和非OMF不同的地方是在删除或重命名等操作时文件总是会被自动删除。
这些文件名称,与其它文件名称一样,存储在控制文件中。如果使用RMAN来备份和恢复,则也存储在RMAN恢复目录。它们在所有的常用的用来监控数据文件和临时文件的固定和动态性能视图(例如,V$DATAFILE或DBA_DATA_FILES)中是可见的。
下而是使用数据库生成的文件名称的语句示例:
SQL> ALTER DATABASE
2> RENAME FILE ‘/u01/oradata/mydb/datafile/o1_mf_tbs01_ziw3bopb_.dbf’
3> TO ‘/u01/oradata/mydb/tbs0101.dbf’;
SQL> ALTER DATABASE
2> DROP LOGFILE ‘/u01/oradata/mydb/onlinelog/o1_mf_1_wo94n2xi_.log’;
SQL> ALTER TABLE emp
2> ALLOCATE EXTENT
3> (DATAFILE ‘/u01/oradata/mydb/datafile/o1_mf_tbs1_2ixfh90q_.dbf’);
可以像相应的非OMF一样备份和恢复Oracle管理的数据文件,临时文件和控制文件。使用数据库生成的文件名称不是影响逻辑备份文件如export文件的使用。这对于表空间的时间点恢复(TSPITR)和可传输的表空间export文件是非常重要的。
有些情况下OMF的行为会不一样,包括删除或重命名文件的操作,以及涉及到备数据库的操作。
1.删除数据文件和临时文件
不像不被数据库管理的文件,当删除Oracle管理的数据文件或临时文件时,文件名称会从控制文件中移除,文件也会从文件系统中自动删除。
删除OMF的语句是:
1) DROP TABLESPACE
2) ALTER DATABASE TEMPFILE … DROP
也可以使用以下语句,总是用来删除OMF或非OMF文件:
1) ALTER TABLESPACE … DROP DATAFILE
2) ALTER TABLESPACE … DROP TEMPFILE
2.删除redo日志文件
当删除Oracle管理的redo日志文件时,它的OMF会被删除。可以指定删除的组或成员。
删除redo日志文件的语句:
1) ALTER DATABASE DROP LOGFILE
2) ALTER DATABASE DROP LOGFILE MEMBER
3.重命名文件
对于OMF,重命名文件的SQL语句实际上并不重命名操作系统中的文件,而是更改控制文件中的名称。
重命名文件的语句:
1)ALTER DATABASE RENAME FILE
2)ALTER TABLESPACE … RENAME DATAFILE
当执行语句时必须使用传统的操作系统中的文件名称来指定每个文件名称。
注:如果旧的文件是OMF,而且它存在,那么它会被删除。
4.管理备数据库
在备数据库中的数据文件,控制文件和redo日志文件可以由数据库管理。不依赖于主数据库上是否在使用OMF。
当备数据库的恢复遇到创建数据文件的redo时,如果数据文件是OMF,那么恢复进程在本地的缺省文件系统位置上创建一个空的文件。这允许新文件的redo可以立即被应用而不需要任何入工介入。
当备数据库的恢复遇到删除表空间的redo时,它删除任何本地文件系统中的OMF。注意这不依赖于主数据库上执行的INCLUDING DATAFILES选项。
来源:《Oracle Database Database Administrator’s Guide, 19c》