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

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


精华贴数 32
个人空间 0
技术积分 52897 (11)
社区积分 6590 (219)
注册日期 2001-12-18
论坛徽章:27
现任管理团队成员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 订阅   



4nyth1n9 th4t can 90 wr0n9 wi11 9o wr0ng  
不想做厨师的裁缝不是好司机
只看该作者    顶部
离线 Fenng
版主


精华贴数 32
个人空间 0
技术积分 52897 (11)
社区积分 6590 (219)
注册日期 2001-12-18
论坛徽章:27
现任管理团队成员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 订阅   



4nyth1n9 th4t can 90 wr0n9 wi11 9o wr0ng  
不想做厨师的裁缝不是好司机
只看该作者    顶部
离线 wxhfriend
宁静致远



精华贴数 0
个人空间 0
技术积分 568 (3332)
社区积分 86 (3623)
注册日期 2004-3-8
论坛徽章:2
ITPUB元老授权会员    
      

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

你有电子版的吗?


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


精华贴数 8
个人空间 1070
技术积分 60728 (9)
社区积分 3824 (354)
注册日期 2002-2-20
论坛徽章:104
现任管理团队成员ITPUB元老ITPUB北京九华山庄2008年会纪念徽章第18届世界杯(德国)纪念徽章管理团队2006纪念徽章会员2007贡献徽章
会员2006贡献徽章玉石琵琶九尾狐狸紫蜘蛛蓝色妖姬红孩儿

发表于 2004-9-12 00:13 


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

你有电子版的吗?


参考oracle文档
rman用户指南


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

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问