控制文件的备份与恢复
控制文件的備份與恢復
實例啟動時進程既要讀取控制文件又要寫控制文件,所以該階段只要有一個控制文件損壞實例就無法到MOUNT狀態。
即 該階段 控制文件缺一不可。有損壞時只能啟動到 NOMOUNT狀態。
備份
控制文件的備份有: 在線控制文件鏡像備份、手動備份、自動備份
在線鏡像備份是指 除了第一個被使用的控制文件(初始化參數 control_files指向的第一個)外,其他的控制文件即為鏡像備份。
自動備份:
顯示自動備份:該類型的備份默認情況下是關閉的。在RMAN中 用 configure autobackup 命令 的屬性設置為 ON 即可打開這以后
oracle就會在 RMAN執行任何備份操作導致控制文件內RMAN資料庫被更新之后,自動做備份。還有在數據塊物理
結構發生變化之后 也會自動備份。物理結構發生變化導致自動備份 ORACLE 交給了 MMON后臺進程延時處理完成,
而MMON后臺進程又交給其管理的奴隸進程(M000)完成備份操作。要修改延時的時間間隔(單位 秒),請修改
隱含參數 "_controlfile_autobackup_delay" 。由物理結構發生變化而引發的自動備份 只能使用DISK類型的默認通道。
也會自動備份 控制文件。
--查看自動備份的狀態
RMAN> SHOW CONTROLFILE AUTOBACKUP;
---啟用自動備份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
---關閉自動備份
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP OFF;
隱式自動備份:當自動備份 關閉的情況下,使用RMAN 命令備份 關鍵數據文件時,控制文件會被自動備份。同樣 執行
backup database 和 backup tablespace system 時控制文件也必然被自動備份。但是ORACLE不認為這是自動備份,
因為這種的備份集沒有在快速恢復區的 autobackup 目錄下,而是在backupset目錄,備份片名由 “o1_mf_ncsnf_”
開頭,將來恢復時,此類備份的步驟和自動備份的步驟是有別的。即 采用手動備份恢復而非自動備份恢復。
手動備份分為:備份集、鏡像復制備份、重建腳本
備份集合鏡像復制備份默認路徑是 快速恢復區,如果沒有啟用快速恢復區則路徑是 $oracle_home/dbs
重建腳本則寫入常規的追蹤文件路徑中。
備份集備份:
RMAN> BACKUP AS BACKUPSET CURRENT CONTROLFILE;
鏡像復制備份:
RMAN 和 SQL/PLUS 都可以完成對控制文件的鏡像復制備份。
RMAN>backup as copy current controlfile format ='path';
SQL>alter database backup controlfile to 'path';
重建腳本:
SQL/PLUS 同樣可以產生一種 腳本文件,其中包含能夠重新創建控制文件的命令。
SQL>ALTER DATABASE BACKUP CONTROLFILE TO TRACE;----將控制文件備份為文本文件
SQL>ALTER DATABASE BACKUP CONTROLFILE TO 'PATH';---將控制文件備份為二進制文件
---默認追蹤文件的位置
SELECT VALUE FROM v$diag_info where name ='Default Trace File';
--或 通過查看初始化參數USER_DUMP_DEST 來確定追蹤文件路徑
SQL>SHOW PARAMETER USER_DUMP_DEST
重建腳本中包含 兩條 CREATE CONTROLFILE 的命令 ,分別 是 不重設日志(noresetlogs)、重設日志(resetlogs)。
按時間跨度分類備份:在線鏡像備份、結構備份、歷史備份
在線鏡像備份:也稱為在線副本,或當前備份。也就是control_files初始化參數所指向的除了損壞的控制文件以外的其他
健康的控制文件。它們理解當前庫的物理結構,知道最新的檢查點、最新的在線日志序列號、最新的SCN
數據庫SCN、控制文件序列號、控制文件SCN、各個數據文件頭部檢查點信息及歸檔日志。
結構備份:該備份中數據庫的物理結構信息(數據文件及在線重做日志)和當前控制文件一致,但是最新的檢查點、最新
的重做日志序列號、SCN、數據庫SCN、控制文件序列號、控制文件SCN、各個數據文件頭部檢查點集及歸檔日志
信息比當前控制文件中的陳舊。簡言之:如果產生自動備份或手動備份后,數據庫的結構沒有發生任何變化,那么
它們便是結構備份。
歷史備份:該備份中的數據庫的結構物理信息和當前控制文件中的不一致。簡言之:如果產生自動備份或手動備份之后,
數據庫的物理結構發生變化,那么它們就是歷史備份。
恢復
控制文件的恢復是需要重做日志幫助的。恢復包括:先從備份還原,然后用重做日志恢復。
恢復是在 NOMOUNT 狀態進行的。
大多情況下,恢復控制文件先考慮 在線鏡像備份,其次是結構備份,最后考慮歷史備份。
除了鏡像備份之外,其他備份恢復控制文件的順序為:
1、從備份中還原控制文件
2、用重做日志介質恢復數據庫(也稱為:應用日志 (apply log))
3、以重設日志的方式打開數據庫。
在線鏡像備份恢復:
1、執行 startup nomount 將實例帶到 NOMOUNT 狀態
2、查看警告日志和追蹤日志觀察損壞的具體情況
3、用操作系統命令使用健康的在線鏡像備份替換已損壞的活丟失的控制文件
4、執行 alter database mount 將實例帶到 mount 狀態
5、執行 alter database open 打開數據庫,恢復完成。
自動備份恢復:
1、執行 startup nomount 將實例 帶到 nomount 狀態
2、運行 restore controlfile from autobackup 命令還原控制文件
3、執行 mount database 命令將實例帶到 mount 狀態
4、執行 recover database 命令恢復數據庫
5、執行 alter database open resetlogs 命令打開數據庫,恢復完成
延伸:recover database 的過程是這樣的:自動在快速恢復區內探索尚不清楚的備份和歸檔日志、自動找到最當前的
在線日志(即 實例關閉時LGWR正在寫的那個在線日志,它是恢復過程終點的標志)、判斷控制文件是否需要
恢復、讀取日志信息以恢復數據文件和控制文件的部分信息。有時甚至自動利用通道從歸檔日志的備份中將歸
檔日志自動還原,以便為恢復操作所用。
recover database 命令在 RMAN 和 sql/plus 中的是由區別的:
1、SQL>RECOVER DATABASE ---用來對所有的數據文件進行恢復,并且只能使用保存在文件系統上的歸檔日志和在線日志,
---并且前提是控制文件,不可以是還原或重建得到的。
2、 SQL>recover database using backup controlfile ---用來對所有數據文件和控制文件進行恢復,并且只能使用保存在文件系統
--上的歸檔日志和在線日志
3、 RMAN>recover database;---對所有數據文件和控制文件進行恢復,并且可以使用增量備份、備份中的和文件系統中的歸檔
--日志,以及文件系統上的在線日志
后兩種可以自動修復以下3種情況:
1、備份控制文件中沒有某個數據文件和表空間信息,但是實際存在的情況。
2、備份控制文件中沒有某個在線日志組的信息,但是實際上存在的情況。
3、備份控制文件中具有某個在線日志組的信息,但是實際上是不存在的。
使用帶 RESETLOGS 命令打開數據庫,是因為 recover 命令只能修復控制文件中數據庫物理結構信息,而不能修改控制文件
中的當前重做日志的序列號等信息,recover 執行完后,控制文件中的當前在線日志序列號還是陳舊的,oralce采用重設
日志功能,日志序列號將從1重新開始。該處的 resetlogs 僅僅是為了照顧還原的控制文件,這里的resetlogs 和不完全恢復
中的 resetlogs 不同。
手動備份恢復:
1、啟動實例到 NOMOUNT 狀態
2、探索備份集的位置
3、執行 restore controlfile from 'path' 命令還原控制文件(如果采用了恢復編錄 from子句可以丟棄)
4、執行 mount database 將實例帶入 mount 狀態
5、執行 recover database 命令恢復數據庫
6、執行 alter database open resetlogs 命令打開數據庫,恢復完成
歷史備份恢復:
1、如果備份控制文件中具有某個數據庫文件或表空間信息,但是實際上不存在。則:
SQL> recover database using backup controlfile 或 recover database skip tablespace 才能修復。
2、備份控制文件中沒有某個在線日志組的的信息,但實際上是存在的。則:
SQL>recover database using backup controlfile 命令,并手動指定重做日志的路徑后才能完成恢復。
自動修復不一致的情況:
1、備份控制文件中沒有某個數據文件和表空間信息,但是實際存在的情況。
控制文件自動備份功能關閉,在備份控制文件之后,創建了一個 a 表空間,備份控制文件中無此表空間,
這樣物理結構與當前不一致,備份就成為了 歷史備份。還原過程為:
RMAN>
startup nomount;
restore controlfile from 'path';---即歷史備份路徑
mount database;
SQL> select name from v$datafile;---查看新表空間中的數據文件是否存在(非必要過程)
recover database;
alter database open resetlogs;
手動修復不一致的情況:
控制文件自動備份關閉,備份了控制文件后,刪除了一個 a 表空間,則在備份控制文件中,該表空間和數據文件
是存在的。這時控制文件損壞,還原過程:
RMAN>
startup nomount;
restore controlfile from 'path';
mount database;
-------------11
SQL>SELECT * FROM DATAFILE;---非必要過程(發現存在a 表空間和對應的數據文件)
SQL>ALTER DATABASE DATAFILE 5 OFFLINE;
SQL>recover database using backup controlfile;---按提示 輸入 AUTO 繼續。有可能出錯(提示找不到某個歸檔日志)
--如果報錯說找不的某個歸檔日志則再次執行recover
SQL>recover database using backup controlfile;--同樣按提示輸入 AUTO繼續,并輸入確實那個歸檔日志的路徑。
--直到恢復完查看是否有那個數據文件
SQL>SELECT * FROM V$DATAFILE;
-------------11
----11 這個過程可以使用 recover database skip tablespace a 來替換
RMAN> ALTER DATABASE OPEN RESETLOGS;
缺失歸檔日志情況下的恢復
1、執行 STARTUP NOMOUNT
2、執行 RESTORE CONTROLFILE FROM AUTOBACKUP| 'PATH';
3、執行 執行 recover database 命令 報錯提示找不到歸檔日志
4、利用 CREATE CONTROLFILE 命令重建控制文件
5、執行 recover database 命令 若報錯提示找不到歸檔日志
6、查看V$LOG視圖確定第五步中所需那個日志
7、在SQL/PLUS中執行 RECOVER DATABASE USING BACKUP CONTROLFILE ,等 "Specify log";提示符出現后給出正確的在線日志
路徑,直到命令結束
8、以 resetlogs 方式打開數據庫。
9、因為控制文件內不會有臨時數據文件信息,所以需重新將其添加會臨時表空間
alter tablespace temp add tempfile 'patj' reuse;
10、將控制文件內其他丟失的信息用 catalog 和 configure 命令再添加回來。
catalog db_recovery_file_dest;---如果使用恢復編錄則無須執行該過程
查看已知的歸檔日志的最大序列號
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG;
查詢V$LOG視圖得知控制文件需要從幾號日志開始恢復。
select sequence# from v$log wher status='CURRENT';
noresetlogs
可以不用帶 RESETLOGS 關鍵字打開數據庫。方法就是 在 RECOVER DATABASE 成功完成后,重新創建一個新控制文件,
并在創建的命令中使用 noresetlogs 關鍵字。主要步驟為:
1、在執行完 recover database;
2、SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
3、重啟實例至 nomount 狀態。startup force nomount;
4、用追蹤文件中的 noresetlogs 版本的 create controlfile 命令創建新的控制文件,創建完成后會自動進入 MOUNT 狀態
5、執行 ALTER DATABASE OPEN 打開數據庫,如果報錯,先執行 RECOVER DATABASE 然后在 alter database open 打開數據庫
6、因為控制文件內不會有臨時數據文件信息,所以需重新將其添加會臨時表空間。
alter tablespace temp add tempfile 'patj' reuse;
7、將控制文件內其他丟失的信息用 catalog 和 configure 命令再添加回來。
catalog db_recovery_file_dest;---如果使用恢復編錄則無須執行該過程
最后使用 configure 命令重新設置通道、備份保留策略等配置信息---同樣如果使用恢復編錄則無須執行該過程
總結
以上是生活随笔為你收集整理的控制文件的备份与恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探究 position-sticky 失
- 下一篇: 银婚金婚(金婚银婚钻石婚各是多少年)