ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【OMF】Oracle managed file 测试

【OMF】Oracle managed file 测试

原创 Linux操作系统 作者:niuxxf 时间:2012-09-16 14:48:35 0 删除 编辑
从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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-21

  • 博文量
    44
  • 访问量
    131607