Oracle認證DBA經驗談 更改資料檔案的可用性

2021-05-28 07:33:21 字數 3173 閱讀 6251

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學習經驗談

學習oracle不能急於求成,寄希望於一天成為乙個大俠。學習有個過程,應該由淺入深,在學習的過程中打好基礎,這樣在以後的學習中就能觸類旁通,舉一反三。ad 線下活動 三大新銳html 5企業匯聚51cto 大話移動前端技術 經常遇到朋友問oracle學習難不難,怎麼才能成為高手等等,我想結合我的個人...

Oracle學習的經驗談

經常遇到朋友問oracle學習難不難,怎麼才能成為高手等等,我想結合我的個人經驗簡單說幾點 1 打好基礎,由淺入深 學習oracle不能急於求成,寄希望於一天成為乙個大俠。學習有個過程,應該由淺入深,在學習的過程中打好基礎,這樣在以後的學習中就能觸類旁通,舉一反三。就我個人經驗而言,建議先學習oca...

Oracle學習的經驗談

經常遇到朋友問oracle學習難不難,怎麼才能成為高手等等,我想結合我的個人經驗簡單說幾點 1 打好基礎,由淺入深 學習oracle不能急於求成,寄希望於一天成為乙個大俠。學習有個過程,應該由淺入深,在學習的過程中打好基礎,這樣在以後的學習中就能觸類旁通,舉一反三。就我個人經驗而言,建議先學習oca...