設定EXCLUDE後STANDBY資料庫只讀表空間的恢復

yangtingkun發表於2011-02-13

STANDBY資料庫利用RMAN恢復主庫上EXCLUDE的只讀表空間,碰到了問題。

 

 

資料庫恢復完成,但是恢復被主庫EXCLUDE的只讀表空間時,發現無法進行恢復:

RMAN> restore tablespace clubstat2_bak;

Starting restore at 14-FEB-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1094 devtype=DISK

file 22 is excluded from whole database backup
file 25 is excluded from whole database backup
file 28 is excluded from whole database backup
file 30 is excluded from whole database backup
restore not done; all files readonly, offline, or already restored
Finished restore at 14-FEB-11

對於主庫而言很簡單,只需要利用rmanconfigure exclude clear命令就可以解決這個問題,但是對於STANDBY資料庫而言,這個方法不可行:

RMAN> show exclude;

RMAN configuration parameters are:
CONFIGURE EXCLUDE FOR TABLESPACE 'CLUBSTAT2_BAK';

RMAN> configure exclude for tablespace 'CLUBSTAT2_BAK' clear;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of configure command at 02/14/2011 00:07:48
RMAN-05021: this configuration cannot be changed for a BACKUP or STANDBY control file

錯誤資訊很明確,當前控制檔案是STANDBY控制檔案,因此無法執行CONFIGURE EXCLUDE命令。

有一個簡單的解決方法,就是在主庫執行CONFIGURE EXCLUDE FOR TABLESPACE ‘CLUBSTAT2_BAK’ CLEAR命令,然後建立STANDBY CONTROLFILE,利用新建立的STANDBY控制檔案恢復這個只讀表空間。

但是由於當前目標資料庫使用的是ASM,在恢復其他資料檔案的時候,新建的資料檔名稱和主庫的名稱並不相同,這些新的名稱已經寫到控制檔案中了,如果使用新的控制檔案,還需要手工RENAME所有的資料檔案。當然也可以利用新的控制檔案恢復只讀表空間後,在換回原始的控制檔案,不過這種方法就顯得相對畢竟麻煩,也容易出錯。

最後選擇了利用RMAN在主庫COPY DATAFILE的方法,生成資料檔案的複製,將資料檔案複製ftp到備庫中利用catalog datafilecopy命令將資料檔案複製新增到控制檔案中,然後利用copy datafilecopy命令將只讀表空間的資料檔案複製到asm中指定的位置,從而變相的完成了只讀表空間的恢復。

 

 

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

相關文章