通过设置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模式进行分析是一种非常有效的办法。如果可能得话,以后的文章中我会举几个例子来说明。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器