使用備份的控制檔案(db物理結構已經變化)來恢復資料庫!
使用備份的控制檔案(db物理結構已經變化)來恢復資料庫!
感覺恢復的過程比較有意思
SQL> alter database backup controlfile to 'E:oracleproduct10.2.0oradataORCL
ctl_bakcontrol01.ctl';
Database altered.
SQL> create tablespace test datafile 'E:oracleproduct10.2.0oradataORCL est
.dbf' size 5m;
Tablespace created.
SQL> select group# , sequence# , status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 2 CURRENT
2 0 UNUSED
3 1 INACTIVE
SQL> create table t1(id int) tablespace test;
Table created.
SQL> insert into t1 values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select group# , sequence# , status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 2 ACTIVE
2 3 CURRENT
3 1 INACTIVE
SQL> insert into t1 values(2);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select group# , sequence# , status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 2 ACTIVE
2 3 ACTIVE
3 4 CURRENT
SQL> insert into t1 values(3);
1 row created.
SQL> commit;
Commit complete.
SQL> alter database backup controlfile to trace;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
--刪除當前所有控制檔案
--複製最上面備份的控制檔案回來,注意備份的控制檔案中並沒有記錄test.dbf
SQL> startup mount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 71304548 bytes
Database Buffers 92274688 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
SQL> alter database open ;
alter database open
*
第 1 行出現錯誤:
ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01152: 檔案 1 沒有從過舊的備份中恢復
ORA-01110: 資料檔案 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'
SQL> recover database using backup controlfile;
ORA-00279: 更改 244868 (在 09/16/2007 16:00:16 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 244868 (用於執行緒 1) 在序列 #2 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00283: 恢復會話因錯誤而取消
ORA-01244: 未命名的資料檔案由介質恢復新增至控制檔案
ORA-01110: 資料檔案 2: 'E:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF'
ORA-01112: 未啟動介質恢復
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01113: 檔案 1 需要介質恢復
ORA-01110: 資料檔案 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'
--我認為之所以能恢復過來的原因是執行了recover datafile 1;
SQL> recover datafile 1;
ORA-00283: 恢復會話因錯誤而取消
ORA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
在執行了recover datafile 1;之後再執行recover database using backup controlfile; oracle提示出“'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002”資訊,這是能恢復回來的關鍵!
SQL> recover database using backup controlfile;
ORA-00283: 恢復會話因錯誤而取消
ORA-01111: 資料檔案 2 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 2: 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002'
ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
ORA-01111: 資料檔案 2 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 2: 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002'
SQL> alter database rename file 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED0
0002' to 'E:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF';
資料庫已更改。
SQL> recover database using backup controlfile;
ORA-00279: 更改 244905 (在 09/16/2007 16:08:37 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 244905 (用於執行緒 1) 在序列 #2 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG
ORA-00279: 更改 244983 (在 09/16/2007 16:10:25 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 244983 (用於執行緒 1) 在序列 #3 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG'
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG'
ORA-01756: 引號內的字串沒有正確結束
SQL> recover database using backup controlfile;
ORA-00279: 更改 244983 (在 09/16/2007 16:10:25 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 244983 (用於執行緒 1) 在序列 #3 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG
ORA-00279: 更改 244992 (在 09/16/2007 16:10:47 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
4_%U_.ARC
ORA-00280: 更改 244992 (用於執行緒 1) 在序列 #4 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG'
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG'
ORA-01756: 引號內的字串沒有正確結束
SQL> recover database using backup controlfile;
ORA-00279: 更改 244992 (在 09/16/2007 16:10:47 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
4_%U_.ARC
ORA-00280: 更改 244992 (用於執行緒 1) 在序列 #4 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select * from t1;
ID
----------
1
2
3
...
SQL>
.
感覺恢復的過程比較有意思
SQL> alter database backup controlfile to 'E:oracleproduct10.2.0oradataORCL
ctl_bakcontrol01.ctl';
Database altered.
SQL> create tablespace test datafile 'E:oracleproduct10.2.0oradataORCL est
.dbf' size 5m;
Tablespace created.
SQL> select group# , sequence# , status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 2 CURRENT
2 0 UNUSED
3 1 INACTIVE
SQL> create table t1(id int) tablespace test;
Table created.
SQL> insert into t1 values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select group# , sequence# , status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 2 ACTIVE
2 3 CURRENT
3 1 INACTIVE
SQL> insert into t1 values(2);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select group# , sequence# , status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 2 ACTIVE
2 3 ACTIVE
3 4 CURRENT
SQL> insert into t1 values(3);
1 row created.
SQL> commit;
Commit complete.
SQL> alter database backup controlfile to trace;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
--刪除當前所有控制檔案
--複製最上面備份的控制檔案回來,注意備份的控制檔案中並沒有記錄test.dbf
SQL> startup mount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 71304548 bytes
Database Buffers 92274688 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
SQL> alter database open ;
alter database open
*
第 1 行出現錯誤:
ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01152: 檔案 1 沒有從過舊的備份中恢復
ORA-01110: 資料檔案 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'
SQL> recover database using backup controlfile;
ORA-00279: 更改 244868 (在 09/16/2007 16:00:16 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 244868 (用於執行緒 1) 在序列 #2 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00283: 恢復會話因錯誤而取消
ORA-01244: 未命名的資料檔案由介質恢復新增至控制檔案
ORA-01110: 資料檔案 2: 'E:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF'
ORA-01112: 未啟動介質恢復
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01113: 檔案 1 需要介質恢復
ORA-01110: 資料檔案 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'
--我認為之所以能恢復過來的原因是執行了recover datafile 1;
SQL> recover datafile 1;
ORA-00283: 恢復會話因錯誤而取消
ORA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
在執行了recover datafile 1;之後再執行recover database using backup controlfile; oracle提示出“'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002”資訊,這是能恢復回來的關鍵!
SQL> recover database using backup controlfile;
ORA-00283: 恢復會話因錯誤而取消
ORA-01111: 資料檔案 2 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 2: 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002'
ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案
ORA-01111: 資料檔案 2 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 2: 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002'
SQL> alter database rename file 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED0
0002' to 'E:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF';
資料庫已更改。
SQL> recover database using backup controlfile;
ORA-00279: 更改 244905 (在 09/16/2007 16:08:37 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 244905 (用於執行緒 1) 在序列 #2 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG
ORA-00279: 更改 244983 (在 09/16/2007 16:10:25 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 244983 (用於執行緒 1) 在序列 #3 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG'
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG'
ORA-01756: 引號內的字串沒有正確結束
SQL> recover database using backup controlfile;
ORA-00279: 更改 244983 (在 09/16/2007 16:10:25 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 244983 (用於執行緒 1) 在序列 #3 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG
ORA-00279: 更改 244992 (在 09/16/2007 16:10:47 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
4_%U_.ARC
ORA-00280: 更改 244992 (用於執行緒 1) 在序列 #4 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG'
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG'
ORA-01756: 引號內的字串沒有正確結束
SQL> recover database using backup controlfile;
ORA-00279: 更改 244992 (在 09/16/2007 16:10:47 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_
4_%U_.ARC
ORA-00280: 更改 244992 (用於執行緒 1) 在序列 #4 中
指定日誌: {=suggested | filename | AUTO | CANCEL}
E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select * from t1;
ID
----------
1
2
3
...
SQL>
.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-61729/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 控制檔案丟失恢復例項(2) - 控制檔案備份後物理結構未變化
- 使用備份的控制檔案恢復資料庫資料庫
- 控制檔案丟失恢復例項(1) - 控制檔案備份後物理結構發生變化
- 使用舊的控制檔案備份來恢復控制檔案
- rman恢復資料庫--用備份的控制檔案資料庫
- 用物理備庫的檔案來恢復主庫
- Oracle資料庫控制檔案在備份恢復中的作用Oracle資料庫
- 備份與恢復--利用備份的控制檔案恢復
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- 利用備份的控制檔案恢復
- 控制檔案的備份和恢復
- 備份與恢復系列 十一 控制檔案的備份與恢復
- 【恢復】使用控制檔案的trace備份恢復因異常斷電導致所有控制檔案損壞的資料庫故障資料庫
- DB2的資料庫備份與恢復DB2資料庫
- DB2資料庫的備份和恢復DB2資料庫
- db2備份和恢復資料庫DB2資料庫
- 無備份恢復(歸檔模式)已刪除資料檔案模式
- 【備份恢復】從備份恢復資料庫資料庫
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- Oracle備份與恢復系列(四)複製資料庫 使用原有的控制檔案Oracle資料庫
- 備份與恢復--重新控制檔案資料字典和控制檔案不一致的恢復
- 【備份恢復】 控制檔案多路徑
- 備份與恢復--重建控制檔案
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- 【備份恢復】無備份線上恢復非關鍵資料檔案
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- 無備份丟失部分資料檔案和控制檔案恢復 [轉]
- 使用RMAN備份集和過時的控制檔案進行資料庫的恢復(2/2)資料庫
- 使用RMAN備份集和過時的控制檔案進行資料庫的恢復(1/2)資料庫
- 資料庫備份與恢復(使用歸檔後滾)資料庫
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle