RMAN debug trace

前一段时间,某个项目做rman全备,在自动备份控制文件时会hang住,我发现异常。查了下mos,rman可以做debug,也可以做10046,这里记录一下:

rman target / log=rman.log trace=trace.trc debug
run{
debug on 
backup database format '/u01/rman/fuulldb.bak';
debug off 
}

rman target / log rman.log trace rman.trc debug 
run {  
sql "alter session set events ''10046 trace name context forever, level 12''";  
set command id to 'rman'; 
backup database format '/u01/rman/fuulldb.bak';
}

另外发现生成的debug文件可以追踪完整的rman备份,实际上rman备份利用的如下dbms包
sys.dbms_backup_restore.backupDataFile

PRMVAL =  memnum := 6;
DBGPLSQL:             477 TEXTNOD =   
DBGPLSQL:             478 PRMVAL =  dfnumber := 100; tsname := 'QCZJ'; fname := '+DATA/ORACLE/738D3B5541630D6FE05395FA87177B80/DATAFILE/qczj.377.985713711'; blocks := 262144; blksize := 8192;
DBGPLSQL:             479 TEXTNOD =   if (first_time) then
DBGPLSQL:             480 TEXTNOD =      if validatecmd then
DBGPLSQL:             481 TEXTNOD =         krmicd.writeMsg(8141, krmicd.getChid);
DBGPLSQL:             482 TEXTNOD =      elsif not docopies then
DBGPLSQL:             483 TEXTNOD =         krmicd.writeMsg(8010, krmicd.getChid);
DBGPLSQL:             484 TEXTNOD =      end if;
DBGPLSQL:             485 TEXTNOD =      first_time := FALSE;
DBGPLSQL:             486 TEXTNOD =   end if;
DBGPLSQL:             487 TEXTNOD =   if files < memnum then
DBGPLSQL:             488 TEXTNOD =     begin
DBGPLSQL:             489 TEXTNOD =        sys.dbms_backup_restore.backupDataFile(dfnumber => dfnumber, 
DBGPLSQL:             490 PRMVAL = max_corrupt=>0,since_change=>0
DBGPLSQL:             491 TEXTNOD = );
DBGPLSQL:             492 TEXTNOD =        if convertdb then
DBGPLSQL:             493 TEXTNOD =           if transonlyundo then
DBGPLSQL:             494 TEXTNOD =              processfile := krmicd.isFileUndo(dfnumber);
DBGPLSQL:             495 TEXTNOD =           end if;
DBGPLSQL:             496 TEXTNOD =  
DBGPLSQL:             497 TEXTNOD =           if processfile then
DBGPLSQL:             498 TEXTNOD =              if transontarget then
DBGPLSQL:             499 TEXTNOD =                 krmicd.writeMsg(8305, krmicd.getChid);
DBGPLSQL:             500 TEXTNOD =              else
DBGPLSQL:             501 TEXTNOD =                 krmicd.writeMsg(8589, krmicd.getChid);
DBGPLSQL:             502 TEXTNOD =              end if;
DBGPLSQL:             503 TEXTNOD =           end if;
DBGPLSQL:             504 TEXTNOD =           
DBGPLSQL:             505 TEXTNOD =        end if;
DBGPLSQL:             506 TEXTNOD =  
DBGPLSQL:             507 TEXTNOD =        if processfile then
DBGPLSQL:             508 TEXTNOD =           krmicd.writeMsg(8522, to_char(dfnumber, 'FM09999'), fname);
DBGPLSQL:             509 TEXTNOD =  
DBGPLSQL:             510 TEXTNOD =           deb('budf_name', 'blocks=' || blocks || ' block_size=' || blksize,
DBGPLSQL:             511 TEXTNOD =               rman_constant.DEBUG_IO, rman_constant.LEVEL_MIN);
DBGPLSQL:             512 TEXTNOD =        end if;
DBGPLSQL:             513 TEXTNOD =     exception
DBGPLSQL:             514 TEXTNOD =        when sys.dbms_backup_restore.inc_scn_matches_df_scn then
DBGPLSQL:             515 TEXTNOD =           krmicd.writeMsg(8522, to_char(dfnumber, 'FM09999'), fname);
DBGPLSQL:             516 TEXTNOD =           krmicd.writeMsg(8056, to_char(dfnumber, 'FM09999'));
DBGPLSQL:             517 TEXTNOD =           krmicd.clearErrors;
DBGPLSQL:             518 TEXTNOD =     end;
DBGPLSQL:             519 TEXTNOD =     files := files + 1;
DBGPLSQL:             520 TEXTNOD =   end if;
DBGPLSQL:             521 TEXTNOD = --

MOS ID 412950.1
ORA-19511: How to determine if an RMAN FAILURE is caused by MML - Media Manager Layer (文档 ID 412950.1)

另外这里记下:
如果数据库日志切换太频繁,会导致rman全备备份控制文件时被hang住。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值