您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“使用using backup controlfile恢復db之后為什么需要resetlogs”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“使用using backup controlfile恢復db之后為什么需要resetlogs”這篇文章吧。
這個問題我想可能不僅僅困撓我一個人,不過很多時候我們卻又解釋不清,覺得oracle似乎使用using backup controlfile恢復db之后沒必要resetlogs,但是我覺得resetlogs似乎又有些道理...
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
--冷備份
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> select group#,status,sequence# ,archived,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC FIRST_CHANGE#
---------- ---------------- ---------- --- -------------
1 CURRENT 2 NO 1090927
2 INACTIVE 1 YES 1090926
3 UNUSED 0 YES 0
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
數據庫裝載完畢。
--目前controlfile是最新的,如果controlfile不損壞,查看一下db能最終恢復到的scn是1092089
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092089
3 1092089
4 1092089
7 1092089
SQL>
SQL> shutdown immediate
ORA-01109: 數據庫未打開
已經卸載數據庫。
ORACLE 例程已經關閉。
--刪除了controlfile和datafile,拷貝備份時的controlfile和datafile
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
數據庫裝載完畢。
ORA-00314: 日志 1 (用于線程 1) 要求的序號 與 不匹配
ORA-00312: 聯機日志 1 線程 1: 'D:ORADATATESTREDO01.LOG'
SQL> recover database using backup controlfile;
ORA-00279: 更改 1091621 (在 07/31/2010 14:33:23 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 1091621 (用于線程 1) 在序列 #2 中
指定日志: {
auto
ORA-00279: 更改 1091764 (在 07/31/2010 14:35:30 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 1091764 (用于線程 1) 在序列 #3 中
ORA-00278: 此恢復不再需要日志文件
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1
_2_6595S2CQ_.ARC'
ORA-00279: 更改 1091766 (在 07/31/2010 14:35:31 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
4_%U_.ARC
ORA-00280: 更改 1091766 (用于線程 1) 在序列 #4 中
ORA-00278: 此恢復不再需要日志文件
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1
_3_6595S400_.ARC'
ORA-00279: 更改 1091769 (在 07/31/2010 14:35:36 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
5_%U_.ARC
ORA-00280: 更改 1091769 (用于線程 1) 在序列 #5 中
ORA-00278: 此恢復不再需要日志文件
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1
_4_6595S8RF_.ARC'
ORA-00279: 更改 1091771 (在 07/31/2010 14:35:37 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
6_%U_.ARC
ORA-00280: 更改 1091771 (用于線程 1) 在序列 #6 中
ORA-00278: 此恢復不再需要日志文件
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1
_5_6595S9TC_.ARC'
ORA-00279: 更改 1091774 (在 07/31/2010 14:35:43 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
7_%U_.ARC
ORA-00280: 更改 1091774 (用于線程 1) 在序列 #7 中
ORA-00278: 此恢復不再需要日志文件
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1
_6_6595SHSW_.ARC'
ORA-00308: 無法打開歸檔日志
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1
_7_%U_.ARC'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。
SQL>
SQL> recover database using backup controlfile;
ORA-00279: 更改 1091774 (在 07/31/2010 14:35:43 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
7_%U_.ARC
ORA-00280: 更改 1091774 (用于線程 1) 在序列 #7 中
指定日志: {
D:oradatatestredo01.log
ORA-00310: 歸檔日志包含序列 5; 要求序列 7
ORA-00334: 歸檔日志: 'D:ORADATATESTREDO01.LOG'
SQL> recover database using backup controlfile;
ORA-00279: 更改 1091774 (在 07/31/2010 14:35:43 生成) 對于線程 1 是必需的
ORA-00289: 建議:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
7_%U_.ARC
ORA-00280: 更改 1091774 (用于線程 1) 在序列 #7 中
指定日志: {
D:oradatatestredo02.log
已應用的日志。
完成介質恢復。
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092088
3 1092088
4 1092088
7 1092088
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092088
3 1092088
4 1092088
7 1092088
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
--=======================================
--最終db恢復到了1092088,和完全恢復到的scn1092089僅僅相差了1,難道相差1這就是使用using backup controlfile恢復db之后需要resetlogs的理由?其實我覺得肯定不是,之所以需要resetlogs
的原因是controlfile里記錄了大量的和redo相關的信息,現在最新的controlfile損壞之后,很多有關
redo的信息不明確了,這可能是最終使用using backup controlfile恢復db之后需要resetlogs的理由
畢竟oracle 打開db使用的是resetlogs而不是resetscn...
--=======================================
SQL> alter database open resetlogs;
數據庫已更改。
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092091
3 1092091
4 1092091
7 1092091
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092091
3 1092091
4 1092091
7 1092091
SQL>
以上是“使用using backup controlfile恢復db之后為什么需要resetlogs”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。