Oracle RMAN備份中catalog和nocatalog區別

wallimn發表於2011-08-29
轉自:http://blog.csdn.net/lenovouser/article/details/5142314

[b]nocatalog方式[/b]:用control file作為catalog,每一次備份都要往控制檔案裡面寫好多備份資訊,控制檔案裡面會有越來越多的備份資訊,即RMAN的備份資訊寫在本地控制檔案裡面。

[b]catalog方式[/b]:必須要首先要建立目錄備份資料庫(catalog,也稱知識庫),建立恢復目錄,即資料庫的備份資訊寫到恢復目錄裡面。

當通過rman nocatalog方式備份Oracle資料庫,Oracle使用controlfile存放RMAN的備份資訊。因此,當使用Rman nocatalog方式備份資料庫時,一定要記得備份controlfile。

初始化引數control_file__record_keep_time設定備份資訊儲存時間,到規定時間就自動清除以前的備份資訊:

SQL> alter sysem set control_file_record_keep_time=7 scope=spfile;

[b]注意:[/b]
當使用Rman nocatalog恢復時,資料庫至少是處於“mount”狀態的,即一定要先載入控制檔案,不然RMAN找不到記錄的備份資訊。而Oracle startup mount的前提條件是control必須存在。因此,你必須在恢復datafile之前先恢復controlfile。使用Rman catalog方式時,可以startup nomount然後restore controlfile;但使用Rman nocatalog時,必須先用檔案方式恢復controlfile。

下面對比一下Rman nocatalog和Rman catalog的恢復時的步驟,以便建立正確的備份策略(以下的恢復都是在online狀態下的備份):

[b]Rman nocatalog恢復:[/b]
1) 建立oracle執行環境(包括init或sp檔案)
2) 檔案方式恢復controlfile到init檔案指定的位置(或者先啟動到NOMOUNT,在RMAN中restore controlfile from autobackup)
3) startup mount
4) Rman,restore datafile,recover datafile
5) alter database open resetlogs

[b]Rman catalog恢復:[/b]
1) 建立oracle執行環境(包括init或sp檔案)
2) Rman ,restore controfile
3) alter database mount
4) Rman, restore datafile,recover datafile
5) alter database open resetlogs

可以看出,Rman nocatalog備份時,必須用檔案方式備份controlfile。

另外,由於nocatalog時利用controlfile存放備份資訊,建議將Oracle引數檔案中的CONTROL_FILE_RECORD_KEEP_TIME值加大(預設為7天), 該引數在$ORACLE_HOME/dbs/initSID.ora中(9i後也可能在spfile中,只能通過Oracle語句更改)。

恢復目錄(即catalog方式)支援如下的命令
{CREATE|UPGRADE|DROP} CATALOG
{CREATE|DELETE|REPLACE|PRINT} SCRIPT.
LIST INCARNATION
REGISTER DATABASE
REPORT SCHEMA AT TIME
RESET DATABASE
RESYNC CATALOG

[b]1、Resync命令[/b]
Resync可以同步資料庫與恢復目錄之間的資訊,在實際情況下,rman一般可以自動同步。
在如下情況下需要同步
·資料庫物理結構的改變
·資料檔案增加或者是改變大小
·表空間刪除
·回滾段的建立與刪除
·每產生10個歸檔日誌

[b]2、Reset 命令[/b]
目標資料庫resetlogs 之後,需要重新設定恢復目錄。Reset命令就用來重新設定恢復目錄。

相關文章