可以使用OMF来创建数据文件,临时文件,控制文件,redo日志文件和归档日志。
1.Oracle数据库何时会创建OMF
当某些条件满足时,Oracle数据库会创建OMF。
如果已经通过以下任何方式设置了DB_CREATE_FILE_DEST,DB_RECOVERY_FILE_DEST或DB_CREATE_ONLINE_LOG_DEST_n中的任何一个初始化参数,在创建操作中没有指定文件时,Oracle数据库创建OMF:
1)已经在初始化参数文件中包含以上三个参数的任何一个初始化参数。
2)已经使用ALTER SYSTEM语句动态设置以上三个参数的任何一个初始化参数。
3)已经使用ALTER SESSION语句动态设置以上三个参数的任何一个初始化参数。
如果创建OMFS的语句发现错误或由于某些故障不能完成,那么语句创建的任何OMF都会作为恢复错误或故障的一部分工作自动删除掉。然而,因为文件系统和存储子系统中大量的潜在错误都可能会发生,可能存在必须手动使用操作系统命令删除文件的情形。
2.OMF如何命名
OMF的文件名称遵循OFA(Optimal Flexible Architecture)的文件命名标准。
注:这部分描述的命名方案只适用于在操作系统文件系统中的文件。在Oracle ASM磁盘组上创建的文件的命名方案在《Oracle Automatic Storage Management Administrator’s Guide》中描述。
分配的名称要满足以下要求:
1) 数据库文件容易跟其它文件区分
2) 一种数据库类型的文件容易跟其它数据库类型区分
3) 文件清晰地与文件类型特定的重要的属性关联。例如,数据文件名称必须包含表空间名称来允许容易地关联数据文件到表空间,或一个归档日志名称可能包含线程(thread),序列(sequnce)和创建日期。
没有两个OMF具有相同的名称。用来创建OMF的名称由三个来源组成:
1) 缺省的创建位置。
2) 基于文件类型选择的文件名称模板。模板也依赖于操作系统平台和是否使用Oracle ASM。
3) Oracle数据库或操作系统创建的唯一的字符串。这确保文件创建不会损坏已经存在的文件和这个文件不会被误认为某些其它文件。
作为一个具体的例子,OMF的文件名称在Solaris文件系统上有以下格式:
destination_prefix/o1_mf_%t_%u_.dbf
其中:
1)destination_prefix是destination_location/db_unique_name/datafile
其中:
a. destination_location是指定在DB_CREATE_FILE_DEST中的位置
b. db_unique_name是目标数据库的全局唯一名称(初始化参数DB_UNIQUE_NAME)。如果不存在DB_UNIQUE_NAME参数,那么使用DB_NAME初始化参数的值。
2)%t表空间名称
3)%u保证唯一性的8位字符串
例如,假设以下参数设置:
DB_CREATE_FILE_DEST = /u01/app/oracle/oradata
DB_UNIQUE_NAME = PAYROLL
那么示例的数据文件名称将会是:
/u01/app/oracle/oradata/PAYROLL/datafile/o1_mf_tbs1_2ixh90q_.dbf
其它文件类型的名称相似。在其它平台上的名称也相似,遵循平台的命名规则限制。
注:数据库基于它的名称来鉴别OMF。如果重命名文件,数据库不再能够作为OMF识别它,相应地就不会再管理文件。
创建OMF的详细方法请参考另外两个章节:
来源:《Oracle Database Database Administrator’s Guide, 19c》