[20151111]跟踪调试rman.txt

[20151111]跟踪调试rman.txt

-- 上午查找在rman下执行list backup慢的问题,总结收集一些调试技巧,顺便在查看问题:

1.方法1,使用debug trace 参数:
--执行如下:
$ rman target / debug trace /tmp/aaa.txt

--为了显示的好看,我格式化其中一行.

DBGMISC:          EXITED krmkgal with status Done [10:52:04.659] elapsed time [00:00:00:00.031]
DBGMISC:          ENTERED krmkgal [10:52:04.659]

DBGSQL:            TARGET>

DECLARE
   thread     NUMBER;
   sequence   NUMBER;
   recid      NUMBER;
   alRec      dbms_rcvman.alRec_t;
BEGIN
   dbms_rcvman.getArchivedLog (alRec => alRec);

   IF (    :rlscn = alRec.rlgSCN
       AND :stopthr = alRec.thread
       AND (   (alRec.sequence >= :stopseq AND :toclause = 0)
            OR (alRec.sequence > :stopseq AND :toclause = 1)))
   THEN
      :flag := 1;
   ELSE
      :flag := 0;
      :al_key:al_key_i := alRec.key;
      :recid:recid_i := alRec.recid;
      :stamp:stamp_i := alRec.stamp;
      :thread := alRec.thread;
      :sequence := alRec.sequence;
      :fileName:fileName_i := alRec.fileName;
      :lowSCN := alRec.lowSCN;
      :lowTime := alRec.lowTime;
      :nextSCN := alRec.nextSCN;
      :nextTime := NVL (alRec.nextTime, TO_DATE ('12/31/9999', 'MM/DD/YYYY'));
      :rlgSCN := alRec.rlgSCN;
      :rlgTime := alRec.rlgTime;
      :blocks := alRec.blocks;
      :blockSize := alRec.blockSize;
      :status := alRec.status;
      :compTime:compTime_i := alRec.compTime;
      :duplicate := alRec.duplicate;
      :compressed:compressed_i := alRec.compressed;
      :isrdf:isrdf_i := alRec.isrdf;
      :stby := alRec.stby;
      :terminal := alRec.terminal;
      :site_key:site_key_i := alRec.site_key;
      :source_dbid := alRec.source_dbid;
   END IF;
END;

DBGSQL:               sqlcode = 0
DBGSQL:                B :flag = 0
DBGSQL:                B :al_key = 5545
DBGSQL:                B :recid = 5545
DBGSQL:                B :stamp = 891060419
DBGSQL:                B :thread = 1
DBGSQL:                B :sequence = 3705
DBGSQL:                B :fileName = NULL
DBGSQL:                B :lowSCN = 13202585849
DBGSQL:                B :lowTime = "2015-09-21 22:01:36"
DBGSQL:                B :nextSCN = 13202624095
DBGSQL:                B :nextTime = "2015-09-22 04:46:58"
DBGSQL:                B :rlgSCN = 3011113647
DBGSQL:                B :rlgTime = "2012-11-05 11:58:00"
DBGSQL:                B :blocks = 75872
DBGSQL:                B :blockSize = 512
DBGSQL:                B :status = D
DBGSQL:                B :compTime = "2015-09-22 04:46:59"
DBGSQL:                B :duplicate = 0
DBGSQL:                B :compressed = NO
DBGSQL:                B :isrdf = NO
DBGSQL:                B :stby = N
DBGSQL:                B :terminal = NO
DBGSQL:                B :site_key = 0
DBGSQL:                B :source_dbid = 0
DBGSQL:                B :rlscn = 3011113647
DBGSQL:                B :stopthr = 0
DBGSQL:                B :stopseq = 0
DBGSQL:                B :toclause = 0
       DBGRCVMAN: ENTERING getArchivedLog
       DBGRCVMAN: getArchivedLog - resetscn=3011113647 thread=1 seq=3705 lowscn=13202585849 nextscn=13202624095 terminal=NO site_key_order_col=0 isrdf=NO stamp=891060419
       DBGRCVMAN: getArchivedLogLast(translateArcLogSCNRange2) := local
       DBGRCVMAN: getArchivedLogLast := local
       DBGRCVMAN: EXITING getArchivedLog
DBGMISC:          EXITED krmkgal with status Done [10:52:05.124] elapsed time [00:00:00:00.465]
DBGMISC:          ENTERED krmkgal [10:52:05.124]

--上下对比时间10:52:04.659,10:52:05.124 ,说明单独执行一次需要: 5.124-4.659=0.465秒,真不知道为什么这么慢?
$ grep "DBGMISC:          EXITED krmkgal with status Done" /tmp/aaa.txt
DBGMISC:          EXITED krmkgal with status Done [15:55:15.831] elapsed time [00:00:00:00.007]
DBGMISC:          EXITED krmkgal with status Done [15:55:16.283] elapsed time [00:00:00:00.452]
DBGMISC:          EXITED krmkgal with status Done [15:55:16.778] elapsed time [00:00:00:00.495]
DBGMISC:          EXITED krmkgal with status Done [15:55:17.249] elapsed time [00:00:00:00.470]
DBGMISC:          EXITED krmkgal with status Done [15:55:17.726] elapsed time [00:00:00:00.477]
DBGMISC:          EXITED krmkgal with status Done [15:55:18.197] elapsed time [00:00:00:00.470]

--而dg上执行相同的命令:
DBGMISC:          EXITED krmkgal with status Done [15:52:31.585] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.588] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.591] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.594] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.598] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.601] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.604] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.607] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.611] elapsed time [00:00:00:00.003]
DBGMISC:          EXITED krmkgal with status Done [15:52:31.614] elapsed time [00:00:00:00.003]

