zoukankan      html  css  js  c++  java
  • Oralce OMF 功能详解

    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 ANDDATAFILES 删除方式

     

     

    二.日志文件的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

     

    转载:http://blog.csdn.net/leshami/article/details/5478323

  • 相关阅读:
    解决Struts中文乱码问题总结
    也谈创业企业CEO该拿多少工资
    Codeforces Round #242 (Div. 2) A. Squats
    设计模式之模板方法模式
    hdu2768Cat vs. Dog (反建法,最大独立集)
    Python
    kvm
    linux bin文件制作
    python
    pytho
  • 原文地址:https://www.cnblogs.com/future2012lg/p/3676660.html
Copyright © 2011-2022 走看看