ITPUB??ì3
2010数据库技术大会
ITPUB论坛 » Oracle数据库管理 » Rman操作简单分析


您有 2 条公共消息
  • 来自: 公共消息 标题: ITPUB邮箱已经恢复 内容: ITPUB邮箱用户请注意,邮箱现在已经恢复 web访问地址 http://emai ...
  • 来自: 公共消息 标题: 3-5月ITPUB数据库 ... 内容: ITPUB与3月和5月分别安排了Oracle 11g DBA和Oracle性能优化培训,以及 ...

    标题: Rman操作简单分析
    离线 Fenng
    版主


    精华贴数 32
    个人空间 0
    技术积分 53654 (12)
    社区积分 6636 (294)
    注册日期 2001-12-18
    论坛徽章:36
    现任管理团队成员2007年度最佳版主2009架构师大会纪念徽章ITPUB北京2009年会纪念徽章2010新春纪念徽章2010新春纪念徽章
    祖国60周年纪念徽章生肖徽章2007版:鼠生肖徽章2007版:虎生肖徽章2007版:虎生肖徽章2007版:蛇 

    发表于 2004-7-21 11:36 
    Rman操作简单分析

    在我的上一篇文章中为大家演示了rman 备份恢复的一个特定例子。(参考:http://www.dbanotes.net/Oracle/R ... ntrolfile_howto.htm)

    rman 对dbms_backup.restore 的一些特定调用完全可以通过 debug 分析出来。

    通过设置debug 模式,我们可以跟踪到大量的Log,从而为分析提供一定的说明。假定我们提交如下的命令:

    rman target / debug trace=d:/rman_trace.log

    通过查看日志我们得之,rman 首先确定数据库状态:

    DBGSQL: EXEC SQL AT TARGET select decode(status,'OPEN',1,0) into :b1  from v$instance
    DBGSQL:    sqlcode=0
    DBGSQL:       :b1 = 1

    判断数据库是否是在open 状态下。然后,要去获取数据库的compatible参数值。
    接下来调用dbms_backup_restore确定rman 可用的版本信息。对应的一些参数如下:

    protocol_version_number_min NUMBER := 8;
      protocol_release_number_min NUMBER := 0;
      protocol_update_number_min  NUMBER := 4;

      protocol_version_number_max NUMBER := 9;
      protocol_release_number_max NUMBER := 2;
      protocol_update_number_max  NUMBER := 0;

    804-920 ,这个范围内可用,804 ? 920 ? 是不是很熟悉?

    下面调用dbms_rcvman的getPackageVersion 函数
    ($ORACLE_HOME/rdbms/admin/recover.bsq创建dbms_rcvman ,并可以获得相关注释)获取package 的版本可用信息。

    08.00.04到09.02.00

    接下来rman 会查询V$database ,从中获取name ,resetlogs_time ,resetlogs_change# ,dbid 等信息。


    下面这个比较重要, x$kcccp( Kernel Cache Checkpoint Progress)中获取检查点记录:

    类似如下的SQL:
    select nvl(max(cpmid),0) from x$kcccp where cpsta=2

    这些操作完成后,rman 从v$option 中获取相关信息,包括:'Parallel backup and recovery','Incremental backup and

    recovery','Duplexed backups','Block Media Recovery','Point-in-time tablespace recovery',通过这些来判断数据库是否具有这些

    功能。

    然后Log中显示连接到目标数据库。

    分析过程并不复杂,不过在涉及到深入的命令的时候会产生大量的Log,要有一定的耐心才能继续下去。在rman 出现故障的时候,
    设置Debug模式进行分析是一种非常有效的办法。如果可能得话,以后的文章中我会举几个例子来说明。



    参考信息

    dbmsbkrs.sql 和 prvtbkrs.plb 文件说明注释(可在你的系统 $ORACLE_HOME/rdbms/admin/中找到.)

    《Oracle 9i RMAN备份与恢复技术》 清华出版社  2.12节 从开始到结束的rman进程 p41

    Steve Adams's Q+A http://www.ixora.com.au/q+a/0102/06135327.htm


    __________________
    我的Blog: www.dbanotes.net   


    点击即可用 Google Reader 订阅   

    支付宝官方Blog

    4nyth1n9 th4t can 90 wr0n9 wi11 9o wr0ng  
    不想做厨师的裁缝不是好司机






    《Oracle性能诊断艺术》出版了
    只看该作者    顶部
    离线 Fenng
    版主


    精华贴数 32
    个人空间 0
    技术积分 53654 (12)
    社区积分 6636 (294)
    注册日期 2001-12-18
    论坛徽章:36
    现任管理团队成员2007年度最佳版主2009架构师大会纪念徽章ITPUB北京2009年会纪念徽章2010新春纪念徽章2010新春纪念徽章
    祖国60周年纪念徽章生肖徽章2007版:鼠生肖徽章2007版:虎生肖徽章2007版:虎生肖徽章2007版:蛇 

    发表于 2004-7-21 11:41 
    数据库版本信息& 原始Log文件

    PHP code:


    Recovery Manager
    Release 9.2.0.1.0 Production



    Copyright 
    (c19952002Oracle Corporation.  All rights reserved.



    Windows 2000 Version 5.1 Service Pack 2v.2149CPU type 586

    Starting with debugging set to level
    =9types=ALL





    DBGSQL
    EXEC SQL AT TARGET select decode(status,'OPEN',1,0into :b1  from v$instance 

    DBGSQL
    :    sqlcode=0

    DBGSQL
    :       :b1 1



    DBGSQL
    EXEC SQL AT TARGET select value into :b1:b2  from v$parameter where name='compatible'

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = "9.2.0.0.0"



    DBGSQLEXEC SQL AT TARGET declare dot1st number dot2nd number dot3rd number begin dot1st := instr ( :vcomp_txt '.' ) ; dot2nd := instr ( :vcomp_txt '.' ) ; if instr ( :vcomp_txt '.' ) = 0 then dot3rd := length ( :vcomp_txt ) + ; else dot3rd := instr ( :vcomp_txt '.' ) ; end if ; :vcomp_txt := lpad substr ( :vcomp_txt dot1st -) , '0' ) || lpad substr ( :vcomp_txt dot1st dot2nd -dot1st -) , '0' ) || lpad substr ( :vcomp_txt dot2nd dot3rd -dot2nd -) , '0' ) ; :vcomp_ub4 := to_number ( :vcomp_txt ) ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = "090200"

    DBGSQL:       :b2 90200

    DBGMISC
    krmkpdbs(): vcomp_txt:090200 vcomp_ub4:90200 flags:1



    DBGSQL
    EXEC SQL AT TARGET begin :vsn_min := dbms_backup_restore protocol_version_number_min ; :rel_min := dbms_backup_restore protocol_release_number_min ; :upd_min := dbms_backup_restore protocol_update_number_min ; :vsn_max := dbms_backup_restore protocol_version_number_max ; :rel_max := dbms_backup_restore protocol_release_number_max ; :upd_max := dbms_backup_restore protocol_update_number_max ; <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn := to_char ( :vsn_max 'fm00' ) || '.' || to_char ( :rel_max 'fm00' ) || '.' || to_char ( :upd_max 'fm00' ) ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 8

    DBGSQL
    :       :b2 0

    DBGSQL
    :       :b3 4

    DBGSQL
    :       :b4 9

    DBGSQL
    :       :b5 2

    DBGSQL
    :       :b6 0

    DBGSQL
    :       :b7 = &quot;09.02.00&quot;



    DBGSQLEXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn<img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn_i := vsn ; if vsn is not null then <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;08.00.04&quot;

    DBGSQL:       :b3 80004



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn<img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn_i := vsn ; if vsn is not null then <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;08.00.05&quot;

    DBGSQL:       :b3 80005



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn<img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsn_i := vsn ; if vsn is not null then <img src="images/smilies/13.gif" smilieid="207" border="0" alt="" />kg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;08.01.03&quot;

    DBGSQL:       :b3 80103



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; :pkg_vsn:pkg_vsn_i := vsn ; if vsn is not null then :pkg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;08.01.05&quot;

    DBGSQL:       :b3 80105



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; :pkg_vsn:pkg_vsn_i := vsn ; if vsn is not null then :pkg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;08.01.06&quot;

    DBGSQL:       :b3 80106



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; :pkg_vsn:pkg_vsn_i := vsn ; if vsn is not null then :pkg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;08.01.07&quot;

    DBGSQL:       :b3 80107



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; :pkg_vsn:pkg_vsn_i := vsn ; if vsn is not null then :pkg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;09.00.00&quot;

    DBGSQL:       :b3 90000



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; :pkg_vsn:pkg_vsn_i := vsn ; if vsn is not null then :pkg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;09.02.00&quot;

    DBGSQL:       :b3 90200



    DBGSQL
    EXEC SQL AT TARGET declare vsn varchar2 20 ) ; begin vsn := dbms_rcvman getPackageVersion ; :pkg_vsn:pkg_vsn_i := vsn ; if vsn is not null then :pkg_vsnub4 := to_number substr vsn ) || substr vsn ) || substr vsn ) ) ; end if ; end ;

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 NULL

    DBGSQL
    :       :b3 90200



    DBGSQL
    EXEC SQL AT TARGET begin dbms_output enable 1000000 ) ; dbms_rcvman setDebugOn end ;

    DBGSQL:    sqlcode=0



    DBGSQL
    EXEC SQL AT TARGET select name ,resetlogs_time ,resetlogs_change# ,dbid ,rpad(name,8,'x') into :b1:b2,:b3,:b4,:b5:b6,:b7  from v$database 

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 = &quot;DEMO&quot;

    DBGSQL:       :b3 = &quot;19-JUL-04&quot;

    DBGSQL:       :b4 264188

    DBGSQL
    :       :b5 = -1022591970

    DBGSQL
    :       :b7 = &quot;DEMOxxxx&quot;



    DBGSQLEXEC SQL AT TARGET select nvl(max(cpmid),0into :b1  from x$kcccp where cpsta=2

    DBGSQL
    :    sqlcode=0

    DBGSQL
    :       :b1 = -1018768655



    DBGSQL
    EXEC SQL AT TARGET select decode(value,'TRUE',1,0into :b1  from v$option where parameter='Parallel backup and recovery'

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 1



    DBGSQL
    EXEC SQL AT TARGET select decode(value,'TRUE',1,0into :b1  from v$option where parameter='Incremental backup and recovery'

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 1



    DBGSQL
    EXEC SQL AT TARGET select decode(value,'TRUE',1,0into :b1  from v$option where parameter='Duplexed backups'

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 1



    DBGSQL
    EXEC SQL AT TARGET select decode(value,'TRUE',1,0into :b1  from v$option where parameter='Block Media Recovery'

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 1



    DBGSQL
    EXEC SQL AT TARGET select decode(value,'TRUE',1,0into :b1  from v$option where parameter='Point-in-time tablespace recovery'

    DBGSQL:    sqlcode=0

    DBGSQL
    :       :b1 1

    connected to target database
    DEMO (DBID=3272375326)




    __________________
    我的Blog: www.dbanotes.net   


    点击即可用 Google Reader 订阅   

    支付宝官方Blog

    4nyth1n9 th4t can 90 wr0n9 wi11 9o wr0ng  
    不想做厨师的裁缝不是好司机






    《Oracle性能诊断艺术》出版了
    只看该作者    顶部
    离线 wxhfriend
    宁静致远



    精华贴数 0
    个人空间 0
    技术积分 702 (3304)
    社区积分 98 (4328)
    注册日期 2004-3-8
    论坛徽章:3
    ITPUB元老授权会员2010新春纪念徽章   
          

    发表于 2004-9-11 23:30 
    Oracle 9i RMAN备份与恢复技术

    你有电子版的吗?


    __________________
    天行健,君子以自强不息;地势坤,君子以厚德载物。
    只看该作者    顶部
    离线 husthxd
    版主


    精华贴数 13
    个人空间 2087
    技术积分 63648 (9)
    社区积分 4213 (450)
    注册日期 2002-2-20
    论坛徽章:141
    现任管理团队成员ITPUB元老参与项目管理沙龙活动纪念第18届世界杯(德国)纪念徽章管理团队2006纪念徽章会员2007贡献徽章
    会员2006贡献徽章设计板块每日发贴之星2010新春纪念徽章2010年世界杯参赛球队:朝鲜2010年世界杯参赛球队:英格兰2010年世界杯参赛球队:科特迪瓦

    发表于 2004-9-12 00:13 


    QUOTE:
    最初由 wxhfriend 发布
    Oracle 9i RMAN备份与恢复技术

    你有电子版的吗?


    参考oracle文档
    rman用户指南


    __________________
    少吃饭,多吃菜少说话,多做事少灌水,多看文档
    -----------------------吃遍全城!--------------------
    -----------------------Java钻研中--------------------
    --------------------学好英语,报效祖国--------------------
    人生最幸福的事情莫过于通过自己的努力实现自己的梦想!
    http://space.itpub.net/6906/
    只看该作者    顶部
     
        

    相关内容


    CopyRight 1999-2006 itpub.net All Right Reserved.
    北京皓辰网域网络信息技术有限公司. 版权所有
    E-mail:Webmaster@itpub.net
    网站律师 隐私政策 知识产权声明
    京ICP证:060528号 联系我们