Oracle 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 AND DATAFILES 刪除方式

發佈了98 篇原創文章 · 獲贊 9 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章