Oralce OMF 功能详解

系统 1613 0

    OMF , 全称是 Oracle_Managed Files , Oracle 文件管理,使用 OMF 可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,

路径由 oracle 自动分配。在删除不再使用的日志、数据、控制文件时, OMF 也可以自动删除其对应的 OS 文件。

 

OMF 支持下列文件的自动管理:

    表空间

    日志文件 ( 联机 )

    控制文件

前提条件:需要为这些类型文件设定相关参数。

 

. 数据文件的 OMF 管理

  数据文件管理参数: db_create_file_dest

  db_create_file_dest Oracle 创建数据文件、临时文件时,在未明确指定路径的情况下的缺省路径,当 db_create_online_log_dest_n 未指定时,

                       也作为联机日志文件和控制文件的缺省路径。

 

  假定需要创建表空间 s 及数据文件

 

    SQL > CREATE TABLESPACE s ;   /* 收到了错误信息 */

       create tablespace s

                       *

       ERROR at line 1 :

       ORA - 02199 : missing DATAFILE / TEMPFILE clause

 

    SQL > show parameter db_create_file    /* 查看 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/orcl' ;

 

       System altered .

 

    -- 设定参数后,创建成功

    SQL > CREATE TABLESPACE s ;  

 

       Tablespace created .

 

    SQL > SELECT NAME FROM v$datafile ;   /* 可以看到 ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf Oralce 自动创建的数据文件 */

 

       NAME

       --------------------------------------------------------------------------------

       / u01 / app / oracle / oradata / orcl / system01 . dbf

       / u01 / app / oracle / oradata / orcl / undotbs01 . dbf

       / u01 / app / oracle / oradata / orcl / sysaux01 . dbf

       / u01 / app / oracle / oradata / orcl / users01 . dbf

       / u01 / app / oracle / oradata / orcl / example01 . dbf

       / u01 / app / oracle / oradata / orcl / Test . dbf

       / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_s_5vrl1t7h_ . dbf

 

    /* 查看物理文件,缺省为 MB*/

    SQL > ho ls - lh / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_s_5vrl1t7h_ . dbf  

       - rw ------- 1 oracle oinstall 101M Apr   7 16:54 /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_s_5vrl1t7h_.dbf

 

    SQL > CREATE TABLESPACE t DATAFILE SIZE 10m ;   /* 也可指定数据文件的大小为 MB*/

 

       Tablespace created .

 

    SQL > SELECT NAME FROM v$datafile ;

 

       NAME

       --------------------------------------------------------------------------------

       / u01 / app / oracle / oradata / orcl / system01 . dbf

       / u01 / app / oracle / oradata / orcl / undotbs01 . dbf

       / u01 / app / oracle / oradata / orcl / sysaux01 . dbf

       / u01 / app / oracle / oradata / orcl / users01 . dbf

       / u01 / app / oracle / oradata / orcl / example01 . dbf

       / u01 / app / oracle / oradata / orcl / Test . dbf

       / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_s_5vrl1t7h_ . dbf

       / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_t_5vrlgqtl_ . dbf

 

    SQL > ho ls - lh / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_t_5vrlgqtl_ . dbf

       - rw ------- 1 oracle oinstall 11M Apr   7 17:01 /u01/app/oracle/oradata/orcl/ORCL/datafile/o1_mf_t_5vrlgqtl_.dbf

 

    -- 删除表空间时,对于使用了 OMF 生成的数据文件将随着表空间的删除一起被删除

    SQL > DROP TABLESPACE t ;

 

    Tablespace dropped .

 

    -- 查看物理文件,已经不存在

    SQL > ho ls - lh / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_t_5vrlgqtl_ . dbf  

       ls : / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_t_5vrlgqtl_ . dbf : No such file or directory

 

    -- 对于未采用 OMF 来创建的表空间,在删除表空间之后,其数据文件并没有删除, v$datafile 视图中被删除

    -- 下面是未使用 OMF 创建的 x 表空间及数据文件

    SQL > CREATE TABLESPACE x DATAFILE '/u01/app/oracle/oradata/orcl/x.dbf' SIZE 10m ;

 

       Tablespace created .

 

    SQL > SELECT NAME FROM v$datafile ;      

 

       NAME

       --------------------------------------------------------------------------------

       / u01 / app / oracle / oradata / orcl / system01 . dbf

       / u01 / app / oracle / oradata / orcl / undotbs01 . dbf

       / u01 / app / oracle / oradata / orcl / sysaux01 . dbf

       / u01 / app / oracle / oradata / orcl / users01 . dbf

       / u01 / app / oracle / oradata / orcl / example01 . dbf

       / u01 / app / oracle / oradata / orcl / Test . dbf

       / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_s_5vrl1t7h_ . dbf

       / u01 / app / oracle / oradata / orcl / x . dbf

 

    SQL > DROP TABLESPACE x ;

 

       Tablespace dropped .

 

    SQL > SELECT NAME FROM v$datafile ; /* 视图中已不存在 x.dbf 的数据文件 */

 

       NAME

       --------------------------------------------------------------------------------

       / u01 / app / oracle / oradata / orcl / system01 . dbf

       / u01 / app / oracle / oradata / orcl / undotbs01 . dbf

       / u01 / app / oracle / oradata / orcl / sysaux01 . dbf

       / u01 / app / oracle / oradata / orcl / users01 . dbf

       / u01 / app / oracle / oradata / orcl / example01 . dbf

       / u01 / app / oracle / oradata / orcl / Test . dbf

       / u01 / app / oracle / oradata / orcl / ORCL / datafile / o1_mf_s_5vrl1t7h_ . dbf

 

    SQL > ho ls / u01 / app / oracle / oradata / orcl / x . dbf    /* 操作系统中依然存在 */

       / u01 / app / oracle / oradata / orcl / x . dbf

 

    -- 注意:使用 OMF 的时候会将物理文件删除,应特别注意使用

    -- 使用下面的方法重建 x 表空间,然后使用 including contents and datafiles 彻底删除表空间及物理文件

    SQL > CREATE TABLESPACE X DATAFILE '/u01/app/oracle/oradata/orcl/x.dbf' REUSE ;   

 

       Tablespace created .

 

    SQL > DROP TABLESPACE x INCLUDING CONTENTS AND DATAFILES ;

 

       Tablespace dropped .

 

    SQL > ho ls / u01 / app / oracle / oradata / orcl / x . dbf

       ls : / u01 / app / oracle / oradata / orcl / x . dbf : No such file or directory

 

