【OMF】使用Oracle的OMF 特性

煙花丶易冷發表於2018-05-24
Oracle的OMF全稱“Oracle managed file”,關於這個概念的參考請自行查閱Oracle官方文件“Using Oracle-Managed Files”()。關於這項體現Oracle自動化演進的特性的評價褒貶不一。我們不討論是否推薦在生產系統中引入這項技術,我們一同看一下這個技術帶給我們的樂趣。

1.確認系統是否啟用OMF特性
Oracle資料庫是否啟用OMF特性可以透過檢視DB_CREATE_FILE_DEST引數來獲得。
當DB_CREATE_FILE_DEST引數值為空時表示未啟用OMF功能。
sys@ora10g> show parameter db_create_file_dest

NAME                 TYPE                 VALUE
-------------------- -------------------- -------------------
db_create_file_dest  string

2.開啟OMF特性
透過修改資料庫引數使其生效。方法很多,按照個人喜好進行調整(pfile調整方法,alter system調整引數)。
sys@ora10g> alter system set db_create_file_dest='/oracle/oradata';

System altered.

sys@ora10g> show parameter db_create_file_dest

NAME                  TYPE                 VALUE
--------------------- -------------------- ------------------
db_create_file_dest   string               /oracle/oradata

3.使用OMF特性建立表空間
sys@ora10g> create tablespace tbs_secooler;

Tablespace created.

4.資料檔案存放位置
此時Oracle會在/oracle/oradata目錄下以資料庫例項的大寫名字(這裡是ORA10G)建立一個目錄,表空間對應的資料檔案會存放在datafile目錄下。
sys@ora10g> !ls -l /oracle/oradata/ORA10G/datafile
total 102512
-rw-r----- 1 oracle oinstall 104865792 Jul 15 05:59 o1_mf_tbs_seco_63x8xzvw_.dbf

5.表空間的預設屬性
sys@ora10g> select dbms_metadata.get_ddl('TABLESPACE','TBS_SECOOLER') from dual;

DBMS_METADATA.GET_DDL('TABLESPACE','TBS_SECOOLER')
---------------------------------------------------------------------

  CREATE TABLESPACE "TBS_SECOOLER" DATAFILE
  '/oracle/oradata/ORA10G/datafile/o1_mf_tbs_seco_63x8xzvw_.dbf' SIZE 104857600
  AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO

可見,透過OMF方式建立的表空間預設是100M大小,並且是自動擴充套件的。

6.新增資料檔案
可以簡單的透過下面的命令為表空間tbs_secooler新增一個資料檔案
sys@ora10g> alter tablespace tbs_secooler add datafile;

Tablespace altered.

sys@ora10g> select dbms_metadata.get_ddl('TABLESPACE','TBS_SECOOLER') from dual;

DBMS_METADATA.GET_DDL('TABLESPACE','TBS_SECOOLER')
---------------------------------------------------------------------

  CREATE TABLESPACE "TBS_SECOOLER" DATAFILE
  '/oracle/oradata/ORA10G/datafile/o1_mf_tbs_seco_63x8xzvw_.dbf' SIZE 104857600
  AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M,
  '/oracle/oradata/ORA10G/datafile/o1_mf_tbs_seco_63x9scb5_.dbf' SIZE 104857600
  AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO

sys@ora10g> !ls -l /oracle/oradata/ORA10G/datafile
total 205024
-rw-r----- 1 oracle oinstall 104865792 Jul 15 05:59 o1_mf_tbs_seco_63x8xzvw_.dbf
-rw-r----- 1 oracle oinstall 104865792 Jul 15 06:14 o1_mf_tbs_seco_63x9scb5_.dbf

7.刪除表空間資料檔案會隨之刪除
sys@ora10g> drop tablespace tbs_secooler;

Tablespace dropped.

sys@ora10g> !ls -l /oracle/oradata/ORA10G/datafile
total 0

這個特性曾經一度讓人們歡呼雀躍。

8.小結
Oracle的OMF特性很少被大規模的應用。原因很多,個人認為OMF雖然帶來了操作上的些許便利,但是它隱藏了一些必要細節,同時表空間名字與資料檔名字很難快速建立起對應關係,為後期的管理帶來了極大的不便。大家可以在實際環境酌情使用這項技術。

Good luck.

secooler
10.07.14

-- The End --

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

相關文章