亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1619 | 回復: 0
打印 上一主題 下一主題

[容災] Oracle數(shù)據(jù)庫的災難恢復 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-09-17 11:51 |只看該作者 |倒序瀏覽

                【轉(zhuǎn)自】http://www.sysvs.com/bbs/dispbbs.asp?boardID=50&ID=40044&page=1
Oracle數(shù)據(jù)庫的災難恢復

著辦公自動化和電子商務的飛速發(fā)展,企業(yè)對信息系統(tǒng)的依賴性越來越高,數(shù)據(jù)庫作為信息系統(tǒng)的核心擔當著重要的角色。尤其在一些對數(shù)據(jù)可靠性要求很高的行業(yè)
如銀行、證券、電信等,如果發(fā)生意外停機或數(shù)據(jù)丟失其損失會十分慘重。為此數(shù)據(jù)庫管理員應針對具體的業(yè)務要求制定詳細的數(shù)據(jù)庫備份與災難恢復策略,并通過
模擬故障對每種可能的情況進行嚴格測試,只有這樣才能保證數(shù)據(jù)的高可用性。數(shù)據(jù)庫的備份是一個長期的過程,而恢復只在發(fā)生事故后進行,恢復可以看作是備份
的逆過程,恢復的程度的好壞很大程度上依賴于備份的情況。此外,數(shù)據(jù)庫管理員在恢復時采取的步驟正確與否也直接影響最終的恢復結(jié)果,本文主要針對
Oracle數(shù)據(jù)庫可能遇到的各種故障提供了相應的恢復的方法,僅供大家參考。
要對Oracle數(shù)據(jù)庫備份與恢復有清晰的認識,首先有必要對數(shù)據(jù)庫的幾種運行狀態(tài)有充分的了解。Oracle數(shù)據(jù)庫的運行狀態(tài)主要分為3種,他們依次為:
l Nomount(非安裝)Oracle只是讀取ini文件中的配置信息,并初始化SGA區(qū)。
l Mount(安裝)Oracle除了需要讀取ini文件還要讀取控制文件,并從中獲取有關數(shù)據(jù)庫的物理結(jié)構(gòu)等信息。
l Open(打開)數(shù)據(jù)庫要檢查所有文件處于同一時間點,對錯誤進行恢復對未完成事務回滾,并最終可以允許用戶訪問。
數(shù)據(jù)庫的備份主要分為三種類型:冷備份;熱備份;邏輯備份;
數(shù)據(jù)庫的備份不是本文討論的重點,在這里只作一個概要的介紹,Oracle數(shù)據(jù)庫備份主要有:
l Cold Backup(冷備份) 主要指在關閉數(shù)據(jù)庫的狀態(tài)下進行的數(shù)據(jù)庫完全備份,備份內(nèi)容包括所有數(shù)據(jù)文件、控制文件、聯(lián)機日志文件、ini文件。
l Hot Backup(熱備份) 指在數(shù)據(jù)庫處于運行狀態(tài)下,對數(shù)據(jù)文件和控制文件進行備份,要使用熱備份必須將數(shù)據(jù)庫運行在(Archive Log)歸檔方式下。
l Export(邏輯備份)這是最簡單的備份方法,可按數(shù)據(jù)庫中某個表、某個用戶或整個數(shù)據(jù)庫來導出,并且支持全部、累計、增量三種方式。使用這種方法,數(shù)據(jù)庫必須處于打開狀態(tài),而且如果數(shù)據(jù)庫不是在restrict狀態(tài)將不能保證導出數(shù)據(jù)的一致性。
數(shù)據(jù)庫的恢復可分為兩大類:完全恢復;不完全恢復;
完全恢復指將數(shù)據(jù)庫恢復到發(fā)生故障的時間點,不丟失任何數(shù)據(jù)。不完全恢復指將數(shù)據(jù)庫恢復到發(fā)生故障前的某一個時間點,此時間點以后的所有改動將會丟失。如果沒有特殊需求,我們建議應盡量使用完全恢復。
Oracle
數(shù)據(jù)庫的恢復過程分兩步進行,首先將把存放在重做日志文件中的所有重做運用到數(shù)據(jù)文件,之后對重做中所有未提交的事務進行回滾,這樣所有數(shù)據(jù)就恢復到發(fā)生
災難那一時刻了。數(shù)據(jù)庫的恢復只能在發(fā)生故障之前的數(shù)據(jù)文件上運用重做,將其恢復到故障時刻,而不能將數(shù)據(jù)文件反向回滾到之前的某一個時刻。舉個例子,我
們有一個2001/1/1的數(shù)據(jù)庫備份,當2001/5/1使我們發(fā)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)發(fā)生混亂,希望將數(shù)據(jù)庫恢復到2001/4/30時的狀態(tài),我們只能先
恢復2001/1/1的數(shù)據(jù)庫備份然后在其上運用重做記錄使其前滾到2001/4/30時的狀態(tài),而不能將2001/5/1的數(shù)據(jù)庫向后回滾到
2001/4/30。
為了系統(tǒng)的設計數(shù)據(jù)庫的恢復方案,我們先對可能遇到的錯誤進行分類,Oracle數(shù)據(jù)庫錯誤主要分為5大類:
l SQL語句失敗
l 線程失敗
l 實例失敗
l 用戶操作失敗
l 存儲設備失敗

