Oracle只有數(shù)據(jù)文件恢復數(shù)據(jù)庫
恢復前準備工作
1?備份數(shù)據(jù)文件,文件路徑為%ORACLE_NOME%/oradata/xxxx(xxxx為數(shù)據(jù)庫實例)
2備份ORACLE安裝路徑下的D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_xxxx.log
(xxxx為數(shù)據(jù)庫實例)
?恢復步驟
1安裝oracle數(shù)據(jù)庫,安裝時不要創(chuàng)建數(shù)據(jù)庫實例
2創(chuàng)建數(shù)據(jù)庫實例:安裝完成后創(chuàng)建數(shù)據(jù)庫實例,實例名與原數(shù)據(jù)庫實例相同,并創(chuàng)建
監(jiān)聽服務。
3拷貝數(shù)據(jù)文件:停止oracle相關服務,拷貝備份的數(shù)據(jù)文件(包括數(shù)據(jù)文件及日志文件)到新安裝的oracle數(shù)據(jù)庫
安裝位置對應路徑下,刪除新成的控制文件及日志文件(%ORACLE_NOME%/oradata/下所有文件)、完成后重啟oracle相關服務。
4準備重建控制文件腳本:打開事先備份的alert_XXX.log文件,查找最后一個create controlfile語句并修改以下部分
若該語句中包含NORESETLOGS,則將其改為RESETLOGS;原因是重做日志文件已經丟失。
LOGFILE段是指重做日志文件到期望的文件位置。
DATAFILE段是指定到數(shù)據(jù)文件的實際文件位置。不能包含臨時表空間用到的文件,否則報錯(ora-01503,ora-01160,ora-01110)
注意:creat controlfile語句中如果包含NOARCHIVELOG,則為非歸檔模式,如為ARCHIVELOG,則為歸檔模式,沒有則保持沒有。
5重建控制文件
打開sqlplus 使用DBA登錄數(shù)據(jù)庫
關閉數(shù)據(jù)庫
示例:SQL>shutdown immediate;
啟動數(shù)據(jù)庫,但不掛載數(shù)據(jù)文件
示例:SQL>startup nomount;
重建控制文件,執(zhí)行準備好的重建控制文件腳本
示例;
Create controlfilereuse set database "orcl"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
Datafile
'd:\app\Administrator\oradata\orcl\SYSTEM01.DBF',
'd:\app\Administrator\oradata\orcl\SYSAUX01.DBF',
'd:\app\Administrator\oradata\orcl\UNDOTBS01.DBF',
'd:\app\Administrator\oradata\orcl\USERS01.DBF',
'd:\app\Administrator\oradata\orcl\ZWILLING_USERS.DBF'
LOGFILE GROUP 1('d:\app\Administrator\oradata\orcl\redo01.log') SIZE 51200K,
GROUP 2 ('d:\app\Administrator\oradata\orcl\redo02.log')SIZE 51200K,
GROUP 3('d:\app\Administrator\oradata\orcl\redo03.log') SIZE 51200K RESETLOGS;
帶resetlogs參數(shù)啟動數(shù)據(jù)庫,重新生成重做日志文件
SQL>alter database open resetlogs
注意:執(zhí)行啟動數(shù)據(jù)庫時報錯(ORA-01194,ORA-01110),解決辦法:recover重做日志文件。
示例:SQL>recover database using backup controlfile until cancel;回車,當提示Specifylog:{=suggested|filename|AUTO|CANCEL}
輸入日志文件地址如:d:\app\Administrator\oradata\orcl\redo01.log
日志文件redo01.log還有錯誤,繼續(xù)SQL>alter database open resetlogs;
SQL>recoverdatabase using backup controlfile until cancel;
輸入日志文件地址如:d:\app\Administrator\oradata\orcl\redo02.log
提示介質恢復完成,
使用帶resetlogs參數(shù)啟動數(shù)據(jù)庫SQL>alter database open resetlogs
6添加臨時表空間
示例:
SQL>altertablespace temp add tempfile
2 'd:\app\Administrator\oradata\orcl\TEMP01.DBF' reuse;
7測試:退出sqlplus,重啟數(shù)據(jù)庫服務,使用原數(shù)據(jù)庫普通用戶的用戶名密碼登錄;