【Oracle】rman 恢復只讀表空間資料庫

dmcatding發表於2017-04-13
在預設情況下,即使丟失了只讀的資料檔案,RMAN也不會在執行完全資料庫還原操作時還原只讀的資料檔案。
要在完全恢復期間還原只讀的資料檔案,就必須在restore命令中使用check readonly引數:

靜態或歷史資料儲存在只讀表空間中是一個很好的做法,特別是對於資料倉儲型別的環境。
使用RMAN SKIP READONLY命令,我們可以透過從資料庫備份集中排除這些只讀表空間來減少備份視窗和開銷。
但是,我們需要記住,我們需要至少在備份表空間後才能讀取,之後我們可以使用SKIP READONLY命令從每日或每週的資料庫備份中排除這些表空間。
然而,在進行恢復時,我們需要使用CHECK READONLY關鍵字,否則預設情況下,只讀表空間將不會恢復,因此恢復也將繞過這些表空間。隨後嘗試開啟資料庫將失敗。

案列:
RMAN> restore database;
Starting restore at 12-AUG-09 using channel ORA_SBT_TAPE_1 using channel ORA_DISK_1 datafile 4 not processed because file is read-only datafile 6 not processed because file is read-only datafile 9 not processed because file is read-only channel ORA_SBT_TAPE_1: starting datafile backupset restore channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /u02/oradata/testdb/system01.dbf restoring datafile 00002 to /u02/oradata/testdb/undotbs01.dbf restoring datafile 00003 to /u02/oradata/testdb/sysaux01.dbf restoring datafile 00005 to /u02/oradata/testdb/example01.dbf channel ORA_SBT_TAPE_1: reading from backup piece 08kmb8f7_1_1 channel ORA_SBT_TAPE_1: restored backup piece 1 piece handle=08kmb8f7_1_1 tag=TAG20090810T120039 channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:10:36 Finished restore at 12-AUG-09
RMAN> recover database; Starting recover at 12-AUG-09
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1
datafile 4 not processed because file is read-only
datafile 6 not processed because file is read-only
datafile 9 not processed because file is read-only
channel ORA_SBT_TAPE_1: starting incremental datafile backupset restore
channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /u02/oradata/testdb/system01.dbf
.....
.......

archive log filename=/u02/oradata/testdb/arch/arch.36.1.694170424.log thread=1 sequence=36
archive log filename=/u02/oradata/testdb/arch/arch.37.1.694170424.log thread=1 sequence=37
archive log filename=/u02/oradata/testdb/arch/arch.38.1.694170424.log thread=1 sequence=38
media recovery complete, elapsed time: 00:00:43
Finished recover at 12-AUG-09

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 08/12/2009 12:55:30
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/u02/oradata/testdb/users03.dbf'

現在,只讀表格也被還原,但是我們注意到恢復階段將跳過這些表空間,因為不需要恢復,因為這些表空間在上述這些表空間被替換為只讀後才進行上次備份,因此沒有發生任何更改。
MAN> restore database check readonly; Starting restore at 12-AUG-09
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1

channel ORA_SBT_TAPE_1: starting datafile backupset restore
channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u02/oradata/testdb/system01.dbf
restoring datafile 00002 to /u02/oradata/testdb/undotbs01.dbf
restoring datafile 00003 to /u02/oradata/testdb/sysaux01.dbf restoring datafile 00004 to /u02/oradata/testdb/users03.dbf restoring datafile 00005 to /u02/oradata/testdb/example01.dbf restoring datafile 00006 to /u02/oradata/testdb/users02.dbf
restoring datafile 00009 to /u02/oradata/testdb/users01.dbf channel ORA_SBT_TAPE_1: reading from backup piece 08kmb8f7_1_1
channel ORA_SBT_TAPE_1: restored backup piece 1
piece handle=08kmb8f7_1_1 tag=TAG20090810T120039
channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:05:25
Finished restore at 12-AUG-09



RMAN> recover database; Starting recover at 12-AUG-09
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1
datafile 4 not processed because file is read-only
datafile 6 not processed because file is read-only
datafile 9 not processed because file is read-only
channel ORA_SBT_TAPE_1: starting incremental datafile backupset restore
channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /u02/oradata/testdb/system01.dbf
destination for restore of datafile 00002: /u02/oradata/testdb/undotbs01.dbf
destination for restore of datafile 00003: /u02/oradata/testdb/sysaux01.dbf
destination for restore of datafile 00005: /u02/oradata/testdb/example01.dbf
channel ORA_SBT_TAPE_1: reading from backup piece 0akmb8uu_1_1
channel ORA_SBT_TAPE_1: restored backup piece 1
piece handle=0akmb8uu_1_1 tag=TAG20090810T120901
channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:07

starting media recovery

archive log thread 1 sequence 36 is already on disk as file /u02/oradata/testdb/arch/arch.36.1.694170424.log
archive log thread 1 sequence 37 is already on disk as file /u02/oradata/testdb/arch/arch.37.1.694170424.log
archive log thread 1 sequence 38 is already on disk as file /u02/oradata/testdb/arch/arch.38.1.694170424.log
archive log thread 1 sequence 39 is already on disk as file /u02/oradata/testdb/arch/arch.39.1.694170424.log
archive log thread 1 sequence 40 is already on disk as file /u02/oradata/testdb/arch/arch.40.1.694170424.log
archive log filename=/u02/oradata/testdb/arch/arch.36.1.694170424.log thread=1 sequence=36
archive log filename=/u02/oradata/testdb/arch/arch.37.1.694170424.log thread=1 sequence=37
archive log filename=/u02/oradata/testdb/arch/arch.38.1.694170424.log thread=1 sequence=38
media recovery complete, elapsed time: 00:00:39
Finished recover at 12-AUG-09

RMAN> alter database open;

database opened

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30327022/viewspace-2137218/,如需轉載,請註明出處,否則將追究法律責任。

相關文章