这篇文章给大家介绍如何理解catalog命令,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
使用catalog进入RMAN,命令如下
[oracle@host ~]$ rman targetsys/sys@testcatalogrman/rman@cat
先来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';
关于如何理解catalog命令就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。