當前位置:學問君>人在職場>IT認證>

DBA更改數據檔案的可用性

學問君 人氣:1.52W

Oracle數據庫中的數據檔案有一個特性,即可以設定是否脫機。如果將數據檔案設定爲脫機,數據庫就無法讀取這個數據檔案。只有在檔案聯機,時數據庫才能夠讀取其中的內容。爲此有時候改變這個數據檔案的狀態也是數據庫維護過程中的一個必要手段。

DBA更改數據檔案的可用性

一、爲什麼要更改其可用性?

1、 處於更改數據檔案名或者位置的需要。

在數據庫部署的時候,如果沒有給數據檔案取一個合適的名字,或者說沒有給其選擇一個合適的分區。此時在後續的維護中可能就需要更改數據檔案的名字或者位置。如有時候處於性能優化的考慮,會將一些存在併發性訪問的數據檔案存放在不同的硬盤分區上,以減少I/O衝突提高數據庫性能。在這種情況下,就必須要移動數據檔案的位置。要實現這個目的的話,就必須首先要讓數據檔案脫機,然後再將其啓動到合適的位置。

2、 系統遇到數據檔案故障時會自動關閉。

有時候數據庫系統也會自動關閉數據檔案。如當數據庫系統往數據檔案中寫入數據的時候,如果發現寫入過程中出現錯誤的話,就會將這個數據檔案設定爲脫機,並將這個資訊寫入到日誌中。數據庫管理員接到報警資訊後,就需要修復這個數據檔案。修復完畢後,還需要手工的將這個數據檔案設定爲聯機。此時數據庫系統纔會重新啓用這個數據檔案。可見,當數據檔案無法正確寫入時,也是數據檔案脫機的一個原因。

將某個數據檔案設定爲脫機時,不會影響到其他數據檔案的可用性。如數據庫管理員在規劃數據檔案的時候,是按照部門來規劃的。即其他部門的用戶仍然可以在系統中訪問自己若需要的數據。爲此這個特性的話可以有效的的減少數據庫當機的時間,實現數據庫的最可用性。 分步啓動數據庫以重命名數據檔案

二、歸檔模式與非歸檔模式下分別如何更改?

Oracle數據庫工作模式致分爲歸檔模式與非歸檔模式。在不同的操作模式下,其數據檔案可用性維護的方法稍有差異。爲此各位數據庫管理員要了解在不同操作模式下的維護方式。只有如此,才能夠採取合適的方式來改變數據檔案的可用性。

若數據庫處於歸檔模式,則要使一個單獨的數據檔案聯機或者脫機,則只需要使用ALTER DATABASE的DATEFILE字句即可。即按照如下的形式就可以將某個數據檔案設定爲脫機或者聯機。當以下命令執行成功後,系統會提示“數據庫已經更改”。

ALTER DATABASE DATAFILE ‘數據檔案存儲路徑與名字’ OFFLINE/ONLINE;

但是要注意,如果數據庫不是處於歸檔模式,則執行上面的語句更改數據檔案的可用性時,數據庫會提示錯誤資訊。若將某個數據檔案設定爲脫機時,“ 除非使用介質恢復,否則不允許立即脫機”。如將某個數據檔案設定爲聯機時,會提示“數據檔案5,需要介質恢復”。注意這裏的5代表的是數據檔案的絕對檔案號。在Oracle數據庫中檔案號是數據庫系統標識數據檔案的一個工具,就好像人的身份證一樣,唯一標識了一個數據檔案。在Oracle中,檔案號分爲絕對檔案號和相對檔案號。絕對檔案號是在整個數據庫中唯一的標識一個數據檔案。而相對檔案號是在表空間中唯一的標識一個數據檔案。也就是說,相對檔案號在同一個表空間內是唯一的,但是並不保障在整個數據庫內是唯一的。此時數據庫可能需要表空間與相對檔案號兩個參數才能夠唯一的定位數據檔案。對於中等規模以下的數據庫系統,往往相對檔案號與絕對檔案號是相同的。但是當數據庫變得很時,相對檔案號與決定檔案號就可能有所差異。由於在錯誤資訊中沒有直接說明數據檔案的名稱,爲此數據庫管理員不得不先將這個檔案號轉換到對應的數據檔案名字,然後再去想解決方法。

