oracle控制檔案備份關鍵是選擇備份

2021-06-27 06:09:16 字數 3194 閱讀 8262

其實在oracle資料庫中,對控制檔案進行備份是很簡單的一件事情,只需要通過一些簡短的命令即可以完成。根據筆者的經驗,在進行控制檔案備份作業時其關鍵的內容在於確定什麼時候需要進行備份,即在執行哪些操作後需要對控制檔案進行備份。而對於一些基本的備份操作,相對來說對於資料庫管理員不會有多大的難度。為此筆者這裡就倒過來說,先簡單的談談如果對控制檔案進行備份。然後再給大家詳細的分析一下,在什麼情況下應該對控制檔案進行備份。

一、控制檔案備份的方式。

在oracle資料庫中,對於控制檔案的備份主要有兩種方式,分別為二進位制檔案備份與文字檔案備份。這兩種備份方式不僅僅在於備份檔案格式的不同,而且其作用也有很大的差異。如二進位制檔案備份下的控制檔案,資料庫系統可以直接拿來使用。即當資料庫控制檔案發生損壞時,只需要修改初始化引數指向這個備份的控制檔案即可。oracle認證更多詳細資料而文字檔案備份模式下,這個控制檔案是以文字檔案的模式儲存的,為此資料庫不能夠直接拿來使用。資料庫管理員之所以採用這個文字檔案備份模式,主要是為以後手工建立控制檔案提供乙個參考。對於這兩個備份方式的區別,資料庫管理員需要清楚,以方便根據自己的用途來選擇合適的備份方式。一般情況下,只需要進行二進位制檔案的備份方式即可。

如要對oracle資料庫的控制檔案執行備份的話,需要用到alter database backup controlfile to 'e:\controlfile.ctl.bk'命令。後面to指向的是備份檔案的儲存的路徑。在備份時,最好不要更改其副檔名。如上例所示,可以直接在原來控制檔案的名字後面加上乙個備份的字尾,以示區別。當以後需要用到這個控制檔案時,只需要講後面的字尾去掉即可。另外需要注意的是,如果在linux 作業系統上進行控制檔案的備份,需要注意他們之間路徑表達方式上的差異。如alter database backup controlfile to '/home/oracle/controlfile.ctl.bk'這條命令是在linux系統下對控制檔案進行備份的語句。不知道細心的讀者有沒有發現他們的不同?他們之間只有在路徑上的分隔符有所差異。在windows作業系統中,採用的是反斜桿\符號。而在linux系統中採用的則是/符號。在其他方面沒有絲毫差異。

如要對資料庫進行文字檔案備份(某些專家也將文字檔案備份叫做追蹤備份),也是一件比較簡單的事情。利用命令alter database backup controlfile to trace就表示啟動乙個追蹤備份。比較兩個備份語句的不同,發現在文字檔案中,缺少了乙個備份檔案的路徑名以及檔名。這主要是因為採用文字檔案備份時,這個備份檔案的路徑是有引數user_dump_des控制的。文字檔案備份完成後,資料庫管理員可以使用show parameter user_dump_des命令來查詢這個備份檔案儲存的位置。另外這個備份檔案的名字也是自動命名的。其基本的格式為sid_ora_pid.trc。其中這個sid表示建立這個跟蹤備份的使用者所採用的會話 id。pid則表示程序的id。一般情況下,這個目錄中有很多的文字備份檔案。資料庫管理員需要按建立的時間來排序,以確定自己建立的備份檔案。由於這個檔案是文字形式儲存的,而上面的二進位制檔案不同,可以直接利用記事本開啟檢視相關的內容。其實這個文字形式的備份檔案並不能夠代替二進位制形式的控制檔案。資料庫管理員主要是出於研究的目的才會用到這個文字形式的控制檔案。另外就是有時候需要手工建立控制檔案時,可以拿這個檔案進行參考。

總之,除非有特殊的目的,資料庫管理員還是直接以二進位制檔案形式進行備份為好。因為只有二進位制檔案在資料庫控制檔案損壞時可以直接拿來使用。而不用像檔案檔案那樣,需要藉此進行重建控制檔案的控制。

二、哪些因素會導致控制檔案的更改?

要選擇乙個備份控制檔案的時機,首先需要知道哪些因素會導致控制檔案的更改。然後再從中分析出備份控制檔案的合適時機。通常情況下,導致控制檔案更改的因素有很多。或者說,控制檔案基本上是時時刻刻都在更改的。若每次更改都備份控制檔案的話,顯然工作量會很大。為此資料庫管理員需要抓住的是哪些對資料庫的啟動與執行具有實質性影響的更改。只抓關鍵,而不是眉毛鬍子一把抓。

