記一次簡單的資料庫恢復,控制檔案不一致導致的啟動失敗。
很可惜,我沒能儲存一開始的報錯資訊(alert檔案竟然沒記錄)。報錯在mount階段,報錯的意思是控制檔案2與控制檔案1不一致,2比1版本更高。資料庫的損壞是由於非法斷電導致的。
修改引數檔案pfile,只保留控制檔案2,啟動資料庫。
SQL> conn / as sysdba
已連線。
SQL> create pfile from spfile;
檔案已建立。
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位於第 1 行:
ORA-32002: ??????????? SPFILE
可以猜到報錯為不能建立正在使用的SPFILE。當然可也修改nls_language設定語言。
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已經關閉。
SQL> create spfile from pfile;
檔案已建立。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01113: 檔案 1 需要介質恢復
ORA-01110: 資料檔案 1: 'D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF'
SQL> select status from v$datafile;
STATUS
-------
SYSTEM
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
已選擇10行。
SQL> recover datafile 1;
完成介質恢復。
SQL> alter database open;
alter database open
*
ERROR 位於第 1 行:
ORA-01113: 檔案 2 需要介質恢復
ORA-01110: 資料檔案 2: 'D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF'
SQL> recover database;
完成介質恢復。
注意這裡是完全恢復,恢復成功了,說明應用日誌完全了,不存在丟失。
SQL> alter database open;
alter database open
*
ERROR 位於第 1 行:
ORA-00314: 日誌 2 (執行緒 1),預計序號 與 不匹配
ORA-00312: 聯機日誌 2 執行緒 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'
ORA-00314說明Cause: The online log is corrupted or is an old version.既然是完全恢復的,我們可以resetlogs,不會造成丟失。
SQL> select * from v$Log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 320 104857600 1 NO INVALIDATED
47548236 06-7月 -10
2 1 318 104857600 1 NO INACTIVE
47366790 05-7月 -10
3 1 319 104857600 1 NO INACTIVE
47386928 05-7月 -10
SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
修改引數檔案pfile,只保留控制檔案2,啟動資料庫。
SQL> conn / as sysdba
已連線。
SQL> create pfile from spfile;
檔案已建立。
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位於第 1 行:
ORA-32002: ??????????? SPFILE
可以猜到報錯為不能建立正在使用的SPFILE。當然可也修改nls_language設定語言。
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已經關閉。
SQL> create spfile from pfile;
檔案已建立。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01113: 檔案 1 需要介質恢復
ORA-01110: 資料檔案 1: 'D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF'
SQL> select status from v$datafile;
STATUS
-------
SYSTEM
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
已選擇10行。
SQL> recover datafile 1;
完成介質恢復。
SQL> alter database open;
alter database open
*
ERROR 位於第 1 行:
ORA-01113: 檔案 2 需要介質恢復
ORA-01110: 資料檔案 2: 'D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF'
SQL> recover database;
完成介質恢復。
注意這裡是完全恢復,恢復成功了,說明應用日誌完全了,不存在丟失。
SQL> alter database open;
alter database open
*
ERROR 位於第 1 行:
ORA-00314: 日誌 2 (執行緒 1),預計序號 與 不匹配
ORA-00312: 聯機日誌 2 執行緒 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'
ORA-00314說明Cause: The online log is corrupted or is an old version.既然是完全恢復的,我們可以resetlogs,不會造成丟失。
SQL> select * from v$Log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 320 104857600 1 NO INVALIDATED
47548236 06-7月 -10
2 1 318 104857600 1 NO INACTIVE
47366790 05-7月 -10
3 1 319 104857600 1 NO INACTIVE
47386928 05-7月 -10
SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-667413/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 控制檔案版本不一致下恢復資料庫資料庫
- 備份與恢復--重新控制檔案資料字典和控制檔案不一致的恢復
- sock鎖檔案導致的MySQL啟動失敗MySql
- 磁碟損壞導致資料檔案丟失的恢復
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- Oracle 資料庫不一致導致異常的恢復Oracle資料庫
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 儲存互斥失敗導致資料丟失的資料恢復成功案例資料恢復
- 【恢復】使用控制檔案的trace備份恢復因異常斷電導致所有控制檔案損壞的資料庫故障資料庫
- 【伺服器資料恢復】異常斷電導致虛擬機器檔案丟失不能啟動的資料恢復案例伺服器資料恢復虛擬機
- 【原創】模擬控制檔案丟失的資料庫恢復資料庫
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 丟失一個控制檔案並恢復資料庫資料庫
- 資料庫檔案壞塊損壞導致開啟時報錯的恢復方法資料庫
- 恢復丟失的控制檔案
- 記錄一次停電導致的資料庫不完全恢復資料庫
- 引數檔案控制檔案和資料檔案丟失的恢復
- 【資料庫資料恢復】LINUX EXT3檔案系統下ORACLE資料庫誤操作導致資料丟失的資料恢復案例資料庫資料恢復LinuxOracle
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- 【伺服器資料恢復】Raid5熱備盤同步失敗導致檔案系統不可用的資料恢復案例伺服器資料恢復AI
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 資料檔案丟失的恢復
- RMAN基於備份控制檔案恢復失敗
- 【伺服器資料恢復】SAN LUN對映出錯導致檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 使用備份的控制檔案恢復資料庫資料庫
- 控制檔案全部丟失的恢復
- 控制檔案部分丟失的恢復
- 控制檔案丟失的RMAN恢復
- 恢復測試:擁有當時的全部歸檔,控制檔案,恢復丟失的資料檔案。
- 【備份恢復】 控制檔案之版本不一致 之恢復操作
- 【北亞資料庫資料恢復】誤操作導致資料丟失的華為雲mysql資料恢復案例資料庫資料恢復MySql
- 【北亞資料恢復】vmfs還原快照操作導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- DG修復:異常關庫導致的資料庫啟動失敗ORA-01110及GAP修復資料庫
- 【伺服器資料恢復】虛擬機器檔案丟失導致Hyper-V癱瘓的資料恢復伺服器資料恢復虛擬機
- 伺服器資料恢復—重灌系統導致XFS檔案系統分割槽丟失的資料恢復案例伺服器資料恢復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 啟動SCN不一致的資料庫資料庫