Oracle為什麼使用備份的控制檔案恢復後一定要resetlogs
SQL> alter database open RESETLOGS;
因為,控制檔案不是最新的,開啟到mount狀態後,這時可以查尋select * from v$log,但是v$log.status和v$log.SEQUENCE#不一定是準確的,控制檔案中當前線上日誌序列號還是陳舊的,是當初備份時的,而控制檔案備份後online redo log可能進行了多次切換, 因為此時資料庫還是mount狀態,就算recover日誌後,無法把recover的改動資訊寫入控制檔案,這樣控制檔案中當前線上日誌序列號還是當初備份時刻的,若按常規方式開啟,會報錯。所以只要是控制檔案是恢復或重建過來的,oracle一律採用RESETLOGS重設日誌功能,日誌序列號從1重新開始,雖然使用resetlogs,但是recover命令成功執行已經提交的事務事務是不會丟失。
SQL> startup
ORACLE instance started.
Total System Global Area 1272213504 bytes
Fixed Size 1344680 bytes
Variable Size 838863704 bytes
Database Buffers 419430400 bytes
Redo Buffers 12574720 bytes
Database mounted.
Database opened.
SQL> select GROUP#,THREAD#,SEQUENCE#,STATUS from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ------
1 1 31 INACTIVE
2 1 32 CURRENT
3 1 30 INACTIVE
SQL> alter database backup controlfile to '/home/oracle/control';
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> ! ls /u01/app/oracle/oradata/OCP/control*
/u01/app/oracle/oradata/OCP/control01.ctl
/u01/app/oracle/oradata/OCP/control02.ctl
SQL> select GROUP#,THREAD#,SEQUENCE#,STATUS from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------
1 1 31 INACTIVE
2 1 32 ACTIVE
3 1 33 CURRENT
SQL> ! rm -f /u01/app/oracle/oradata/OCP/control*
SQL> ! ls /u01/app/oracle/oradata/OCP/control*
ls: /u01/app/oracle/oradata/orcl/control*: No such file or directory
SQL> startup force
ORACLE instance started.
Total System Global Area 1272213504 bytes
Fixed Size 1344680 bytes
Variable Size 838863704 bytes
Database Buffers 419430400 bytes
Redo Buffers 12574720 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> ! cp /home/oracle/control /u01/app/oracle/oradata/OCP/control01.ctl
SQL> ! cp /home/oracle/control /u01/app/oracle/oradata/OCP/control02.ctl
SQL> alter database mount;
Database altered.
SQL> select GROUP#,THREAD#,SEQUENCE#,STATUS from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------
1 1 31 INACTIVE
3 1 30 INACTIVE
2 1 32 CURRENT
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/OCP/system01.dbf'
SQL> recover database using backup controlfile;
ORA-00279: change 1260345 generated at 05/12/2018 05:12:54 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/archivelog/1_32_970255476.dbf
ORA-00280: change 1260345 for thread 1 is in sequence #32
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}se
/u01/app/oracle/oradata/OCP/redo02.log
ORA-00279: change 1261322 generated at 05/12/2018 05:13:46 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/archivelog/1_33_970255476.dbf
ORA-00280: change 1261322 for thread 1 is in sequence #33
ORA-00278: log file '/u01/app/oracle/oradata/OCP/redo02.log' no longer needed
for this recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/orcl/redo03.log
Log applied.
Media recovery complete.
SQL> select GROUP#,THREAD#,SEQUENCE#,STATUS from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 31 INACTIVE
3 1 30 INACTIVE
2 1 32 CURRENT
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2712154/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- Oracle-無備份情況下,如何手動恢復控制檔案Oracle
- 12 使用RMAN備份和恢復檔案
- Oracle資料庫恢復之resetlogsOracle資料庫
- 【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?Oracle
- XFS檔案系統的備份、恢復、修復
- Oracle 備份 與 恢復 概述Oracle
- Oracle 備份恢復之 FlashbackOracle
- ORACLE備份&恢復案例(轉)Oracle
- 檔案替換後怎麼恢復,恢復被覆蓋的檔案
- 檔案的基本管理和XFS檔案系統備份恢復
- Linux中XFS檔案系統的備份,恢復,修復Linux
- 剪下後的檔案可以恢復嗎?恢復剪下檔案怎麼辦?
- 備份與恢復oracle_homeOracle
- oracle 增量備份恢復驗證Oracle
- Oracle 備份和恢復介紹Oracle
- ORACLE備份&恢復案例三(轉)Oracle
- ORACLE備份&恢復案例二(轉)Oracle
- ORACLE本地磁碟備份恢復Oracle
- 【RMAN】如果控制檔案損壞那麼如何恢復?恢復控制檔案的方式有哪幾種?
- 實戰:xfs檔案系統的備份和恢復
- Controlfile 重建控制檔案 noresetlogs, resetlogs..
- Oracle 12c 備份與恢復Oracle
- Oracle 備份恢復篇之RMAN catalogOracle
- ORACLE DG從庫 Rman備份恢復Oracle
- oracle 控制檔案及引數檔案何時自動備份Oracle
- 如何從Active Backup for Business備份中恢復檔案
- 如何備份及恢復Linux檔案許可權Linux
- mongodb使用備份後的oplog做時間點恢復MongoDB
- 【ASK_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(一)什麼是CDB與PDB?Oracle
- RAC備份恢復之Voting備份與恢復
- dg丟失歸檔,使用rman增量備份恢復
- Kubernetes的備份和恢復最佳實踐是什麼
- SqlServer 備份和恢復(一)SQLServer
- 刪除的PSD檔案在哪可以恢復?一定要看看
- 【ASK_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(二)備份恢復之前你需要知道的Oracle
- 與控制檔案有關的恢復
- rman恢復控制檔案的一個小錯誤