果發(fā)生前三種失敗,不需要我們?nèi)藶楦缮,Oracle系統(tǒng)會自動進行恢復。對于用戶操作型的失敗(如誤刪除數(shù)據(jù)),我們采取的補救措施主要有導入最新的邏
輯備份或進行到某一時間點的不完全恢復。從Oracle
8之后的新版本中引入了基于表空間的時間點恢復(TSPITR),可以單獨將包含錯誤操作的表空間恢復到指定時間,而不必對整個數(shù)據(jù)庫進行不完全恢復。當
錯誤操作發(fā)現(xiàn)比較及時而且數(shù)據(jù)量不大的情況下也可以考慮使用logminer生成反向SQL。
針對存儲設備的失敗的情況比較復雜也是本文討論的重點,存儲設備的失敗必然會使放置在其上的文件變?yōu)椴豢捎,我們先將Oracle數(shù)據(jù)庫所涉及到的文件進行一個劃分,主要可分為:
l Oracle的系統(tǒng)文件,指Oracle的運行文件,各種應用程序
l 數(shù)據(jù)庫控制文件
l 數(shù)據(jù)庫聯(lián)機重做日志文件
l 數(shù)據(jù)文件
l 歸檔日志文件
避免第一種文件失敗主要依賴系統(tǒng)管理員進行操作系統(tǒng)級的備份,當發(fā)生事故后只能依靠操作系統(tǒng)備份將其恢復。

制文件中記錄著整個數(shù)據(jù)庫的結(jié)構(gòu)、每個數(shù)據(jù)文件的狀況、系統(tǒng)SCN、檢查點計數(shù)器等重要信息,在創(chuàng)建數(shù)據(jù)庫時會讓用戶指定三個位置來存放控制文件,他們之
間互為鏡像,當其中任何一個發(fā)生故障,只需將其從ini文件中注釋掉故障數(shù)據(jù)文件就可重新將數(shù)據(jù)啟動。當所有控制全部失效時,可以在Nomount模式下
執(zhí)行create controlfile來重新生成控制文件,但必須提供redo log,data
file,文件名和地址以及MAXLOGFILES,MAXDATAFILES,MAXINSTANCES等信息。如果失敗之前運行過alter
database backup controlfile to trace或alter database backup controlfile
to ‘xxx’對控制文件作備份,恢復時可使用生成的腳本來重建或用備份文件覆蓋,如果使用了舊的控制文件在恢復時要使用recover xxx
using backup controlfile選項來進行恢復,并使用resetlogs選項來打開數(shù)據(jù)庫。
如果丟失的是聯(lián)機日志文件,分兩種情況處理1、丟失的是非活動的日志文件;2、丟失的是當前激活的日志文件。

