recover database using backup controlfile理解
深入剖析 - Oracle SCN機制詳細解讀
media recovery和instance recovery的差別
https://www.cnblogs.com/Peyton-for-2012/archive/2013/03/01/2938416.html
recover database using backup controlfile
http://blog.chinaunix.net/uid-20274021-id-1969571.html
要理解recover database using backup controlfile,先理解 recover database 也就是說,不加using backup controlfile
的情況。在普通的recover database 或者 recover tablespace, recover datafile時, Oracle會以當前controlfile所紀錄的
SCN為準,利用archive log和 redo log的redo entry, 把相關的datafile 的 block恢復到“當前controlfile所紀錄的SCN”。
而某些情況下,Oracle需要把資料恢復到比當前controlfile所紀錄的SCN還要靠後的位置(比如說,control file是backup
controlfile , 或者 controlfile是根據trace create的。),這時候,就需要用using backup controlfile. 恢復就不會受“當前
controlfile所紀錄的SCN”的限制。這時候的限制就來自於你的語句(until time , until scn),或者可用的archive log(until
cancel) ...
首先這裡我們先介紹四個SCN概念。
1、系統檢查點scn (System Checkpoint SCN)
當一個checkpoint檢查點動作完成後,Oracle就把系統檢查點的SCN儲存到控制檔案中。
select checkpoint_change# from v$database;
2,資料檔案檢查點scn (Datafile Checkpoint SCN)
當一個checkpoint動作完成後,Oracle就把每個資料檔案的Datafile Checkpoint SCN單獨存放在控制檔案中。
select name,checkpoint_change# from v$datafile;
3,啟動scn (Start SCN)
Oracle把這個檢查點的scn儲存在每個資料檔案的檔案頭中,這個值稱為啟動scn,這個SCN用於用於在資料庫例項啟動
時,檢查是否需要執行資料庫恢復media recovery。
select name,checkpoint_change# from v$datafile_header;
4、終止scn (Stop SCN)
每個資料檔案的終止scn都儲存在控制檔案中。這個SCN號用於檢查資料庫啟動過程是否需要做instance recovery。
select name,last_change# from v$datafile;
5.media recovery和instance recovery
1).media recovery是需要利用以前的備份來進行恢復的,而INSTANCE RECOVERY是不需要的。
2).media recovery通常發生在資料庫的資料檔案之類發生損壞,需要利用以前的備份來進行的恢復,需要人工處理。
3).instance recovery則是發生在例項不正常關閉情況下的恢復,是INSTANCE自己來的,不需要人工干預的。
6、在資料庫執行期間的scn值
1).在資料庫開啟並執行之後,控制檔案中的系統檢查點、控制檔案中的資料檔案檢查點scn和每個資料檔案頭中的啟動scn都
是相同的。控制檔案中的每個資料檔案的終止scn都為null.
2).在安全關閉資料庫的過程中,系統會執行一個檢查點動作,這時所有資料檔案的終止scn都會設定成資料檔案頭中的那個
啟動scn的值。
3).在資料庫重新啟動的時候,Oracle將檔案頭中的那個啟動scn與資料庫檔案檢查點scn進行比較,如果這兩個值相互匹配,
oracle接下來還要比較資料檔案頭中的啟動scn和控制檔案中資料檔案的終止scn。如果這兩個值也一致,就意味著所有資料
塊多已經提交,所有對資料庫的修改都沒有在關閉資料庫的過程中丟失,因此這次啟動資料庫的過程也不需要任何恢復操作,
此時資料庫就可以開啟了。當所有的資料庫都開啟之後,儲存在控制檔案中的資料檔案終止scn的值再次被更改為null,這表
示資料檔案已經開啟並能夠正常使用了。
7.SCN與資料庫啟動
在資料庫啟動過程中,當System Checkpoint SCN、Datafile Checkpoint SCN和Start SCN都相同時,資料庫可以正常啟
動,不需要做media recovery。三者當中有一個不同時,則需要做media recovery.如果在啟動的過程中,End SCN為NULL
,則需要做instance recovery。Oracle在啟動過程中首先檢查是否需要media recovery,然後再檢查是否需要instance
reco very。
8.SCN與資料庫關閉
如果資料庫的正常關閉的話,將會觸發一個checkpoint,同時將資料檔案的END SCN設定為相應資料檔案的Start SCN。當
資料庫啟動時,發現它們是一致的,則不需要做instance recovery。在資料庫正常啟動後,ORACLE會將END SCN設定為
NULL.如果資料庫異常關閉的話,則END SCN將為NULL。
9.系統正常關閉:
system scn=datafile scn=start scn=stop scn
1)system scn=datafile scn=start scn,不需要介質恢復
2)stopscn not null,不需要例項恢復
10.系統異常關閉:
system scn=datafile scn=start scn,stop scn null
1)system scn=datafile scn=start scn,不需要介質恢復
2)stopscn null,需要例項恢復
11.舊資料檔案
system scn=datafile scn>start scn,stop scn null/notnull
1)system scn=datafile scn>start scn,需要介質恢復成system scn=datafile scn=start scn
2)stopscn null,需要例項恢復,not null 不需要例項恢復
12.備份控制檔案
system scn=datafile scn<=start scn(當資料檔案為舊的相等),stop scn notnull/null
1)system scn=datafile scn<=start scn,需要使用using backup controlfile介質恢復成system scn=datafile scn=start
scn=current log scn(當前日誌最大SCN)
2)為保證上一次恢復沒有用到log日誌不被使用,必須resetlogs
13.重建noresetlogs控制檔案
控制檔案中 datafile Checkpoint來自Online logs中的Current log頭
current log scn=system scn=datafile scn>=start scn,stop scn not null/null
1)current log scn=system scn=datafile scn>=start scn,需要介質恢復成system scn=datafile scn=start scn=redolog
scn(當前日誌最大SCN),stop scn not null
2)stopscn not null 不需要例項恢復
14.重建resetlogs控制檔案
控制檔案中datafile Checkpoint來自各資料檔案頭。
system scn>=datafile scn=start scn,stop scn not null/null
1)system scn>=datafile scn=start scn,需要使用using backup controlfile介質恢復成system scn=datafile scn=start
scn(當前日誌最大SCN),stop scn not null
2)stop notnull,因為SCN已經為redolog scn,log已經不能使用,必須resetlogs
15.recover database using backup controlfile
如果丟失當前控制檔案,用冷備份的控制檔案恢復的時候,用來告訴oracle,不要以controlfile中的scn作為恢復的終點;
16.recover database until cancel
如果丟失current/active redo的時候,手動指定終點。
17.recover database using backup controlfile until cancel
如果丟失當前controlfile並且current/active redo都丟失,會先去自動應用歸檔日誌,可以實現最大的恢復;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31374736/viewspace-2843133/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 理解RMAN backup database plus archivelog delete all input命令DatabaseHivedelete
- SQLBackupAndFTP12.0 failed to backup database with full backup typeSQLFTPAIDatabase
- Crunchy PostgreSQL database backup via pgo commandSQLDatabaseGo
- Using V$BACKUP_ASYNC_IO / V$BACKUP_SYNC_IO to Monitor RMAN PerformanceORM
- ORA-279 signalled during: alter database recover logfileDatabase
- Converting Oracle Database from Linux to Windows using RMANOracleDatabaseLinuxWindows
- G009-ORACLE-ASK Using In-Database ArchivingOracleDatabase
- PL/SQL package SYS.DBMS_BACKUP_RESTORE version 19.16.00.00 in TARGET database isSQLPackageRESTDatabase
- Oracle 19c透過recover standby database from service修復GAP案例OracleDatabase
- Oracle Database 19c(19.9) RAC On RedHat 8.3 Using VirtualBox and MacBookOracleDatabaseRedhatMac
- [重慶思莊每日技術分享]-ORA-1142 signalled during: ALTER DATABASE END BACKUPDatabase
- cron with recover
- Controlfile 重建控制檔案 noresetlogs, resetlogs..
- Will attempt to recover by breaking constraintAI
- md_backup
- 【譯】defer-panic-and-recover
- MySQL 索引優化 Using where, Using filesortMySql索引優化
- MySQL explain結果Extra中"Using Index"與"Using where; Using index"區別MySqlAIIndex
- The database owner SID recorded in the master database differs from the database owner SID recorded in database 'DB_NAME'DatabaseAST
- Oracle 11G 隱含引數“_controlfile_autobackup_delay”Oracle
- Oracle Database Cloud - Database as a Service Quick StartOracleDatabaseCloudUI
- Error querying database. XXXXXXXXXXXXX, No database selected。ErrorDatabase
- Convert a Physical Standby Database into a Snapshot Standby DatabaseDatabase
- Golang Recover的一個小坑Golang
- CREATE CONTROLFILE修改DB_NAME一定不能使用REUSE
- Using hints for PostgresqlSQL
- String interpolation using $
- using的用法
- Using mysqldump for backupsMySql
- MySQL 之 USINGMySql
- DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE用於特殊情況下的恢復REST
- BACKUP PENDING狀態的解除
- milvus-backup安裝部署
- Veritas Backup Exec™ 21.3 Multilingual (Windows)Windows
- Database TimeoutDatabase
- Database OverallDatabase
- database no shardingDatabase
- Go基礎系列:defer、panic和recoverGo