Oracle資料庫中的資料檔案有一個特性,即可以設定是否離線。如果將資料檔案設定為離線,資料庫就無法讀取這個資料檔案。只有在檔案聯機,時資料庫才能夠讀取其中的內容。為此有時候改變這個資料檔案的狀態也是資料庫維護過程中的一個必要手段。
一、為什麼要更改其可用性?
1、 處於更改資料檔案名或者位置的需要。
在資料庫部署的時候,如果沒有給資料檔案取一個合適的名字,或者說沒有給其選擇一個合適的分區。此時在後續的維護中可能就需要更改資料檔案的名字或者位置。如有時候處於效能最佳化的考慮,會將一些存在並發性訪問的資料檔案存放在不同的硬碟分區上,以減少I/O衝突提高資料庫效能。在這種情況下,就必須要移動資料檔案的位置。要實現這個目的的話,就必須首先要讓資料檔案離線,然後再將其啟動到合適的位置。
2、 系統遇到資料檔案故障時會自動關閉。
有時候資料庫系統也會自動關閉資料檔案。如當資料庫系統往資料檔案中寫入資料的時候,如果發現寫入過程中出現錯誤的話,就會將這個資料檔案設定為離線,並將這個資訊寫入到日誌中。資料庫管理員接到警示資訊後,就需要修複這個資料檔案。修複完畢後,還需要手工的將這個資料檔案設定為聯機。此時資料庫系統才會重新啟用這個資料檔案。可見,當資料檔案無法正確寫入時,也是資料檔案離線的一個原因。
將某個資料檔案設定為離線時,不會影響到其他資料檔案的可用性。如資料庫管理員在規劃資料檔案的時候,是按照部門來規劃的。即其他部門的使用者仍然可以在系統中訪問自己若需要的資料。為此這個特性的話可以有效的減少資料庫當機的時間,實現資料庫的最大可用性。 分步啟動資料庫以重新命名資料檔案
二、歸檔模式與非歸檔模式下分別如何更改?
Oracle資料庫工作模式大致分為歸檔模式與非歸檔模式。在不同的操作模式下,其資料檔案可用性維護的方法稍有差異。為此各位元據庫管理員要瞭解在不同操作模式下的維護方式。只有如此,才能夠採取合適的方式來改變資料檔案的可用性。
若資料庫處于歸檔模式,則要使一個單獨的資料檔案聯機或者離線,則只需要使用ALTER DATABASE的DATEFILE字句即可。即按照如下的形式就可以將某個資料檔案設定為離線或者聯機。當以下命令執行成功後,系統會提示“資料庫已經更改”。
ALTER DATABASE DATAFILE ‘資料檔案儲存路徑與名字’ OFFLINE/ONLINE;
但是要注意,如果資料庫不是處于歸檔模式,則執行上面的語句更改資料檔案的可用性時,資料庫會提示錯誤資訊。若將某個資料檔案設定為離線時,“除非使用介質恢複,否則不允許立即離線”。如將某個資料檔案設定為聯機時,會提示“資料檔案5,需要介質恢複”。注意這裡的5代表的是資料檔案的絕對檔案號。在Oracle資料庫中檔案號是資料庫系統標識資料檔案的一個工具,就好像人的身份證一樣,唯一標識了一個資料檔案。在Oracle中,檔案號分為絕對檔案號和相對檔案號。絕對檔案號是在整個資料庫中唯一的標識一個資料檔案。而相對檔案號是在資料表空間中唯一的標識一個資料檔案。也就是說,相對檔案號在同一個資料表空間內是唯一的,但是並不保障在整個資料庫內是唯一的。此時資料庫可能需要資料表空間與相對檔案號兩個參數才能夠唯一的定位元據檔案。對於中等規模以下的資料庫系統,往往相對檔案號與絕對檔案號是相同的。但是當資料庫變得很大時,相對檔案號與決定檔案號就可能有所差異。由於在錯誤資訊中沒有直接說明資料檔案的名稱,為此資料庫管理員不得不先將這個檔案號轉換到對應的資料檔案名字,然後再去想解決方案。IT專家網獨家:重定位元據檔案的位置)
可見,如果當資料庫採用非歸檔模式時,就無法採用上面方式將資料檔案聯機或者離線。此時需要稍微修改一下上面的語句來完成。如可以將這個語句改為:
ALTER DATABASE DATAFILE ‘資料檔案儲存路徑與名字’ OFFLINE DROP;
即需要在原先的語句後面加入DROP關鍵字。此時就可以正常將非歸檔模式下的資料檔案離線了。不過需要注意的一點就是,無非採用正常的方式將非歸檔模式下的資料檔案設定為聯機。正常情況下,只有採用介質恢複的形式才能夠將非歸檔模式下的資料檔案設定為聯機。所以說,如果資料庫採用的是非歸檔模式,那麼在將資料檔案設定為離線時,就需要謹慎了。因為此時再想將離線的資料檔案設定為聯機,可沒有這麼簡單了。
三、更改資料檔案可用性的注意事項。
從以上的分析中可以看出要改變某個資料檔案的狀態,特別是歸檔模式下資料檔案的可用性,並不是很困難的一件事情。不過在維護資料檔案可用性的時候,下面的一些內容還需要引起各位元據庫管理員的注意。
1、 系統資料表空間不能夠離線。
在Oracle資料庫中,資料表空間可以分為系統資料表空間和非系統資料表空間。這裡需要明白的是,系統資料表空間中的資料檔案無法設定為離線。後續大家還沒有認識到這個的重要性。系統資料表空間中的資料檔案無法離線,就表示當資料庫投入生產之後,就無法更改系統資料表空間中資料檔案的儲存位置。所以在資料庫規劃時,就好規劃好系統資料表空間中資料檔案的儲存。另外,也不要將使用者的資料檔案存放到這個系統資料表空間中。
2、 資料表空間可用性與資料檔案可用性之間的關係。
資料庫資料表空間的可用性與資料檔案的可用性存在著很密切的聯絡。一般來說,當將某個資料表空間設定為離線或者聯機時,這個資料表空間下面的所有資料檔案的可用性也會隨之變為離線或者聯機。但是,反過來即不成立。如先通過資料表空間離線將所有的資料檔案的可用性設定為離線狀態。然後再一一的將這個資料表空間的資料檔案全部設定為聯機,此時這些資料檔案仍然不可用。這主要是因為這些資料檔案的主人,資料表空間的使用狀態還是為離線。所以說,資料檔案可用性的改變,不會影響到資料表空間。但是資料表空間使用狀態的改變,卻會影響其下面的所有資料檔案。
這個特性有時候很有用。如現在資料庫管理員出於效能最佳化的考慮,要將某個資料表空間移植到另外一個快效能更佳的硬碟上,以減少硬碟I/O的衝突。此時就需要將這個資料表空間的資料檔案設定為離線。為此資料庫管理員就不需要一一的去改變這個資料表空間下面資料檔案的可用性。而是可以直接將這個資料表空間設定為離線,那麼下面資料檔案的可使用狀態也會發生相應的改變。然後就可以移動這些資料檔案的位置了。等到移動完成後,再將這個資料表空間設定為聯機即可。此時這個資料表空間下面的所有資料檔案也會變為聯機。可見,通過資料表空間的可用性來維護資料檔案的可用性,在需要維護整個資料表空間中資料檔案的可用形時是非常便捷的一個方式。不過這裡仍然需要注意一點,就是其仍然受到歸檔模式與非歸檔模式兩種操作模式的限制。
最後需要說明的一點就是,資料檔案在建立資料庫或者增加資料檔案時就會被建立。如現在為某個資料表空間增加了一個資料檔案,即使這個資料檔案還沒有資料,系統就已經為其分配了儲存空間。為此當資料檔案建立後要調整資料檔案的名字與位置時,會比較麻煩。所以筆者建議資料庫管理員,在建立資料檔案之前先要對其進行合理的規劃,以免後續調整的麻煩。在資料檔案建立之後,最好不要隨意的通過更改可用性來調整資料檔案的配置。
- Oracle DBA在新環境下必須瞭解的事情
- Oracle DBA的利器EXP和IMP簡介
- Oracle DBA最佳化資料庫效能心得體會(1)
- 分布式DBA:SQL預存程序知識總結(1)
- Oracle DBA職責及日常工作分析