Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1201359
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-10 11:30:23

涂抹ORACLE试阅章节:第8章-Rman说,我能

8.4.4 报表显示——REPORT命令

  REPORT 命令主要是用于当前备份信息的分析,如哪些备份已经过期,哪些文件该备份,哪些备份不可用,哪些备份可以删除之类的。

  REPORT 命令特别提供了一个SCHEMA关键字,可以用来查看的模式信息(注意此模式非用户的模式哟),比如某个时间段的数据库结构,不过,使用这些功能的前提就是必须首先拥有足够的备份,不然使用REPORT命令得出的结果恐怕也满足不了你的需求啊。

  • 查看7天前数据库的模式:
    RMAN> REPORT SCHEMA AT TIME  ' SYSDATE-7 ' ;

  注意,查看模式信息必须连接到catalog数据库。

  • 查看所有需要备份的文件:
    RMAN> REPORT NEED BACKUP; 
  • 查看指定表空间是否需要备份:
    RMAN> REPORT NEED BACKUP TABLESPACE SYSTEM;
  • 查看过期备份:
    RMAN> REPORT OBSOLETE;

8.4.5 执行检查——CROSSCHECK命令

  CROSSCHECK 命令用来检查备份或归档物理文件的状态,如果物理文件存在,并且控制文件(或恢复目录)中有匹配记录,则标记该对象的状态为 AVAILABLE (有效),如果文件已经不存在了,则标记该对象状态为 EXPIRED (无效)。

  CROSSCHECK 命令并不会主动删除文件(也确实没有这个功能),它只是修改控制文件中对应记录的状态标志,因此如果想删除那些 EXPIRED 的记录,还是得手动通过 DELETE EXPIRED 命令进行。

  检查所有归档文件:

    RMAN> CROSSCHECK ARCHIVELOG ALL;

    提示:

    当操作系统环境变量NLS_LANG指定为中文SIMPLIFIED CHINESE_CHINA时,执行CROSSCHECK命令检查归档,如果结果显示“对归档日志的验证失败”,但你又确定该文件存在,别着急,这其实是Oracle 10g版本中的一个bug,验证归档文件显示的结果是反着的,如果显示验证失败说明验证是成功的,反倒是提示验证成功的话你就要小心了,说明验证失败了。 这不是CROSSCHECK命令自身的问题,而是Oracle中英文翻译的问题,设置NLS_LANG为AMERICAN_AMERICA,在英文环境下检查显示一切正常。

  检查所有备份集:

    RMAN> CROSSCHECK BACKUP;

8.4.6 修改状态——CHANGE命令

  CHANGE 命令可以用来修改备份文件或归档文件的状态,不是指物理文件,而是这些文件在控制文件(或恢复目录)中对应记录的状态,状态有两种: AVAILABLE (可用)和 UNAVAILABLE (不可用)。

  例如,修改指定备份集状态为 UNAVAILABLE :

    RMAN> CHANGE BACKUPSET  n  UNAVAILABLE;

  注意,n 为备份集序号,指定的备份集必须确实存在,不然执行会报错。

  修改指定表空间的备份集为 UNAVAILABLE :

    RMAN> CHANGE BACKUP OF TABLESPACE USERS UNAVAILABLE;

  修改指定归档文件状态为 UNAVAILABLE :

    RMAN>  CHANGE ARCHIVELOG LOGSEQ =n  UNAVAILABLE;

  提示,这里的n为归档文件序号,可以通过 LIST ARCHIVELOG ALL 或查询 V$ARCHIVED_LOG 获取。当然你也可以指定归档文件详细路径。

  如果将指定对象状态修改为可用,执行上述命令时将关键字 UNAVAILABLE 改为 AVAILABLE 即可,这里不做演示了。

  另外,与CROSSCHECK命令不同,CHANGE命令附带了 DELETE 子句,配合使用能够在修改记录状态的同时直接删除物理文件,功能那是相当彪悍,例如,删除某个归档文件:

    RMAN>  CHANGE ARCHIVELOG LOGSEQ =n  DELETE ;

  又见到n,这个n是指啥俺先不说,让你猜,猜对了俺就告诉你。

8.4.7 综述

  前面介绍了很多命令(即使介绍的几个也没有完全展开,只介绍了该命令的一些常用功能),其实中的命令远不止这几个(最最重要的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: syntax error: found "identifier": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate"

  虽然又报出了RMAN-01009错误,但是你看,RMAN中支持的命令是不是也都列出来了呢?这个示例告诉我们,出错也不全是坏事哟。嘿嘿,自己躲墙角偷偷乐去吧,旁人俺都不告诉他的。

  不过如果次次输入都报错就显得太不专业了,因此偷偷用就好,如果你的工作时刻被领导关注着,那俺还是建议你务必要牢记一些常用命令。

=================================================
  • |
  • 购买 ||||

阅读(1042) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~