从Oracle 9i开始,Oracle提供了OMF(Oracle Manage File),实现文件名称自动管理,在这里我们测试一下OMF
一、是否开启了OMF
1)如果参数值为空,那么说明未请用OMF
SYS@ORA10>show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
db_create_file_dest string
SYS@ORA10>
2)如果参数值有相应的值,那么就说明启用了OMF
SYS@ORA10G>show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
db_create_file_dest string /u01/app/oracle/oradata
SYS@ORA10G>
当然,db_create_file_dest这个参数指的是数据文件和临时文件,还有DB_CREATE_ONLINE_LOG_DEST_n和DB_RECOVERY_FILE_DEST这两个参数,日志文件和rman备份位置。
二、启用了OMF创建表空间测试
1)创建表空间
SYS@ORA10G>create tablespace ts_omf;
Tablespace created.
SYS@ORA10G>
2)查看OMF创建表空间的默认参数
SYS@ORA10G>set long 999999
SYS@ORA10G>select dbms_metadata.get_ddl('TABLESPACE','TS_OMF') from dual;
DBMS_METADATA.GET_DDL('TABLESPACE','TS_OMF')
------------------------------------------------------------------------
CREATE TABLESPACE "TS_OMF" DATAFILE
'/u01/app/oracle/oradata/ORA10G/datafile/o1_mf_ts_omf_85qw2m2k_.dbf' SIZE 1048
57600
AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
SYS@ORA10G>
通过上面生成的表空间创建脚本我们可以发现:
a)初始化大小:100M
b)自动扩展,每次扩展100M,最大32G
c)数据文件路径与参数相同
3)在操作系统中查看生成的数据文件
[oracle@ocmu ~]$ cd /u01/app/oracle/oradata/ORA10G/datafile/
[oracle@ocmu datafile]$ ll *ts_omf*
-rw-r----- 1 oracle oinstall 104865792 Sep 21 12:43 o1_mf_ts_omf_85qw2m2k_.dbf
[oracle@ocmu datafile]$
4)测试增加数据文件
SYS@ORA10G>alter tablespace ts_omf add datafile;
Tablespace altered.
SYS@ORA10G>
5)再次查看创建脚本,新增的数据文件的大小及规则,与第一个数据文件相同
SYS@ORA10G>select dbms_metadata.get_ddl('TABLESPACE','TS_OMF') from dual;
DBMS_METADATA.GET_DDL('TABLESPACE','TS_OMF')
----------------------------------------------------------------------
CREATE TABLESPACE "TS_OMF" DATAFILE
'/u01/app/oracle/oradata/ORA10G/datafile/o1_mf_ts_omf_85qw2m2k_.dbf' SIZE 1048
57600
AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M,
'/u01/app/oracle/oradata/ORA10G/datafile/o1_mf_ts_omf_85qwrnp4_.dbf' SIZE 1048
57600
AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
SYS@ORA10G>
6)在操作系统上再次查看数据文件,按照OMF的命名规则,生成一个新的数据文件
[oracle@ocmu datafile]$ ll *ts_omf*
-rw-r----- 1 oracle oinstall 104865792 Sep 21 12:43 o1_mf_ts_omf_85qw2m2k_.dbf
-rw-r----- 1 oracle oinstall 104865792 Sep 21 12:54 o1_mf_ts_omf_85qwrnp4_.dbf
[oracle@ocmu datafile]$
7)删除表空间,启用OMF删除表空间,无需加上including contents and datafiles子句就可以一并将操作系统中的数据文件删除
SYS@ORA10G>drop tablespace ts_omf;
Tablespace dropped.
SYS@ORA10G>
[oracle@ocmu datafile]$ ll *ts_omf*
ls: *ts_omf*: No such file or directory
[oracle@ocmu datafile]$
三、在dbca建库的时候,有一步是指定数据文件位置(有三个选项,一个是使用模板的路径,一个是人工指定路径,最后一个就是OMF),就可以启动OMF
如果建库的时候启用的话,并且同时启用了flash_recovery_area,那么,会在flash_recovery_area里面自动创建两个目录,一个是控制文件,一个是在线日志,里面的内容都是按照OMF格式存储的,控制文件默认有两个,一个放在flash_recovery_area里,一个放在oradata里面。
1)启用OMF,在安装的过程中启用了flash_recovery_area
[oracle@ocmu ORA10G]$ ls -FR
.:
controlfile/ onlinelog/
./controlfile:
o1_mf_85qmy93s_.ctl
./onlinelog:
o1_mf_1_85qmygto_.log o1_mf_2_85qmyq2r_.log o1_mf_3_85qmyxbb_.log
[oracle@ocmu ORA10G]$
2)未启用OMF,在安装的过程中启用了flash_recovery_area
[oracle@ocmu ORA10]$ ls -FR
.:
onlinelog/
./onlinelog:
[oracle@ocmu ORA10]$
四、虽然开启了OMF,但是我们也可以不使用OMF,不过我们会发现,OMF自动删除数据文件的特性就失效了,如下:
SYS@ORA10G>show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oracle/oradata
SYS@ORA10G>
SYS@ORA10G>create tablespace ts_test datafile '/u01/app/oracle/oradata/ORA10G/ts_test_01.dbf' size 1m;
Tablespace created.
SYS@ORA10G>!ls /u01/app/oracle/oradata/ORA10G
controlfile datafile onlinelog ts_test_01.dbf
SYS@ORA10G>drop tablespace ts_test;
Tablespace dropped.
SYS@ORA10G>!ls /u01/app/oracle/oradata/ORA10G
controlfile datafile onlinelog ts_test_01.dbf
SYS@ORA10G>
小结:
虽然OMF在生产中不常用,但也避免不了某个安装人员在不知情的情况下启用了OMF,给管理上带来了不便,不过,OMF创建表空间跟ASM上创建表空间的命令是相同的,所以,还是值得小关注一下的。
同时再提一下OFA,这个是最优灵活体系结构(Optimal
Flexible Architecture,简称OFA),不要与OMF搞混。
在Oracle11g中,如果选择的是使用模板中的路径同时又开启了flash_recovery_area,那么,控制文件也会在flash_recovery_area中存放一份儿,而Oracle10g如果使用的模板且同时又开启了flash_recovery_area,那么,控制文件是不会放在flash_recovery_area中的,请见正文第三步
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/685769/viewspace-744735/
,如需转载,请注明出处,否则将追究法律责任。