总结:使用 OMF 管理文件的方法

  1. 使用 ALTER SYSTEM SET db_create_file_dest = '<path>' 设置路径

  2. 查看刚刚的设置 SHOW PARAMETER db_create_file_dest ;

  3. 创建表空间及数据文件 CREATE TABLESPACE tablespace_name

  4. 单独创建表空间 CREATE TABLESPACE <> DATAFILE '<path>' SIZE <>;

  5. 也可以创建 undo temporary tablespace CREATE UNDO TABLESPACE tablespace_name ; CREATE TEMPORARY TABLESPACE tablespace_name ;

  6. 删除表空间 DROP TABLESPACE tablespace_name ; OMF 情况下则删除物理文件,等效于未使用 OMF 创建,使用 INCLUDING CONTENTS AND DATAFILES 删除方式

 

 

. 日志文件的 OMF 管理

  日志文件管理参数: db_create_online_log_dest_n

  db_create_online_log_dest_n : Oracle 创建联机日志文件和控制文件时,在未明确指定路径的情况下的缺省路径

 

-- 查看日志文件的参数,下面是未作设置的 db_create_online 参数

    SQL > SHOW PARAMETER db_create_online

 

       NAME                                  TYPE         VALUE

       ------------------------------------ ----------- ------------------------------

       db_create_online_log_dest_1           string

       db_create_online_log_dest_2           string

       db_create_online_log_dest_3           string

       db_create_online_log_dest_4           string

       db_create_online_log_dest_5           string

 

    -- 从上面可以看出系统预留了一个日志组个成员来形成 OMF ,一般情况下我们仅仅需要个成员即可。因为在此设定个参数文件

    -- 下面是未设定的情况下创建日志文件,则默认为在数据文件路径及闪回区各放一个文件,因为上述两个路径都是 OMF 路径,如下:

 

    SQL > SELECT MEMBER FROM v$logfile ;

 

       MEMBER

       --------------------------------------------------------------------------------

       / u01 / app / oracle / oradata / orcl / redo03 . log

       / u01 / app / oracle / oradata / orcl / redo02 . log

       / u01 / app / oracle / oradata / orcl / redo01 . log

       / u01 / app / oracle / oradata / orcl / ORCL / onlinelog / o1_mf_4_5vtgzjyz_ . log

       / u01 / app / oracle / flash_recovery_area / ORCL / onlinelog / o1_mf_4_5vtgzlhb_ . log

 

    SQL > SHOW PARAMETER db_create_file_dest

 

       NAME                                   TYPE         VALUE

       ------------------------------------ ----------- ------------------------------

       db_create_file_dest                   string       / u01 / app / oracle / oradata / orcl

 

       SQL > show parameter db_recovery_file_dest

 

       NAME                                  TYPE         VALUE

       ------------------------------------ ----------- ------------------------------

       db_recovery_file_dest                 string       / u01 / app / oracle / flash_recovery

                                                   _area

       db_recovery_file_dest_size            big integer 2G

 

    -- 将日志文件存放到指定的 disk1,disk2 下面

    SQL > ho mkdir / u01 / app / oracle / disk1

 

    SQL > ho mkdir / u01 / app / oracle / disk2

 

    SQL > ALTER SYSTEM SET db_create_online_log_dest_1 = '/u01/app/oracle/disk1' ;

 

       System altered .

 

    SQL > ALTER SYSTEM SET db_create_online_log_dest_2 = '/u01/app/oracle/disk2' ;

 

       System altered .

 

    SQL > ALTER DATABASE ADD logfile ;

 

       Database altered .

 

    SQL > SELECT * FROM v$logfile ; /* 可以看到新的日志文件放到 disk1,disk2 下面 */

 

       GROUP# STATUS   TYPE     MEMBER                                    IS_

    ---------- ------- ------- ---------------------------------------- ---

             3          ONLINE   / u01 / app / oracle / oradata / orcl / redo03 . log   NO

             2          ONLINE   / u01 / app / oracle / oradata / orcl / redo02 . log   NO

             1          ONLINE   / u01 / app / oracle / oradata / orcl / redo01 . log   NO

             4           ONLINE   / u01 / app / oracle / oradata / orcl / ORCL / online NO

                            log / o1_mf_4_5vtgzjyz_ . log

 

             4          ONLINE   / u01 / app / oracle / flash_recovery_area / ORCL YES

                            / onlinelog / o1_mf_4_5vtgzlhb_ . log

 

             5          ONLINE   / u01 / app / oracle / disk1 / ORCL / onlinelog / o1_ NO

                            mf_5_5vtlpxo0_ . log

 

       GROUP# STATUS   TYPE     MEMBER                                    IS_

    ---------- ------- ------- ---------------------------------------- ---

 

             5          ONLINE   / u01 / app / oracle / disk2 / ORCL / onlinelog / o1_ NO

                            mf_5_5vtlpz4d_ . log

 

                            SQL > alter database drop logfile group 5 ;

 

    Database altered .

 

    /* 删除日志文件组 */

    SQL > ALTER DATABASE DROP logfile GROUP 4 ;

 

       Database altered .

 

    SQL > SELECT group# , member FROM v$logfile ;

 

       GROUP# MEMBER

    ---------- ----------------------------------------

             3 / u01 / app / oracle / oradata / orcl / redo03 . log

             2 / u01 / app / oracle / oradata / orcl / redo02 . log

             1 / u01 / app / oracle / oradata / orcl / redo01 . log

            

    SQL > ho ls / u01 / app / oracle / disk1 / ORCL / onlinelog / o1_mf_5_5vtlpxo0_ . log ;

       ls : / u01 / app / oracle / disk1 / ORCL / onlinelog / o1_mf_5_5vtlpxo0_ . log : No such file or directory

        

