DBA必備知識|Oracle 托管文件 (OMF)詳解
一、 關于oracle的托管文件
1.1. 什么是OMF文件
Oracle Managed Files可以簡化Oracle數據庫的管理,Oracle Managed Files 使 DBA 無需直接管理構成 Oracle 數據庫的操作系統文件。使用 Oracle Managed Files,您可以指定文件系統目錄,數據庫在這些目錄中自動創建、命名和管理數據庫對象級別的文件。比如你只需要指定你要創建一個表空間;您不需要使用DATAFILE子句指定表空間的數據文件的名稱和路徑。此功能可與邏輯卷管理器 (LVM) 配合使用。
數據庫內部使用標準文件系統接口根據需要創建和刪除以下數據庫結構的文件:
- Tablespaces
- Redo log files
- Control files
- Archived logs
- Block change tracking files
- Flashback logs
- RMAN backups
我們可以通過參數來指定用于存放特定類型文件的系統目錄,這樣確保數據庫在不再需要時創建和刪除唯一的文件,即oracle管理的文件。
友情提示:
OMF不影響管理以下文件的創建或命名,例如跟蹤文件、審計文件、警報日志和核心文件。
1.2. 哪種類型的數據庫適合使用 Oracle 托管文件?
Oracle Managed Files 對于以下類型的數據庫最有用:
受以下支持的數據庫:
(1)支持條帶化/RAID 和動態可擴展邏輯卷的邏輯卷管理器。
(2)提供大型可擴展文件的文件系統。
低端或測試數據庫。
注意事項:
由于 Oracle Managed Files 要求您使用操作系統文件系統,因此您無法控制文件在磁盤上的布局方式,從而失去了一些 I/O 調整能力。
1.3. 使用 Oracle Managed Files 的好處
考慮使用 Oracle Managed Files 得以下好處:
它們使數據庫的管理更容易。
無需發明文件名和定義特定的存儲要求。一組一致的規則用于命名所有相關文件。文件系統定義了存儲和分配存儲池的特性。
它們減少了由管理員指定錯誤文件造成的損壞。
每個 Oracle 管理的文件和文件名都是唯一的。在兩個不同的數據庫中使用相同的文件是一個常見的錯誤,它會導致非常大的停機時間和已提交事務的丟失。使用引用同一個文件的兩個不同名稱是導致嚴重損壞的另一個錯誤。
它們減少了過時文件消耗的浪費的磁盤空間。
當不再需要舊的 Oracle 托管文件時,Oracle 數據庫會自動刪除它們。在大型系統中浪費了大量磁盤空間,僅僅是因為沒有人確定是否仍然需要特定文件。這也簡化了刪除磁盤上不再需要的文件的管理任務,并防止了刪除錯誤文件的錯誤。
它們簡化了測試和開發數據庫的創建。
您可以最大限度地減少做出有關文件結構和命名的決定所花費的時間,并且您的文件管理任務更少。您可以更好地專注于滿足測試或開發數據庫的實際需求。
Oracle Managed Files 使便攜式第三方工具的開發變得更加容易。
Oracle Managed Files 無需在 SQL 腳本中放置操作系統特定的文件名。
1.4. Oracle 托管文件和現有功能是否能共存?
使用 Oracle Managed Files 不會消除任何現有功能,OFM文件和手動管理的oracle文件能夠共存,oracle數據庫可以混合管理他們。
二、 啟用 Oracle 托管文件的創建和使用
2.1. 啟用 Oracle 托管文件的初始化參數
提示:
- 這些參數指定的文件系統目錄必須已經存在,數據庫不會創建它們。該目錄還必須具有允許數據庫在其中創建文件的權限。
- 只要沒有為創建文件的操作明確指定位置,就會使用默認位置。數據庫創建文件名,這樣創建的文件就是Oracle管理的文件。
- 這兩個初始化參數都是動態的,可以使用ALTER SYSTEMorALTER SESSION語句設置。
2.2. OMF的命令約定
參數說明:
通配符%g、%t和%u具有以下定義:
- %g 重做日志文件組號。
- %t 表空間名稱,根據需要截斷以確保它適合最大文件名。通過將表空間名稱放在唯一性字符串之前,您允許給定表空間的所有數據文件一起出現在按字母順序排列的文件列表中。
- %u 保證唯一性的八字符字符串。
- ora_ 表示該文件是 Oracle 托管文件。
三、 禁用OMF管理
1. 查詢omf是否啟用
- col name format a25
- col value format a10
- select x.ksppinm name, y.kspftctxvl value, y.kspftctxdf isdefault, decode(bitand(y.kspftctxvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
- decode(bitand(y.kspftctxvf,2),2,'TRUE','FALSE') isadj from sys.x$ksppi x, sys.x$ksppcv2 y where x.inst_id = userenv('Instance')
- and y.inst_id = userenv('Instance') and x.indx+1 = y.kspftctxpn
- and x.ksppinm like '%omf%' ;
- NAME VALUE ISDEFA ISMOD ISADJ
- ------------------------- ---------- ------ ---------- -----
- _omf enabled TRUE FALSE FALSE
注:value值為enabled表示omf功能已經啟用
2. 禁用omf
- 在pfile/spfile中添加參數CONTROL_FILES
- 從參數文件(pfile/spfile)中移除參數DB_CREATE_FILE_DEST 和DB_CREATE_ONLINE_LOG_DEST_n
- 重啟數據庫