rman恢復spfile和control和resetlogs建立控制檔案和不完全恢復疑點
這些天太忙了,做的事情好瑣碎,不過磨練毅力啊。
由於在windows下啟動資料庫要先啟動資料庫服務的歷程,然後啟動資料庫
cmd>net start oracleserivetest
啟動資料庫服務test歷程
Cmd>sqlplus sys/oracle as sysdba
Startup
一直以為linux也和windows下啟動資料庫一樣,需要啟動服務和資料庫,今天看eygle在循序漸進書中說到linux下不存在資料庫服務這一說話,直接用spfile啟動資料庫就可以了。也難怪以前在手工建立資料庫中提到了oradim,而且此工具只在windows下能使用,是一個註冊服務的工具,在linux等平臺下無法使用。
Oradim –new –sid test
例項已經建立
其實windows下的提示幫助有點迷惑性,以為資料庫例項已經建立了,其實此時只是oracle資料庫在os上所對應的服務已經建立,例項的建立和啟動只是nomount狀態,由sga和後臺程式組成,所以好書值得精讀細讀,有時候前輩們提到的一兩點都值得好好推敲。
資料庫在nomount狀態時,此時丟失控制檔案。在rman中如果開啟控制檔案的自動備份功能,可以直接restore控制檔案。
Rman>restore controlfile to ‘d:control01.ctl’ from autobackup
同樣的可以從控制檔案的自動備份集中提取spfile的資訊
Rman>restore spfile to ‘d:spfiletest.ora’ from autobackup
如果此時缺少控制檔案自動備份集,可以嘗試手工建立控制檔案的指令碼
Create controlfile reuse databae “TEST” resetlogs archivelog
Maxlogfiles 10
Maxlogmembers 3
Maxdatafiles 100
Maxinstances 1
Logfile
‘d:oracleproduct10.2.0oradatatestredo01.log’,
‘d:oracleproduct10.2.0oradatatestredo02.log’,
‘d:oracleproduct10.2.0oradatatestredo03.log’
Datafile
‘d:oracleproduct10.2.0oradatatestsystem01.dbf’,
‘d:oracleproduct10.2.0oradatatestsysaux01.dbf’,
‘d:oracleproduct10.2.0oradatatestuntobs01.dbf’
character set ZHS16GBK
;
基本就是上面的指令碼規範,其實和建立資料庫的指令碼有相同的地方,不過確實也記不住。
如果資料庫控制檔案丟失,而且也沒有備份集,此時可以嘗試試著建立控制檔案然後利用歸檔日誌和線上重做日誌恢復資料庫。
Startup nomount
執行建立控制檔案的指令碼
如果是用resetlogs建立資料庫,oracle會認為當前日誌檔案全部損壞,此次資料庫恢復將是一次不完整恢復,介質恢復資料庫時必須指定using controlfile backup,一旦resetlogs開啟資料庫,oracle就會認為當前日誌檔案已經刪除。
Recover database using controlfile backup unitl cancel
透過控制檔案執行介質恢復
此時我們是recover database using controlfile backup,
Recover database恢復資料庫時:資料檔案的scn會以current controlfile為準,利用線上日誌的redo entry和archive log來恢復資料檔案的block資訊到當前控制檔案的scn。
Recover database using controlfile backup主要是為了把資料檔案block恢復到當前控制檔案所記錄的scn更靠後的位置,例如用backup controlfile或者createcontrolfile恢復資料檔案時可以把資料檔案的scn比當前控制檔案的scn的更後面一點,此時資料檔案就不會受控制檔案scn的限制,就侷限於你後面的until cancel或者until scn等和archive log ,redo log。
以下情況需使用using controlfile backup
1 使用resetlogs重建控制檔案後,noresetlogs不需要此時oracle認為當前日誌都已經損壞,恢復資料檔案要讓其到當前控制檔案scn靠後一點
2 使用備份的控制檔案恢復資料庫
Alter database open restlogs
以resetlogs重建ctl,開啟資料庫也要resetlogs,此時重做日誌開始重新計數。
如果資料庫無法nomount了,那麼可以去altersid.log下查詢資料庫啟動的具體引數,警告日誌會記錄具體的引數,然後手工建立一個pfile來啟動資料庫到nomount
以前nomount狀態細節解析提到了spfile需要的最少引數就是db_name。只要指定db_name就可以利用spfile啟動資料庫。
pfile內容 inittest.ora最少引數:
db_name=test
ramn>startup pfile=’d:oracleproduct10.2.0databaseinittest.ora’ nomount
如果有控制檔案自動備份集可以restore然後重新啟動資料庫
rman>restore spfile to ‘d:oracleproduct10.2..0databasespfiletest.ora’ from autobackup
rman>shutdown immediate
rman>startup;
也可以嘗試rman啟動預設例項
cmd>Rman target /
rman>startup nomount;
rman>restore spfile to ‘’ from autobackup;
不過這裡還是有點疑惑,首先不完全恢復是丟失當前日誌檔案,resetlogs開啟資料庫是因為:resetlogs重建控制檔案,利用備份的控制檔案,不完全恢復三種情況,既然resetlogs方式建立控制檔案oracle會認為當前控制日誌失效,那也就意味著丟失當前日誌檔案,恢復將是一次不完整恢復,但是此時當前日誌檔案確實存在且後面用於同步資料檔案,控制檔案等,此時就只是指定了一次resetlogs建立控制檔案,不應該是不完全恢復。
是否應該是resetlogs建立的控制檔案,轉儲新建的ctl發現ctl中記載的redo log全部都認為未使用,recover database using controlfile backup until cancel,此時控制檔案會按照archive log和當前redo log來同步,如果此時redo log缺少才是一次不完整的恢復,如果選擇auto,oracle會同步到最後一個archive log,redo log,也可以制定scn或者time來滿足此時控制檔案和資料檔案的scn同步,然後open resetlogs後oracle才會真正丟棄當前的redo log然後redo log開始重新計數,此時恢復由於有當前的redo log,是一次完整的資料庫恢復。
eygle提到的了,由於外界伺服器等因素導致資料庫意外關閉,而且又丟失當前redo log的恢復只能是一次不完整的恢復,意外關閉此時buffer cache並沒有寫進磁碟,記載事物的當前redo log丟失,只能是不完全恢復,不完全恢復要以resetlog開啟資料庫,但是resetlogs開啟資料庫並不是不完全恢復,很有可能只是resetlogs建立ctl或者利用備份的ctl,resetlogs建立ctl,open resetlogs時redo log重新計數,利用備份ctl,此時oracle在恢復階段也是利用log來恢復,最後同樣redo log開始重新計數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1054416/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 控制檔案快照和rman利用快照恢復
- RMAN恢復控制檔案
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- 恢復SPFILE檔案
- rman恢復--丟失控制檔案的恢復
- 使用rman恢復控制檔案
- 控制檔案的備份和恢復
- 12 使用RMAN備份和恢復檔案
- rman恢復方案和oracle異機恢復Oracle
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- RMAN恢復 執行重要檔案RMAN恢復
- Oracle 11g RAMN恢復-控制檔案的備份和恢復Oracle
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(三)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(二)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(一)
- 恢復控制檔案避免使用resetlogs選項
- 【實驗】從RMAN備份中恢復spfile檔案
- RMAN - "丟失控制檔案的恢復"
- rman恢復控制檔案測試--log
- 控制檔案丟失的RMAN恢復
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- 【rman 備份與恢復】恢復丟失所有的控制檔案
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- 控制檔案重建後的不完全恢復
- 控制檔案恢復—從trace檔案中恢復
- 使用RESETLOGS重建控制檔案恢復資料庫資料庫
- 所有控制檔案損壞的恢復--resetlogs方式
- 控制檔案恢復—從快照中恢復
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- RMAN全庫【完全恢復/不完全恢復brief version】
- RMAN 恢復之控制檔案篇(1/5)
- RMAN 恢復之控制檔案篇(2/5)
- RMAN 恢復之控制檔案篇(3/5)
- RMAN 恢復之控制檔案篇(4/5)
- RMAN 恢復之控制檔案篇(5/5)
- rman備份丟失控制檔案恢復