总结:

  1. 当定义了 db_recovery_file_dest db_create_file_dest 路径,且没有定义 db_create_online_log_dest_n 的时候,

    OMF 将日志文件存放在 db_recovery_file_dest db_create_file_dest 路径下,而且日志组下为个成员

    2. 当定义了 db_create_online_log_dest_1 则将日志文件存放到 db_create_online_log_dest_1

    db_create_file_dest 路径下,且日志组下为个成员

  3. 当定义了 db_create_online_log_dest_1 db_create_online_log_dest_2 则存放到

    db_create_online_log_dest_1 db_create_online_log_dest_2

  4. 当定义了多个 db_create_online_log_dest_n ,则为每个组 n 个日志成员,且多路复用

  5. 增加日志文件的方法 ;

    alter database add logfile ;

    alter database add logfile [group n] ;

    alter database add logfile member '<dir>' to group [n]

    /*add logfile member 这个方法仅使用未使用 OMF 的日志文件,对于已经运用了 OMF 的日志组,无法使用该功能添加日志文件 */

  6. 删除日志文件组时,对于 OMF 的日志文件组,其对应的物理文件同时被删除

    alter database drop logfile group [n]

 

 

. 使用 OMF 管理控制文件

  使用 OMF 管理控制文件同管理日志文件类似,主要涉及到的也是 db_create_online_log_dest_n 参数

  即控制文件默认存放在 db_create_online_log_dest_n 下,当定义了一个 db_create_online_log_dest_n

  则生成一个控制文件,当定义了多了则生成多个控制文件。

  前提条件:去掉 control_files 参数

  alter system reset control_files scope = spfile sid = '*' ;

 

  以下是预留的 OMF 路径:

    SQL > SHOW PARAMETER db_create

 

       NAME                                  TYPE         VALUE

       ------------------------------------ ----------- ------------------------------

       db_create_file_dest                   string       / u01 / app / oracle / oradata / orcl

       db_create_online_log_dest_1           string       / u01 / app / oracle / disk1

       db_create_online_log_dest_2           string       / u01 / app / oracle / disk2

       db_create_online_log_dest_3           string

       db_create_online_log_dest_4           string

       db_create_online_log_dest_5           string

    SQL > show parameter db_recovery_file

 

       NAME                                  TYPE         VALUE

       ------------------------------------ ----------- ------------------------------

       db_recovery_file_dest                 string       / u01 / app / oracle / flash_recovery

                                                _area

       db_recovery_file_dest_size            big integer 2G

 

总结

    参数                                            适用范围

    db_create_file_dest_size           datafile create tablespace <>

    db_create_online_log_dest_n        logfile , controlfile

    db_recovery_file_dest                rman , archivelog , onlinelog

 

. 更多

   VmWare6.5.2 下安装 RHEL 5.4 (配置 Oracle 安装环境)   

 

   Linux (RHEL 5.4) 下安装 Oracle 10g R2

 

   使用 Uniread 实现 SQLplus 翻页功能

  

   Oracle 相关

   Using Oracle-Managed Files

 

  

 

Oralce OMF 功能详解


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论