只讀表空間的恢復問題--預備知識
1. 預備知識
將表空間設定為只讀,可以防止使用者對錶空間中的資料檔案執行寫入操作。然而,這也使得系統程式同樣無法完成檔案頭的寫入操作。這將對系統在執行checkpoint,resetlogs之類修改檔案頭的等操作產生影響。
要全面理解只讀表空間的恢復問題,我們首先要搞清楚表空間、資料檔案狀態的改變,與控制檔案之間存在著哪些聯絡:
1.1 控制檔案自動備份
首先,當表空間狀態發生改變時,系統將啟動控制檔案自動備份操作。
sys@STUDY>alter tablespace users read only;
Tablespace altered.
我們來檢視alert.log檔案:
Thu Jun 24 13:05:38 2010
alter tablespace users read only
Thu Jun 24 13:05:38 2010
Starting control autobackup
Control autobackup written to DISK device
handle 'C:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREASTUDYAUTOBACKUP2010_06_24O1_MF_S_722523938_625SX4G5_.BKP'
Completed: alter tablespace users read write
如果alert.log檔案被刪除了也不要緊,我們可以在V$BACKUP_CONTROLFILE_DETAILS檢視中查詢系統自動備份控制檔案的詳細資訊。
sys@STUDY>select btype_key, id1, id2, creation_time from v$backup_controlfile_details;
BTYPE_KEY ID1 ID2 CREATION_TIME
--------- ---------- ---------- -------------------
63 722516269 68 2008-04-22 16:50:16
64 722516931 69 2008-04-22 16:50:16
65 722523938 70 2008-04-22 16:50:16
為了顯示方便,以上結果部分被省略了。
當資料檔案被置為read only後,系統將修改檔案頭,將系統當前的SCN記錄在Checkpoint_change#和last_change#中。注意,此處系統並未執行CKPT。
sys@STUDY>select file#, checkpoint_change#, last_change#, offline_change#, online_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# ONLINE_CHANGE#
---------- -------------- ---------- --------------- --------------
1 2147692 534906 534907
2 2147692 534906 534907
3 2147692 534906 534907
4 2151527 2151527 2145970 2150425
5 2147692 0 0
7 2147692 0 0
8 2147692 0 0
進一步實驗我們可以發現:只要表空間狀態發生改變(online, offline,read only, read write),系統均會自動進行控制檔案的備份操作。
如果我們將資料檔案的狀態設為offline:
alter database datafile 4 offline;
alert.log檔案中將記錄,但系統並不進行控制檔案的自動備份。
Thu Jun 24 15:38:27 2010
alter database datafile 4 offline
Thu Jun 24 15:38:27 2010
Completed: alter database datafile 4 offline
下一次重新online資料檔案時:
alter database datafile 4 online;
alert.log檔案中將記錄,並執行控制檔案的自動備份。
Thu Jun 24 15:45:54 2010
alter database datafile 4 online
Thu Jun 24 15:45:54 2010
Starting control autobackup
Control autobackup written to DISK device
handle 'C:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREASTUDYAUTOBACKUP2010_06_24O1_MF_S_722533554_62639MC7_.BKP'
Completed: alter database datafile 4 online
瞭解控制檔案備份的位置,對於我們運用using backup controlfile來實現資料庫的不完全恢復非常重要。如果所有的備份控制檔案都丟失了,那麼只能透過執行控制檔案重建指令碼來完成恢復操作。
1.2 控制檔案記錄資料檔案
對於只讀表空間,由於無法對其進行更改,因此係統假設其不需要恢復,其中的資料檔案並沒有包含在控制檔案中。
sys@STUDY>alter database backup controlfile to trace;
對應的跟蹤檔案中有關資料檔案的程式碼段:
DATAFILE
'C:ORACLEPRODUCT10.2.0ORADATASTUDYSYSTEM01.DBF',
'C:ORACLEPRODUCT10.2.0ORADATASTUDYUNDOTBS01.DBF',
'C:ORACLEPRODUCT10.2.0ORADATASTUDYSYSAUX01.DBF',
'C:ORACLEPRODUCT10.2.0ORADATASTUDYEXAMPLE01.DBF',
'C:ORACLEPRODUCT10.2.0ORADATASTUDYRMAN01.DBF',
'C:ORACLEPRODUCT10.2.0ORADATASTUDYPERFSTATS01.DBF'
可以看到,其中沒有記錄USER01.DBF的資訊。
進一步,我們嘗試將Users表空間變為offline;然後匯出控制檔案,我們發現Users中的資料檔案同樣沒有記錄在控制檔案中。這是由於系統同樣認為離線表空間也同樣不需要恢復。
1.3 小結
如下圖所示,表空間與控制檔案間的關係如下:
表空間狀態 | 控制檔案操作 | ||
自動備份 | 記錄資料檔案 | ||
offline | √ | × | |
online | read only | √ | × |
read write | √ | √ |
綜上所述,系統對只讀表空間和離線表空間的恢復過程中的操作是非常類似的。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20162/viewspace-1034620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g RMAN恢復-只讀表空間的恢復(備份是在表空間只讀狀態下做的)Oracle
- Oracle 11g RMAN恢復-只讀表空間的恢復Oracle
- 【Oracle】rman 恢復只讀表空間資料庫Oracle資料庫
- 設定EXCLUDE後STANDBY資料庫只讀表空間的恢復資料庫
- Oracle 11g RAN恢復-表空間在只讀時做了資料庫的備份Oracle資料庫
- 【物理熱備】(下)備份恢復系統表空間 手工備份恢復
- oracle小知識點10--表空間時間點恢復(TSPITR)Oracle
- Oracle rman 備份與恢復 臨時表空間的檔案問題解決Oracle
- [20150408]只讀表空間以及資料庫恢復.txt資料庫
- mysql無備份恢復-獨立表空間MySql
- 表空間級資料庫備份恢復資料庫
- 如何用rman 不備份只讀表空間的資料
- 恢復Oracle表空間的方法Oracle
- DB2 使用表空間備份恢復庫DB2
- Oracle RMAN 表空間恢復Oracle
- [20150408]只讀表空間以及資料庫恢復2.txt資料庫
- RAC 恢復(備份後建立的表空間(leviton)恢復後會自動重建)
- UNDO表空間資料檔案丟失處理(一)預備知識
- Oracle RMAN 表空間的完全恢復Oracle
- 非系統表空間損壞,rman備份恢復
- mysql 無備份恢復drop資料-共享表空間MySql
- 熱修復預備知識
- rman恢復資料檔案 恢復表空間
- 【Oracle 恢復表空間】 實驗Oracle
- SYSAUX表空間管理及恢復UX
- Oracle表空間小知識Oracle
- 【管理篇備份恢復】rman恢復測試(一) 表空間資料檔案
- 備份與恢復--一個表空間能否被多個資料庫讀寫?資料庫
- undo表空間檔案丟失恢復(1)--有備份
- 根據表空間的TSPITR恢復
- Oracle使用者預設表空間的問題Oracle
- 表空間TSPITR恢復-實驗
- 表空間不完全恢復(全備--備份控制檔案--刪除表空間andy--日誌檔案)
- 備份與恢復系列 九 丟失表空間資料檔案的還原與恢復
- undo表空間檔案丟失恢復(2)--無備份有redo的情況下恢復
- undo表空間檔案丟失恢復(3)--無備份無redo的情況下恢復
- undo表空間檔案丟失恢復(4)--無備份無recover的情況下恢復
- 刪除表空間,有rman全備的恢復(使用dbms_backup_restore來進行恢復)REST