在沒有OMF(託管檔案)之前,資料庫管理員在建立資料檔案的時候,需要關心兩個問題。一是該為這個資料檔案取一個什麼樣的名字,二是需要考慮新建立的資料檔案會不會與已經存在的資料檔案重複。當企業的資料庫比較大,有數百個資料檔案時,這項工作就會變得非常的困難。為此需要採用一種機制,對資料檔案進行自動管理。在Oracle資料庫中就提供了OMF託管檔案這種機制。
一、使用過程中的相關配置
OMF託管檔案機制相當於是一個批處理。當使用者在建立資料檔案的時候,只要輸入一個命令,不需要帶名字、儲存位置等參數,系統就會自動根據一定的規則來建立資料檔案。故在使用這個託管檔案功能之前,管理員需要先在資料庫中建立好相關的規則。雖然系統有時候也會採用預設的配置,但是筆者不建議這麼做。對於一個複雜的資料庫系統來說,根據企業的實際情況,預先建立好資料檔案的體系,是一個很好的習慣。系統的預設設定往往針對的是中小型的應用,無法滿足大型資料庫的要求。所以管理員需要根據實際情況來配置相關的規則。具體的來說,主要涉及到以下幾個參數。
一是DB_CREATE_FILE_DEST參數。顧名思義,這個參數主要用來指定資料檔案預設的儲存位置。設定好這個參數之後,管理員在建立資料檔案時就不需要再輸入具體的檔案位置。這裡需要注意的是,這個地址還跟臨時檔案、重做記錄檔、控制檔案等等相關。
二是DB_RECOVERY_FILE_DEST參數。這個參數主要用來定義重做日誌、控制檔案、RMAN備份檔案、歸檔日誌和閃回日誌的預設位置。當管理員設定了這個參數之後,系統將會重寫其預設設定。
三是DB_CREATE_ONLINE_LOG_DEST_N參數。這個參數也是用來定義重做記錄檔和控制檔案的預設位置。這裡也許有人會問,如果這個參數與前面的參數定義的位置不同,那該如何處理呢?這裡就涉及到一個優先順序的問題。通常情況下,如果設定了這個參數,那麼前面兩個參數的設定就會被覆蓋掉。最終系統使用的是這個參數所定義的位置。也許有人會問,這個參數後面為什麼會帶一個字元N呢?其實這主要是為了建立副本的需要。具體的內容,筆者會在下面的內容中進行詳細敘述。
二、使用OMF來建立資料檔案
以上相關的規則配置完畢之後,就可以使用OMF託管檔案功能來建立資料檔案。只需要運行命令ALTER Tablespace ADD DATAFILE命令即可。注意在這個命令中,沒有指定所需要建立的資料檔案的路徑與名字。這些都是系統根據預先定義的規則來自動補充的。在使用這個命令的時候,筆者認為還需要注意以下幾點內容。
一是如何來實現歸檔日誌與控制檔案的多個副本?在手工建立歸檔記錄檔和控制檔案的時候,我們總會在不同的位置建立多個相同名字的歸檔記錄檔或者控制檔案的副本。如此的話,當某個歸檔記錄檔或者控制檔案出現問題,還可以通過副本來彌補。通過OMF託管檔案來自動建立資料檔案時,該如何?這個功能呢?其實實現的方法也很簡單。只需要在設定DB_CREATE_ONLINE_LOG_DEST_N這個參數的時候,多建幾個,系統就會自動建立相關檔案的副本。這就是最後一個字元N的作用。
二是如果建立資料表空間,則資料檔案該如何處理?在沒有OMF託管檔案功能之前,建立資料表空間與建立資料檔案是兩個獨立的事項。也就是說,建立資料表空間之後,管理員還需要根據實際情況來來手工建立資料檔案。不過在有了OMF託管檔案功能之後,這種情況發生了根本性的變化。換句話說,只需要使用命令Create Tablespace命令,而完全不需要制定涉及的實際資料檔案,系統會自動建立相關的資料檔案。如果有指定多個鏡像位置的話,還會自動建立重做記錄檔或者控制檔案的副本。
三、OMF託管檔案的局限性以及應對措施
雖然OMF檔案可以提高建立資料檔案的自動化能力,如自動命名、自動判斷重名問題等等。但是其在具體的使用過程中,也具有一定的局限性。總的來說,OMF託管檔案其主要的優勢在於掛你院不用擔心會建立已經存在的檔案(包括資料檔案、重做記錄檔、控制檔案等等)。而其主要的局限在與,通過OMF託管檔案建立的檔案,沒有容量管理和平衡I/O方面的優點。為此對後續系統的效能等等方面會有一定的影響。在實際工作中,OMF託管檔案往往不是單獨使用,而是結合Oracle的另一項功能ASM來使用。ASM(自動儲存管理)是對OMF託管檔案管理功能的一個有效補充。
四、OMF與ASM結合使用的注意點
通常情況下,OMF無法平衡I/O和容量管理的功能。這方面的缺陷可以通過ASM自動儲存管理機制來彌補。兩者在結合使用的過程中,需要關注如下內容。
第一裸裝置的相關問題。裸裝置指的是沒有使用檔案系統的存放裝置。在這種裝置上儲存資料,其好處是可以提高系統的效能。而其許可權就是維護比較困難。這裡需要注意的是,ASM自動儲存管理其是支援裸裝置的,為此就不存在非同步I/O或者直接I/O等問題。而對於OMF來說,其大部分情況下還是在檔案系統的背景下操作的。所以從應用範圍來說,ASM要比OMF功能來的大。在具體配置時,這需要特別注意的。
第二是跨平台的問題。Oracle資料庫是一個跨平台的管理系統,其即可以在微軟的作業系統上運行,也可以在Linux等作業系統上部署。但是由於不同作業系統之間,其核心等方面存在著比較大的差異,在實際配製過程中也會遇到很多不同的地方。在使用OMF功能於ASM功能的時候,也會遇到這種問題。這裡需要注意的是,ASM是專門構建用於簡化DBA工作的管理工具。其提供了跨越所有伺服器和儲存平台的儲存管理介面。也就是說,ASM其可以支援多個作業系統平台。或者說,在不同的平台上,在操作上其基本是相同的。而對於OMF託管檔案來說,則沒有這麼簡單。因為OMF過關檔案這個功能,更像是在跟作業系統打交道,如指定檔案儲存體位置等等,所以受作業系統的影響比較大。最簡單的一個例子,就是Unix等作業系統與Windows等作業系統在檔案路徑的表示上,就有很大的差異。在具體配置時,需要注意這方面的差異,並選擇合適的配置方法。
第三兩者分工不同。在實際工作中,筆者發現很多管理員,特別是第一次接觸Oracle資料庫的管理員(如從SQLServer轉到Oracle),他們在這方面會有一個誤解。OMF託管檔案,其具有自動管理資料檔案的功能。但是這個自動管理資料檔案,並不是說管理其容量。也就是說,OMF託管檔案只涉及到資料檔案的儲存路徑、資料檔案的命名等等。而與儲存管理無關。更精確的說,只涉及到儲存管理的一小部分。儲存管理從大的範圍來說,包含儲存的路徑、儲存的名字、儲存容量、I/O等問題。而OMF託管檔案只涉及到儲存的路徑、儲存的名字;OMF則涉及到儲存容量、I/O等方面的內容。所以這兩個功能之間有明顯的差異。兩者是分工合作,相互補充。為此在實際工作中,往往這兩項功能需要同時實現,才能夠發揮最佳的效果。