OMF,全称是Oracle_Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,OMF也可以自动删除其对应的OS文件。 OMF 支持下列文件的自动管理: 表空间 日志文件 ( 联机 ) 控制文件 前提条件:需要为这些类型文件设定相关参数。 1. 数据文件的OMF 管理: 数据文件管理参数: db_create_file_dest db_create_file_dest:Oracle创建数据文件、临时文件时,在未明确指定路径的情况下的缺省路径
当db_create_online_log_dest_n未指定时,也作为联机日志文件和控制文件的缺省路径。 测试: SYS@prod> CREATE TABLESPACE a; create tablespace s ERROR at line 1: ORA-02199: missing DATAFILE/TEMPFILE clause 当未使用OMF时,不指定表空间数据文件具体路径以及大小会报错。 查看db_create_file_dest参数: SYS@prod>show parameter db_create_file_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest string
设定db_create_file_dest参数
SQL> ALTER SYSTEM SET db_create_file_dest = '/u01/app/oracle/oradata/ omf ';
System altered. 再次查看: SYS@prod>show parameter db_create_file_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_create_file_dest string /u01/app/oracle/oradata/omf 再次进行表空间创建: SYS@prod>create tablespace a; Tablespace created. 查看数据文件位置(v$datafile) SYS@prod>select name from v$datafile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/prod/system01.dbf /u01/app/oracle/oradata/prod/sysaux01.dbf /u01/app/oracle/oradata/prod/undotbs01.dbf /u01/app/oracle/oradata/prod/users01.dbf /u01/app/oracle/oradata/prod/example01.dbf /u01/app/oracle/oradata/prod/t1.dbf /u01/app/oracle/oradata/prod/tbs03.dbf /u01/app/oracle/oradata/prod/tbs04.dbf /u01/app/oracle/oradata/omf/PRIDB/datafile/o1_mf_a_hf916n12_.dbf 9 rows selected. 由于创建该表空间时未指定数据文件大小,查看数据文件大小: SYS@prod>select name,bytes from v$datafile; /u01/app/oracle/oradata/omf/PRIDB/datafile/o1_mf_a_hf916n12_.dbf 104857600 -100M 创建时也可仅指定数据文件大小: SYS@prod>create tablespace b datafile size 10M; Tablespace created. SYS@prod>select name,bytes from v$datafile; NAME BYTES -------------------- ---------- /u01/app/oracle/orad 10485760 ata/omf/PRIDB/datafi le/o1_mf_b_hf91cgo8_ .dbf 创建日志组: SYS@prod>alter database add logfile group 8; Database altered. 不需要指定日志组位置以及日志组大小。 由于没有配置db_create_online_log_dest_n 所以OMF 自动创建的日志组位置也在 db_create_file_dest 参数指定的位置处。 SYS@prod>select member from v$logfile; /u01/app/oracle/oradata/omf/PRIDB/onlinelog/o1_mf_8_hf91h666_.log SYS@prod>alter database drop logfile group 8; Database altered. 删除表空间时,对于使用了OMF生成的数据文件将随着表空间的删除一起被删除 : SYS@prod>drop tablespace a; Tablespace dropped. SYS@prod>drop tablespace b; Tablespace dropped. [oracle@service1 datafile]$ pwd /u01/app/oracle/oradata/omf/PRIDB/datafile [oracle@service1 datafile]$ ls 对于未采用OMF来创建的表空间,在删除表空间之后,其数据文件并没有删除,v$datafile视图中被删除 。 对于未采用OMF 来创建的表空间,在删除表空间之后,数据文件也随之删除。 Drop tablespace including datafile and contents 总结: 1. 使用 OMF 需要指定参数设置。 2. 使用 OMF 创建表空间 create tablespace a 。 3. 未使用 OMF 创建表空间 create tablespace a datafile ‘ xxx ’ size xxM 。 4. 使用 OMF 也可以自动创建 undo 和临时表空间。