可見,如果當數據庫採用非歸檔模式時,就無法採用上面方式將數據檔案聯機或者脫機。此時需要稍微修改一下上面的語句來完成。如可以將這個語句改爲:

ALTER DATABASE DATAFILE ‘數據檔案存儲路徑與名字’ OFFLINE DROP;

即需要在原先的語句後面加入DROP關鍵字。此時就可以正常將非歸檔模式下的數據檔案脫機了。不過需要注意的一點就是,無非採用正常的方式將非歸檔模式下的數據檔案設定爲聯機。正常情況下,只有採用介質恢復的形式才能夠將非歸檔模式下的數據檔案設定爲聯機。所以說,如果數據庫採用的是非歸檔模式,那麼在將數據檔案設定爲脫機時,就需要慎重了。因爲此時再想將脫機的數據檔案設定爲聯機,可沒有這麼簡單了。

三、更改數據檔案可用性的注意事項。

從以上的分析中可以看出要改變某個數據檔案的狀態,特別是歸檔模式下數據檔案的可用性,並不是很困難的一件事情。不過在維護數據檔案可用性的時候,下面的一些內容還需要引起各位數據庫管理員的注意。

1、 系統表空間不能夠脫機。

在Oracle數據庫中,表空間可以分爲系統表空間和非系統表空間。這裏需要明白的是,系統表空間中的數據檔案無法設定爲脫機。後續家還沒有認識到這個的重要性。系統表空間中的數據檔案無法脫機,就表示當數據庫投入生產之後,就無法更改系統表空間中數據檔案的存儲位置。所以在數據庫規劃時,就好規劃好系統表空間中數據檔案的存儲。另外,也不要將用戶的數據檔案存放到這個系統表空間中。

2、 表空間可用性與數據檔案可用性之間的關係。

數據庫表空間的可用性與數據檔案的可用性存在着很密切的聯繫。一般來說,當將某個表空間設定爲脫機或者聯機時,這個表空間下面的所有數據檔案的可用性也會隨之變爲脫機或者聯機。但是,反過來即不成立。如先透過表空間脫機將所有的數據檔案的可用性設定爲脫機狀態。然後再一一的'將這個表空間的數據檔案全部設定爲聯機,此時這些數據檔案仍然不可用。這主要是因爲這些數據檔案的主人,表空間的使用狀態還是爲脫機。所以說,數據檔案可用性的改變,不會影響到表空間。但是表空間使用狀態的改變,卻會影響其下面的所有數據檔案。

這個特性有時候很有用。如現在數據庫管理員出於性能優化的考慮,要將某個表空間移植到另外一個快性能更佳的硬盤上,以減少硬盤I/O的衝突。此時就需要將這個表空間的數據檔案設定爲脫機。爲此數據庫管理員就不需要一一的去改變這個表空間下面數據檔案的可用性。而是可以直接將這個表空間設定爲脫機,那麼下面數據檔案的可使用狀態也會發生相應的改變。然後就可以移動這些數據檔案的位置了。等到移動完成後,再將這個表空間設定爲聯機即可。此時這個表空間下面的所有數據檔案也會變爲聯機。可見,透過表空間的可用性來維護數據檔案的可用性,在需要維護整個表空間中數據檔案的可用形時是非常便捷的一個方式。不過這裏仍然需要注意一點,就是其仍然受到歸檔模式與非歸檔模式兩種操作模式的限制。

最後需要說明的一點就是,數據檔案在創建數據庫或者增加數據檔案時就會被創建。如現在爲某個表空間增加了一個數據檔案,即使這個數據檔案還沒有數據,系統就已經爲其分配了存儲空間。爲此當數據檔案創建後要調整數據檔案的名字與位置時,會比較麻煩。所以筆者建議數據庫管理員,在創建數據檔案之前先要對其進行合理的規劃,以免後續調整的麻煩。在數據檔案創建之後,最好不要隨意的透過更改可用性來調整數據檔案的配置。