catalog 命令

達芬奇的夢發表於2017-03-29
使用catalog進入RMAN,命令如下
[oracle@host ~]$ rman targetcatalog
先來list一下
RMAN> list backup;
new incarnation of database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
RMAN會利用控制檔案自動重新同步的恢復資訊,保證catalog的最有效性
還可以在RMAN下手動重新同步資訊
RMAN> RESYNC CATALOG; #完全同步

有時候,我們可能用了非RMAN工具來備份資料庫檔案
比如,用系統複製執行了一個users表空間備份
SQL> ALTER TABLESPACE users BEGIN BACKUP;
(用系統複製命令將users表空間對應資料檔案複製到別處)
SQL> ALTER TABLESPACE users END BACKUP;
這時,RMAN的catalog中並沒有記錄到相關資訊
我們可以透過下面命令來為catalog新增備份資訊
RMAN> CATALOG DATAFILECOPY '/home/oracle/dumptest/users01.dbf';
cataloged datafile copy
datafile copy filename=/home/oracle/dumptest/users01.dbf...
這時候再用RMAN的list copy命令就可以檢視到剛剛新增的副本複製資訊了
同理,catalog命令還可以新增其它備份資訊
新增多個備份片資訊
RMAN> CATALOG BACKUPPIECE '/09dtq55d_1_2', '/0bdtqdou_1_1';
還可以新增某個目錄下所有未被RMAN記錄的相關檔案資訊
RMAN> CATALOG START WITH '/home/oracle/oradata/test/';
發現有未記錄的檔案,會提示
searching for all files that match the pattern /home/oracle/oradata/test/
List of Files Unknown to the Database
Do you really want to catalog the above files (enter YES or NO)?
如果其中有不符合的檔案會報錯
RMAN-07517: Reason: The file header is corrupted

既然有新增資訊,就有刪除資訊的命令
如果已經存在於catalog的備份資訊是無效的(檔案不存在或損壞等)
我們可以用CHANGE UNCATALOG命令來清除相關資訊

試驗一下,先將datafile 4(users01)做一個副本複製
RMAN> backup as copy datafile 4;

rman>backup as copy  database format '/oradata/backup_%u.BAK';
RMAN> list datafilecopy all;
此時還可看見相關資訊(對應key為647),執行下面命令

此時用系統命令刪除此副本檔案

RMAN> change datafilecopy 647 uncatalog;
再次list,此時key為647的副本複製資訊已經清除了
在這裡,要簡單說下和備份資訊相關的一些檢視
如果使用了catalog,這些資訊會分別存放在catalog和target的相關檢視中
catalog中的檢視,是以RC_開頭,target的檢視,是V$開頭
因為涉及檢視相當多(得幾十個),每個檢視還有許多欄位
用到什麼說什麼吧,就先說剛才的資料檔案副本複製
catalog下是RC_DATAFILE_COPY,簡單說幾個欄位
DB_KEY,區分target用的資料庫主鍵
DBINC_KEY,資料庫化身(incarnation)主鍵
DB_NAME,資料庫名
CDF_KEY,資料檔案副本複製的主鍵
RECID和STAMP,從target的V$DATAFILE_COPY得來,在target控制檔案中具有唯一性
NAME,檔名,含路徑
TAG,副本複製的tag名
FILE#,資料檔案絕對檔案號
BLOCKS,資料檔案副本的塊數
BLOCK_SIZE,塊大小,可利用blocks和block_size計算資料檔案副本大小
COMPLETION_TIME,副本複製建立完成時間
STATUS,副本狀態,包括
A可用(available),U不可用(unavailable),X過期(expired),D刪除(deleted)

target下是V$DATAFILE_COPY,資訊來自控制檔案
catalog下是RC_DATAFILE_COPY,簡單說幾個欄位
不包含DB_KEY,DBINC_KEY,DB_NAME,CDF_KEY
其它主要欄位都有

再簡單記錄一些命令
列出包含歸檔日誌的備份資訊
RMAN>list backup of archivelog all;
of引數可以用來限定檢視的型別
比如,list backup of datafile 1;
是列舉包含資料檔案1號(一般為system資料檔案)的備份

還原按照SCN號還原歸檔日誌
RMAN>restore archivelog from scn 898815 until scn 902871;

剛才提了個新名詞INCARNATION,中文個人暫翻譯為化身(可能不太合適)
資料庫resetlogs後,會成為新的開始,以前的備份將不再有用
在resetlogs後,也會生成新的incarnation,資料庫有相關檢視記錄incarnation歷史資訊
還會把資料庫日誌序號重新設定為1,並分配新的SCN
當前化身下透過執行resetlogs生成新化身,當前化身就稱為父化身(parent incarnation)
父化身和父化身的父化身,成為當前化身的祖化身(ancestor incarnations)
由一個祖化身產生兩個新化身,相互間成為同胞化身(sibling incarnations)
每個化身如果有各自的備份,相互之間是無法用來恢復的,稱為孤備份(Orphaned Backups)
化身在一些複雜的恢復情況下十分有用,今天先簡單瞭解,以後應用到再說
檢視資料庫incarnation命令
RMAN>LIST INCARNATION;
結果如下
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       8       TEST     1969292173       PARENT  1          30-JUN-05
(中間略)
1       69      TEST     1969292173       CURRENT 903961     18-JAN-09
如果catalog中註冊了多個target,可以用database引數進行區分
RMAN> LIST INCARNATION OF DATABASE 'TEST';

copy 多一份備份

RMAN>  backup as copy copy of database from tag='TAG20120310T095833' format '/oradata/ora10/backup_%f.bk';

 

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

相關文章