--两者执行时间上相差也太大.不过dg上的cpu,磁盘都强健许多,但是差距也太大.相差100倍以上.

2.使用10046跟踪:

--在rman下调用如下:
sql "alter session set events ''10046 trace name context forever, level 12''";
list backupset;

--也可以这样调用:
run
{
allocate channel c1 type disk ;
sql "alter session set events ''10046 trace name context forever, level 12''";
backup spfile;
##list backup;
release channel c1 ;
}

--不过奇怪的是不能run里面执行list backup的命令.
RMAN> run
2> {
3> list backup;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "list": expecting one of: "advise, allocate, alter, backup, @, catalog, change,
configure, convert, copy, crosscheck, delete, duplicate, execute, flashback, host, mount, open, recover, release,
repair, report, restore, resync, send, set, show, shutdown, sql, startup, switch, transport, validate, "
RMAN-01007: at line 3 column 1 file: standard input

--但是执行如下,没有问题,真搞不懂oracle rman的语法.
run
{
report schema ;   
}

总结:
--依旧无法定位,暂时放弃.上午的测试仅仅减少了循环的次数,但是每次的执行时间依旧不变,目前仅仅手工清除记录在控制文件的archivelog信息.
-- execute dbms_backup_restore.resetcfilesection(11);

时间: 2024-07-30 10:47:24

[20151111]跟踪调试rman.txt的相关文章

PL/SQL Developper不支持单步跟踪调试的解决方法

今天刚换了一个Schema进行测试,突然发现存储过程无法进行单步跟踪调试了,郁闷呀,原来的Schema对存储过程单步调试如鱼得水,新的Schema为何不行了?与数据库设置有关?试了半天,原来右击存储过程有个选项"Add Debug Information"勾上就Okay,小小经验,为大家开发加速. 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

PHP在浏览器上跟踪调试的方法以及使用ChromePhp、FirePHP的简单介绍

之前用ThinkPHP时发现有个 trace 函数可以跟踪调试,感觉很有意思,网上搜索了下类似的东西,发现了 ChromePhp ,以前没想过这样来调试 PHP 程序,感觉非常方便,很有用. ThinkPHP 使用的是自己生成的 HTML 随模版一起输出来显示,偶尔会遇到一些莫名其妙的问题,效果不是太好, 还有一些也是类似的方法,但输出的主要是在模版中增加 JS 代码,调用浏览器的调试方法进行输出调试 如 console.log('PHP的一些调试输出内容'); ChromePhp 是通过hea

__FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )

root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H        #define GLOBAL_H        #include <stdio.h>        int funca(void);        int funcb(void);#endifroot@xuanfei-desktop:~/cpropram/2# cat funca.c //函数a#include "global.h&

[20160816]使用oradebug跟踪sql net.txt

[20160816]使用oradebug跟踪sql net.txt --可以oradebug跟踪包,可以不用修改sqlnet.ora等文件参数,做一个记录. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ------------------------------------------

[20161130]11g跟踪文件位置.txt

[20161130]11g跟踪文件位置.txt --11G使用adrci管理跟踪文件,支持XML,不再像10g那样的目录管理方式. --实际上在安装时仅仅设置参数diagnostic_dest.看看我的测试机器. 1.环境: SYS@book> @ &r/ver1 PORT_STRING         VERSION     BANNER ------------------- ----------- --------------------------------------------

如何在Shell脚本中跟踪调试命令的执行

在 shell 脚本调试系列 中,本文将解释第三种 shell 脚本调试模式,即 shell 跟踪,并查看一些示例来演示它如何工作以及如何使用它. 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的例子展示了如何在这些模式下启用 shell 脚本调试. 如何在 Linux 中启用 Shell 脚本的调试模式 如何在 Shell 脚本中执行语法检查调试模式 shell 跟踪简单的来说就是跟踪 shell 脚本中的命令的执行.要打开 shell 跟

怎么才能跟踪调试,一个页面都触发了哪些event或者函数啊?

问题描述 就是把断点放到我自己的事件处理函数里,然后按F10/F11调试,但一步步的调试到我自己的事件处理函数最后一行,然后程序就自动执行了,没法知道在我的事件处理函数后,程序又触发了哪些事件,或者调用了哪些函数,怎么办呢? 解决方案 解决方案二:一个事件完成后,你肯定要接着再进行某些操作再触发另一个事件啊...比如你加载页面时在触发Page_onLoad事件设置断点,F11单步调试...页面加载完毕后在页面中填写某些信息...再点击按钮提交...则又触发了btn_OnClick事件.如此接着F

如何在 Shell 脚本中跟踪调试命令的执行

在 shell 脚本调试系列 中,本文将解释第三种 shell 脚本调试模式,即 shell 跟踪,并查看一些示例来演示它如何工作以及如何使用它. 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的例子展示了如何在这些模式下启用 shell 脚本调试. 如何在 Linux 中启用 Shell 脚本的调试模式 如何在 Shell 脚本中执行语法检查调试模式 shell 跟踪简单的来说就是跟踪 shell 脚本中的命令的执行.要打开 shell 跟

使用Linux Strace跟踪调试Oracle程序进程

  所谓操作系统,是应用程序与服务器硬件进行沟通的中间层.应用程序的所有操作,都是和操作系统进行沟通交互.操作系统负责将所有交互转化为设备语言,进行硬件交互. 我们在进行Oracle故障调试和内核原理工作的时候,经常需要了解后台运行的动作和细节.一些故障场景,如程序进程hang住.无法登陆等问题,就需要操作系统级别监控,检查定位问题. Oracle自身已经提供了很多这类型的工具,如oradebug.各种等待事件和跟踪方式.此外,各类型的操作系统提供出很多系统级别工具,帮助我们进行监控.本篇主要介