2013年(350)
分类: Oracle
2013-04-10 11:30:23
REPORT 命令主要是用于当前备份信息的分析,如哪些备份已经过期,哪些文件该备份,哪些备份不可用,哪些备份可以删除之类的。
REPORT 命令特别提供了一个SCHEMA关键字,可以用来查看的模式信息(注意此模式非用户的模式哟),比如某个时间段的数据库结构,不过,使用这些功能的前提就是必须首先拥有足够的备份,不然使用REPORT命令得出的结果恐怕也满足不了你的需求啊。
注意,查看模式信息必须连接到catalog数据库。
CROSSCHECK 命令用来检查备份或归档物理文件的状态,如果物理文件存在,并且控制文件(或恢复目录)中有匹配记录,则标记该对象的状态为 AVAILABLE (有效),如果文件已经不存在了,则标记该对象状态为 EXPIRED (无效)。
CROSSCHECK 命令并不会主动删除文件(也确实没有这个功能),它只是修改控制文件中对应记录的状态标志,因此如果想删除那些 EXPIRED 的记录,还是得手动通过 DELETE EXPIRED 命令进行。
检查所有归档文件:
提示:
当操作系统环境变量NLS_LANG指定为中文SIMPLIFIED CHINESE_CHINA时,执行CROSSCHECK命令检查归档,如果结果显示“对归档日志的验证失败”,但你又确定该文件存在,别着急,这其实是Oracle 10g版本中的一个bug,验证归档文件显示的结果是反着的,如果显示验证失败说明验证是成功的,反倒是提示验证成功的话你就要小心了,说明验证失败了。 这不是CROSSCHECK命令自身的问题,而是Oracle中英文翻译的问题,设置NLS_LANG为AMERICAN_AMERICA,在英文环境下检查显示一切正常。检查所有备份集:
CHANGE 命令可以用来修改备份文件或归档文件的状态,不是指物理文件,而是这些文件在控制文件(或恢复目录)中对应记录的状态,状态有两种: AVAILABLE (可用)和 UNAVAILABLE (不可用)。
例如,修改指定备份集状态为 UNAVAILABLE :
注意,n 为备份集序号,指定的备份集必须确实存在,不然执行会报错。
修改指定表空间的备份集为 UNAVAILABLE :
修改指定归档文件状态为 UNAVAILABLE :
提示,这里的n为归档文件序号,可以通过 LIST ARCHIVELOG ALL 或查询 V$ARCHIVED_LOG 获取。当然你也可以指定归档文件详细路径。
如果将指定对象状态修改为可用,执行上述命令时将关键字 UNAVAILABLE 改为 AVAILABLE 即可,这里不做演示了。
另外,与CROSSCHECK命令不同,CHANGE命令附带了 DELETE 子句,配合使用能够在修改记录状态的同时直接删除物理文件,功能那是相当彪悍,例如,删除某个归档文件:
又见到n,这个n是指啥俺先不说,让你猜,猜对了俺就告诉你。
前面介绍了很多命令(即使介绍的几个也没有完全展开,只介绍了该命令的一些常用功能),其实中的命令远不止这几个(最最重要的BACKUP命令和RESTORE命令都没介绍哪,没错,俺是成心的),可调用参数也远不止这些。你是不是已经觉着命令太多,而且每个命令又有太多调用参数,完全记不住?老实说,俺也记不全,不过俺有超级必杀技,命令再多也不怕。悄悄告诉你,俺的秘技就是完全不用记,别倒别倒,俺不准备教你学太极,俺刚才的话还没说完。俺的意思是说,记不住不要紧,只要注意看RMAN的提示信息就好了。
比如想查看已经备份的归档,只记得要用LIST命令查看,后面应该加什么参数全忘了,没关系,那就先执行LIST命令好了:
RMAN> LIST;
RMAN-01009: syntax error: found ";": expecting one of: " all, archivelog, backup, backuppiece, backupset, backed, completed, copy, controlfilecopy, datafilecopy, device, expired, global, incarnation, like, proxy, recoverable, script, tag "你看,返回了一堆的信息,提示你语法错误,只能支持上述加粗显示的那些关键字。
根据提示信息,隐约记得应该是BACKUP关键字,那就敲上BACKUP试试看:
RMAN> LIST BACKUP OF;
RMAN-01009: syntax error: found ";": expecting one of: " archivelog, controlfile, database, datafile, spfile, tablespace "哈哈,又报错了啊, en ,提示越来越清楚了,加参数 ARCHIVELOG 再试试:
RMAN> LIST BACKUP OF ARCHIVELOG ;
RMAN-01009: syntax error: found ";": expecting one of: " all, from, high, like, logseq, low, scn, sequence, time, until "OK ,基本明了,我们的目的是要查看所有备份的归档,最后再加参数ALL就好了:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
...结果显示出来了吧,目标实现,竣工!
如果你连RMAN中有哪些命令都忘记了,没关系,随便输入个字母再按回车键试试:
虽然又报出了RMAN-01009错误,但是你看,RMAN中支持的命令是不是也都列出来了呢?这个示例告诉我们,出错也不全是坏事哟。嘿嘿,自己躲墙角偷偷乐去吧,旁人俺都不告诉他的。
不过如果次次输入都报错就显得太不专业了,因此偷偷用就好,如果你的工作时刻被领导关注着,那俺还是建议你务必要牢记一些常用命令。
=================================================