果是第一種情況,而發(fā)生故障的日志文件組又具有多個成員,可以先將數(shù)據(jù)庫shutdown,然后用操作系統(tǒng)命令將損壞日志文件組中好的日志成員文件把損壞
的成員文件覆蓋(在同一個日志成員組中的所有日志文件的各為鏡象的),如果其物理位置不可用可將其拷貝到新的驅(qū)動器上,使用alter
database rename file ‘xxxx’ to
‘xxxx’改變文件位置,之后啟動數(shù)據(jù)庫,如果正常馬上進行一個冷備份。如果損壞的日志組中只有一個日志成員,先mount上數(shù)據(jù)庫,將其轉(zhuǎn)換為
noarchivelog模式,執(zhí)行alter database add logfile member ‘xxx’ to group
‘x’給相關組增加一個成員,再執(zhí)行alter database drop logfile member
‘bad_file’將損壞的日志文件刪除,由于數(shù)據(jù)庫的結(jié)構(gòu)發(fā)生變動需要備份控制文件,之后將數(shù)據(jù)庫改回archivelog模式,做一個冷備份。

果丟失的是當前激活的日志文件,數(shù)據(jù)庫又沒有鏡像而且當前日志組中所有成員均變?yōu)椴豢捎。首先將?shù)據(jù)庫shutdown
abort,從最近的一次全備份中恢復所有的數(shù)據(jù)文件,將數(shù)據(jù)庫啟動到mount狀態(tài)。如果原來的日志文件物理位置不可用,使用alter
database rename file ‘xxx’ to ‘xxx’改變文件的存放位置。然后,使用recover database
until cancel命令來恢復數(shù)據(jù)庫,直到提示最后一個歸檔日志運用完之后,輸入cancel。之后用alter database open
resetlogs打開數(shù)據(jù)庫,如果沒有問題,立即進行一個冷備份。注意!所有包含在損壞的redo
log中的信息將會丟失,也就是說數(shù)據(jù)庫崩潰前已經(jīng)提交的數(shù)據(jù)有可能會丟失。這對于某些要求很高的應用將會損失慘重,因此應盡量使每個日志組具有多個日志
成員,并且放置在不同的驅(qū)動器上一防止發(fā)生介質(zhì)故障。
數(shù)據(jù)文件發(fā)生故障的情況也分為多種情況,1、丟失包含在SYSTEM表空間的數(shù)據(jù)文件;2、丟失沒有回滾段的非SYSTEM數(shù)據(jù)文件;3、丟失有回滾段的非SYSTEM數(shù)據(jù)文件。