一般來說,如果發生如下事件的話,則資料庫的控制檔案會發生改變。如當資料庫發生物理變化時,如刪除或者新增資料檔案時,資料庫系統會自動將這個資訊反映到控制檔案中。如當系統出現檢查點時間時,檢查點程序會自動修改控制檔案,以便資料檔案和重做日至檔案保持同步。如果資料庫採用的是歸檔模式,則歸檔程序會自動用歸檔日至檔名和日至序列號等資訊去修改控制檔案。使用rman備份工具時,rman的備份資訊會被記錄到控制檔案中。可見這些因素都在影響著控制檔案的更新。特別是檢查點程序。因為資料庫大檢查點的時間間隔可能只有1小時,甚至更多。此時每發生乙個檢查點事件,就會更新控制檔案。如果每更新一次就做一次備份的話,那工作量就可想而知了。為此,要從以上這些因素中挑選一些必須要進行控制檔案備份的時機。

三、選擇控制檔案備份的合適時機。

其實根據筆者的經驗,只有第一類事件,即資料庫發生物理變化時,對控制檔案進行備份就可以了。因為只有這個事件對控制檔案造成的影響,才會影響到資料庫的啟動與穩定執行。其他對控制檔案的更改,只要下一次事件發生後,就會自動更新。如就拿檢查點來說,如果採用的新的控制檔案,沒有記錄最新的檢查點資訊,也沒有關係。只要在下次檢查點時間發生之前不要採用恢復作業即可。也就是說其影響是暫時的。等到新的檢查點時間發生時,其就會將最新的資訊更新到控制檔案中。具體的來說,當發生以下事件對資料庫的控制檔案產生更新時,最好及時對控制檔案進行備份。

一是表空間發生的更改。如管理員新增了乙個表空間,或者刪除了表空間,此時都會對控制檔案產生很大的影響。要進行及時的備份。另外需要注意的一點就是如果更改了表空間的狀態,如將表空間設定為唯讀時,此時雖然沒有對資料庫的物理結構產生很大的影響,但是其可能影響資料的一致性問題。為此若更改了資料庫表空間讀寫狀態時,也最好對控制檔案進行必要的備份。

二是資料檔案發生物理性變化時,即新增了資料檔案或者刪除了某個資料檔案,此時就需要對控制檔案進行備份。因為如果此時不備份的話,若因為故障採用了舊的控制檔案,資料庫就不會讀取新家的資料檔案中的內容,從而導致資料丟失。所以,當資料檔案發生物理變化時,對控制檔案進行備份是必要的。

三是重做日誌組或則重做日誌檔案發生物理性變化,如新增或者刪除時,跟上面的道理相同,也最好手工立即進行控制檔案的備份。

除了以上三個事件,一般情況下不需要對控制檔案進行備份。當然,在條件可行的情況下,資料庫管理員也可以將以上的備份語句寫入到乙個指令碼程式中。然後利用系統的任務計畫實現控制檔案的自動備份。這也是可行的。不過即使如此,也很難實現控制檔案一有變化就馬上進行備份。筆者以前在linux系統上進行過類似的測試,可以根據備份檔案的更新時間來進行備份。不過筆者覺得沒有這麼做的必要,這只是出於技術上好奇才去研究的。各位讀者若對此感興趣的話,下次筆者可以將這個方案拿出來供大家討論。

總之筆者認為當資料庫的物理結構發生變化時對控制檔案進行備份即可。而不需要控制檔案一有變化就對其進行備份。這有點勞命傷財的跡象。

控制檔案備份關鍵是選擇備份時機

其實在oracle資料庫中,對控制檔案進行備份是很簡單的一件事情,只需要通過一些簡短的命令即可以完成。根據筆者的經驗,在進行控制檔案備份作業時其關鍵的內容在於確定什麼時候需要進行備份,即在執行哪些操作後需要對控制檔案進行備份。而對於一些基本的備份操作,相對來說對於資料庫管理員不會有多的難度。為此筆者...

關鍵是把握好現在

在生活中,有過許多許多這樣的日子 我們常常為昨天的失落,念念不忘,喋喋不休,耿耿於懷 又常常為明天的美麗,意氣風發,熱血沸騰,鬥志昂揚。然而,或許你覺察不到,就在這埋怨與幻想當中,就在這追悔與興奮當中,我們失去了最寶貴也最容易失去的今天。昨天是失去的今天,明天是未來的今天。只有今天,才是我們真實地擁...

加薪無罪,關鍵是定位

今天翻了一下4月份程式設計師雜誌中的一篇文章 加薪無罪,關鍵是定位 覺得這篇文章的來得很及時,文章開頭寫到 剛過春節的4月份,空氣中到處透著躁動的味道,求職 招聘 不斷刺激著程式設計師們的耳鼓,其實大多數跳槽者如果能靜下心來審視一下自己,是否覺得自己跳槽的理由太過簡單 僅僅為了更高的薪水.讓大多程式...