6.3 OMF
从Oracle 9i起,Oracle引入了所谓的OMF的概念,即Oracle管理的文件(Oracle Managed File)。OMF的文件包括控制文件、联机日志文件、数据文件以及备份文件。也就是说,在创建这些文件时,我们不再需要提供文件名、文件路径以及文件大小。在数据库中,OMF文件与非OMF文件可以同时存在。
比如在创建表空间时,我们只需要发出下列命令:
create tablespace omf_test;
这时,表空间omf_test所包含的数据文件的信息由数据库自动决定。要使用OMF文件,我们需要设置以下的初始化参数来实现,这些参数的值都是具体的目录。
⊙ db_create_file_dest
该参数指定了数据文件所在的路径。如果我们在创建表空间时而没有指定数据文件的具体信息,则会在该参数所指定的路径下创建数据文件,如下所示:
SQL> show parameter db_create_file_dest NAME TYPE VALUE ------------------------ ----------- ------------------------------ db_create_file_dest string /u01/app/oracle/oradata SQL> create tablespace omf_test; SQL> select file_name,bytes/1024/1024 as "MB" from dba_data_files 2 where tablespace_name='OMF_TEST'; FILE_NAME MB ------------------------------------------------------------------- ---------- /u01/app/oracle/oradata/ORA10G/datafile/o1_mf_omf_test_3j6ngx95_.dbf 100
可以看到,数据库自动生成了数据文件,默认为100MB。对于OMF表空间来说,在删除表空间时自动删除数据文件。
SQL> !ls /u01/app/oracle/oradata/ORA10G/datafile/o1_mf_omf_test_3j6ngx95_.dbf /u01/app/oracle/oradata/ORA10G/datafile/o1_mf_omf_test_3j6ngx95_.dbf SQL> drop tablespace omf_test; SQL> !ls -l /u01/app/oracle/oradata/ORA10G/datafile/o1_mf_omf_test_3j6ngx95_.dbf ls: /u01/app/oracle/oradata/ORA10G/datafile/o1_mf_omf_test_3j6ngx95_.dbf: No such file or directory
我们也可以在创建表空间时,指定数据文件尺寸,从而覆盖默认的100MB。
create tablespace omf_test datafile size 10M;
⊙ db_create_online_log_dest_n(n从1到5)
由5个参数组成,它们指定了联机日志文件成员所在目录。不需要全部指定,可以只是指定其中的几个。假设我们指定了其中的两个初始化参数:db_create_online_log_dest_1和db_create_online_log_dest_2。当我们创建日志文件组时,没有指定具体的日志成员的信息,则会在日志文件组里创建两个日志成员,每个日志成员位于指定的不同的路径下(分别由我们所设定的这两个参数决定)。这时创建日志文件组的命令如下所示:
alter database add logfile group 4;
如果我们还指定了db_create_online_log_dest_3,则会创建三个日志成员,并于三个指定的不同的路径下。
如果我们没有指定这5个参数的任何一个,同时在创建日志文件组时,也没有指定日志成员的信息,则数据库会使用db_create_file_dest作为日志成员所在的路径,这时日志文件组里就只有一个成员。如果还没有指定db_create_file_dest,则数据库会报错。
⊙ db_recovery_file_des
该参数指定了快速闪回区(Flash Recovery Area)所在的路径。该区域从Oracle 10g起引入,主要用来存放备份文件。在进行备份时,如果没有指定备份文件所在的路径,则备份文件会存放在快速闪回区里。