[Oracle] Rman内部行为初探

作者:Fenng
日期:21-Jul-2004 
出处:http://www.dbanotes.net
版本:0.9


在我的另一篇文章中为大家演示了 rman (Recovery Manager) 备份恢复的一个特定例子。 (请参考:http://www.dbanotes.net/Oracle/Rman_nocatalog_lost_controlfile_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)中获取检查点记录:

rman发出类似如下的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中显示连接到目标数据库(显示实例名字和dbid)

总结一下

我们从上面看出,对跟踪得到的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



本文作者

Fenng,某美资公司DBA,业余时间混迹于各数据库相关的技术论坛且乐此不疲。 目前关注如何利用ORACLE数据库有效地构建企业应用。对Oracle tuning、troubleshooting有一点研究。
个人技术站点:http://www.dbanotes.net/ 。 可以通过电子邮件 [email protected] 联系到他。

原文出处

http://www.dbanotes.net/Oracle/Oracle_DBMS_SUPPORT.htm

回上页<-|->回首页

All Articles (by Fenng) are licensed under a Creative Commons License.
I would welcome any feedback. Please send questions, comments or corrections to [email protected]
Valid XHTML 4.01 / Valid CSS