記錄一次停電導致的數據庫不完全恢復
記錄一次停電導致的數據庫不完全恢復
接到朋友電話,一臺windows+ora11g 數據庫由于停電導致數據庫啟動失敗;
記錄修復和走過的彎路;
遺憾:該數據庫未開歸檔,沒有備份,最后數據庫打開可能有數據丟失;
1、停電重啟系統后,冷備數據庫文件;
2、嘗試啟動數據庫,提示:
ORA-01079 Oracle database was not properly created, operation aborted
3、重建控制文件;
啟動數據庫到mount下;
第一次執行語句:
CREATE CONTROLFILE REUSE DATABASE "ora11g" RESETLOGS NOARCHIVELOG
………………
提示:
ORA-01192: must have at least one enabled thread
第二次創建控制文件,執行語句成功;
CREATE CONTROLFILE REUSE DATABASE "ora11g" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ('E:\app\Administrator\oradata\ora11g\REDO01.log') SIZE 51200K,
GROUP 2 ('E:\app\Administrator\oradata\ora11g\REDO02.log') SIZE 51200K,
GROUP 3 ('E:\app\Administrator\oradata\ora11g\REDO03.log') SIZE 51200K
-- STANDBY LOGFILE
DATAFILE
'E:\app\Administrator\oradata\ora11g\SYSTEM01.DBF',
'E:\app\Administrator\oradata\ora11g\UNDOTBS01.DBF'
CHARACTER SET US7ASCII;
4、嘗試修復數據庫:
recover database using backup controlfile;
將redo文件路徑放到提示命令行下,提示恢復失敗;
嘗試:alter database open resetlogs;
提示:system文件需要恢復,recover datafile system文件失敗;
嘗試多種方法,在system需要恢復的情況下打開數據庫,均失敗;
5、重新啟動數據庫到mount狀態,重新創建控制文件;
不recover database;直接alter database open resetlogs;
6、添加臨時文件;
alter TABLESPACE "CCEN_TMP" add TEMPFILE 'E:\app\Administrator\oradata\ora11g\CCEN_TMP.ora' SIZE 2g reuse AUTOEXTEND ON NEXT 1g maxsize 30g;
7、執行全庫備份;
有時間的琢磨的問題:
1、如何在system需要恢復的情況打開數據庫?
2、如何從數據文件直接獲取數據?
附錄:關于檢查點信息的;
ORA-01113問題的簡單分析
http://blog.itpub.net/23718752/viewspace-1742631/
http://blog.csdn.net/xingzhemoluo/article/details/39430487
http://blog.csdn.net/msdnchina/article/details/38169095
http://blog.csdn.net/msdnchina/article/details/38010025