Oralce OMF 功能詳解

beatony發表於2011-07-29
Oralce OMF 功能詳解
分類: Oracle 其它特性 844人閱讀 評論(0) 舉報

    OMF,全稱是Oracle_Managed Files,Oracle檔案管理,使用OMF可以簡化管理員的管理工作,不用指定檔案的名字、大小、路徑,其名字,大小,

路徑由oracle 自動分配。在刪除不再使用的日誌、資料、控制檔案時,OMF也可以自動刪除其對應的OS檔案。

 

OMF支援下列檔案的自動管理:

    表空間

    日誌檔案(聯機)

    控制檔案

前提條件:需要為這些型別檔案設定相關引數。

 

.資料檔案的OMF管理

  資料檔案管理引數:db_create_file_dest

  db_create_file_destOracle建立資料檔案、臨時檔案時,在未明確指定路徑的情況下的預設路徑,當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_.dbfOralce自動建立的資料檔案*/

 

       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 = ''設定路徑

  2.檢視剛剛的設定SHOW PARAMETER db_create_file_dest;

  3.建立表空間及資料檔案CREATE TABLESPACE tablespace_name

  4.單獨建立表空間CREATE TABLESPACE <> DATAFILE '' SIZE <>;

  5.也可以建立undotemporary 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_destdb_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_1db_create_online_log_dest_2則存放到

    db_create_online_log_dest_1db_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 '

' 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          datafilecreate tablespace<>

    db_create_online_log_dest_n       logfile ,controlfile

    db_recovery_file_dest             rman, archivelog,onlinelog

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-703491/,如需轉載,請註明出處,否則將追究法律責任。

相關文章