果損壞的是系統(tǒng)表空間的數(shù)據(jù)文件。唯一的辦法是從上一次備份中恢復受損的數(shù)據(jù)文件,(如果原位置不可用使用alter database
rename命令改變新文件的位置),之后在數(shù)據(jù)庫mount的狀態(tài)下執(zhí)行recover
database/datafile對數(shù)據(jù)庫進行回復,才能將數(shù)據(jù)庫打開。注意:當SYSTEM表空間或其中的數(shù)據(jù)文件脫機,數(shù)據(jù)庫是無法被打開的,因此
必須在mount狀態(tài)下將所有的恢復工作完成。
當丟失的數(shù)據(jù)文件不屬于系統(tǒng)表空間而且也不包含回滾段時,有可選擇在數(shù)據(jù)庫的兩種狀態(tài)
下進行恢復---在數(shù)據(jù)庫open的狀態(tài)或者在數(shù)據(jù)庫mount的狀態(tài)。如果用戶急于訪問數(shù)據(jù)庫中未受損部分的數(shù)據(jù)或?qū)p壞的數(shù)據(jù)文件進行恢復需要很長時
間,可以先使受損的數(shù)據(jù)文件脫機,將數(shù)據(jù)庫打開給用戶訪問,再恢復受損的數(shù)據(jù)文件最后將其聯(lián)機。步驟如下:先在數(shù)據(jù)庫mount時,將相關的數(shù)據(jù)文件或表
空間進行脫機alter database datafile xxx
offline,然后將數(shù)據(jù)庫open,這樣就能使數(shù)據(jù)庫未受損的部分先供用戶訪問,之后再進行recover
datafile/tablespace,完成后用alter database datafile/tablespace ‘xxx’
online使其恢復聯(lián)機就可被訪問了。 當然用戶也可以選擇在數(shù)據(jù)庫mount狀態(tài)下,用recover
database/datafile將所有的恢復工作做完,將所有數(shù)據(jù)文件一起打開供用戶訪問。
如果丟失的數(shù)據(jù)文件是最后一種情況,
即包含有回滾段的非系統(tǒng)表空間數(shù)據(jù)文件。也可以選擇是在數(shù)據(jù)庫先open的狀態(tài)還是在mount狀態(tài)下恢復。不過與上一種情況不同的是當包含回滾段的數(shù)據(jù)
文件損壞時,如果使其先offline將數(shù)據(jù)庫打開,那么所有數(shù)據(jù)庫崩潰前未提交的事務涉及到的表將無法訪問,也就是說在回滾段恢復前其中涉及的對象都不
允許被訪問。而且當所有包含回滾段的數(shù)據(jù)文件都在offline狀態(tài)時,數(shù)據(jù)庫無法進行任何DML操作,因此在數(shù)據(jù)庫open狀態(tài)恢復包含回滾段的數(shù)據(jù)文
件時,可以先創(chuàng)建幾個臨時回滾段供數(shù)據(jù)使用create rollback segment temp1 tablespace system;
alter rollback segment temp1 online;,當數(shù)據(jù)文件恢復后再將他們刪除alter rollback
segment temp1 offline; drop rollback segment
temp1;。注意:當用這種方法使恢復的數(shù)據(jù)文件online之后,所有的原有回滾段將處于offline狀態(tài),必須手工使用alter
rollback segment RBSxx
online;使他們恢復聯(lián)機狀態(tài),這樣才能被數(shù)據(jù)庫正常使用。如果在數(shù)據(jù)庫mount狀態(tài)下完成所有恢復,則不需要上述步驟。
如果
丟失數(shù)據(jù)文件后,用戶發(fā)現(xiàn)沒有故障前的數(shù)據(jù)文件的備份,而且自從丟失的數(shù)據(jù)文件最早建立之后一直沒有使用過resetlogs選項打開過數(shù)據(jù)庫。也就是說
用戶的控制文件是在損壞的數(shù)據(jù)文件建立前創(chuàng)建的,歸檔日志中包括對損壞數(shù)據(jù)文件的所有重做記錄。用戶就還有一種恢復方法,用戶可以先將損壞的數(shù)據(jù)文件或表
空間脫機alter database datafile / tablespace xxx offline,之后執(zhí)行alter database
create datafile ‘new/xxx.dbf’ as
‘old/xxx.dbf’,數(shù)據(jù)庫會根據(jù)保存在控制文件中的信息重建一個空的數(shù)據(jù)文件,之后再執(zhí)行recover tablespace /
datafile將所有重做記錄運用到數(shù)據(jù)文件,使其完全恢復到當前狀態(tài),之后便可再將其恢復聯(lián)機。
如果丟失的是最后一種文件---
歸檔文件或歸檔文件所處的物理位置不可用,首先shutdown數(shù)據(jù)庫,立即作一個冷備份。然后修改ini文件中的歸檔日志文件目的路徑,重新啟動數(shù)據(jù)
庫。以后再發(fā)生災難只需從最新的備份中將相關文件恢復,數(shù)據(jù)庫作recover時就不需要備份之前丟失的歸檔文件了。在Oracle
8之后的新版本中提供了log_archive_duplex_dest和log_archive_dest_1...5等參數(shù)允許保留多份歸檔文件到不
同位置,甚至到遠端服務器從而保證歸檔文件的可靠性。
               
               
               
               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/48334/showart_383587.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP