利用XTTS增量进行跨平台迁移遭遇Bug

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: 利用XTTS增量进行跨平台迁移遭遇Bug

在某客户这里进行XTTS的增量测试,大概10TB的样子,脚本挂后台运行,发现只完成了2T多一点,看日志有很多error。这让我非常不解,部分文件能够转换成功,部分转换不成功,提示数据库为非归档模式,为如下类型错误:

[ora1124@cszwadb1 xtts_l_2]$ rman target / debug trace=/tmp/xtts_debug.log

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Mar 18 10:40:07 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

RMAN-06006: connected to target database: XTT (not mounted)

RMAN> convert from platform 'AIX-Based Systems (64-bit)' datafile  '/test/oracle/accta/oradata/vgacctdb02/lv_vg02_10g_011'
format '+DG_DATA01/accta/datafile/vgacctdb02/lv_vg02_10g_011.dbf' ;

RMAN-03090: Starting conversion at target at 18-MAR-15
RMAN-06009: using target database control file instead of recovery catalog
RMAN-08030: allocated channel: ORA_DISK_1
RMAN-08500: channel ORA_DISK_1: SID=5004 device type=DISK
RMAN-08589: channel ORA_DISK_1: starting datafile conversion
RMAN-08506: input file name=/test/oracle/accta/oradata/vgacctdb02/lv_vg02_10g_011
RMAN-06731: command backup:87.2% complete, time left 00:00:18
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of conversion at target command on ORA_DISK_1 channel at 03/18/2015 10:42:46
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

通过打开rman的debug操作,发现确实会去判断该实例是否未归档模式,如下:

[ora1124@cszwadb1 xtts_l]$ tail -f /tmp/xtts_debug.log
DBGRPC:       ENTERED krmqgns
DBGRPC:        krmqgns: looking for work for channel default (krmqgns)
DBGRPC:        krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:        CMD type=backup cmdid=1 status=STARTED
DBGRPC:              1 STEPstepid=1 cmdid=1 status=STARTED devtype=DISK
DBGRPC:        krmqgns: no work found for channel default (krmqgns)
DBGRPC:         (krmqgns)
。。。。。。。

DBGSQL:         TARGET> select decode(open_mode, 'MOUNTED', 0, 'READ WRITE', 1, 'READ ONLY', 1, 'READ ONLY WITH APPLY', 1, 0) into :isdbopen from v$database
DBGSQL:            sqlcode = 1507
DBGSQL:         error: ORA-01507: database not mounted (krmkosqlerr)
DBGSQL:          (krmkosqlerr)
DBGSQL:        EXITED krmkosqlerr
RMAN-06731: command backup:87.2% complete, time left 00:00:18
DBGSQL:       EXITED krmkrpr with status 0
DBGRPC:       ENTERED krmqgns
DBGRPC:        krmqgns: looking for work for channel default (krmqgns)
DBGRPC:        krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:        CMD type=backup cmdid=1 status=STARTED
DBGRPC:              1 STEPstepid=1 cmdid=1 status=STARTED devtype=DISK
DBGRPC:        krmqgns: no work found for channel default (krmqgns)
DBGRPC:         (krmqgns)
DBGRPC:       EXITED krmqgns with status 1
DBGRPC:       krmxpoq - returning rpc_number: 17 with status: STARTED16 for channel ORA_DISK_1
DBGRPC:       ENTERED krmqgns
DBGRPC:        krmqgns: looking for work for channel default (krmqgns)
DBGRPC:        krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:        CMD type=backup cmdid=1 status=STARTED
DBGRPC:              1 STEPstepid=1 cmdid=1 status=STARTED devtype=DISK
DBGRPC:        krmqgns: no work found for channel default (krmqgns)
DBGRPC:         (krmqgns)
DBGRPC:       EXITED krmqgns with status 1
DBGRPC:       krmxpoq - returning rpc_number: 17 with status: STARTED16 for channel ORA_DISK_1
DBGRPC:       krmxr - sleeping for 10 seconds
DBGRPC:       ENTERED krmqgns
DBGRPC:        krmqgns: looking for work for channel default (krmqgns)
DBGRPC:        krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:        CMD type=backup cmdid=1 status=STARTED
DBGRPC:              1 STEPstepid=1 cmdid=1 status=STARTED devtype=DISK
DBGRPC:        krmqgns: no work found for channel default (krmqgns)
DBGRPC:         (krmqgns)
DBGRPC:       EXITED krmqgns with status 1
DBGRPC:       krmxpoq - returning rpc_number: 17 with status: STARTED16 for channel ORA_DISK_1
DBGRPC:       krmxr - sleeping for 10 seconds
DBGRPC:       ENTERED krmqgns
DBGRPC:        krmqgns: looking for work for channel default (krmqgns)
DBGRPC:        krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:        CMD type=backup cmdid=1 status=STARTED
DBGRPC:              1 STEPstepid=1 cmdid=1 status=STARTED devtype=DISK
DBGRPC:        krmqgns: no work found for channel default (krmqgns)
DBGRPC:         (krmqgns)
DBGRPC:       EXITED krmqgns with status 1
DBGRPC:       krmxpoq - returning rpc_number: 17 with status: FINISHED16 for channel ORA_DISK_1
DBGRPC:       krmxr - channel ORA_DISK_1 calling peicnt
DBGRPC:       krmxrpc - channel ORA_DISK_1 kpurpc2 err=19583 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPPIECECREATE excl: 167
DBGRPC:       krmxrpc - caloing krmxtrim: with message of length 167: @@@ORA-19583: conversation terminated due to error
DBGRPC:       ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
DBGRPC:       ORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 1384
DBGRPC:       @@@
DBGMISC:      ENTERED krmzejob [10:42:46.639]
DBGMISC:       Input Args(failed=1),(errnum=-19583) [10:42:46.639] (krmzejob)
DBGMISC:       duration(stepid=1),endtime=874636966,jobtime=145s [10:42:46.639] (krmzejob)
DBGMISC:       duration(stepid=1), remaining(chn sec,bytes)=(0,10736369664) [10:42:46.639] (krmzejob)
DBGMISC:      EXITED krmzejob with status 0 (FALSE) [10:42:46.639] elapsed time [00:00:00:00.000]
DBGRPC:       krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.GETLIMIT excl: 0
DBGRPC:       krmxr - channel ORA_DISK_1 returned from peicnt
DBGMISC:      ENTERED krmstrim [10:42:46.640]
DBGMISC:       Trimming message: ORA-19583: conversation terminated due to error [10:42:46.640] (krmstrim)
DBGMISC:       ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode (krmstrim)
DBGMISC:       ORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 1384 (krmstrim)
DBGMISC:       ORA-06512: at line 554 (krmstrim)
DBGMISC:        (190) (krmstrim)
DBGMISC:      EXITED krmstrim with status 23 [10:42:46.640] elapsed time [00:00:00:00.000]
DBGRPC:       krmxr - channel ORA_DISK_1 got execution errors (step_60)
DBGRPC:       krmxr - exiting with 1
DBGMISC:      krmqexe: unhandled exception on channel ORA_DISK_1 [10:42:46.640]
DBGMISC:     EXITED krmiexe with status 1 [10:42:46.640] elapsed time [00:00:02:25.142]
DBGMISC:     ENTERED krmkmrsr [10:42:46.640]
DBGMISC:     EXITED krmkmrsr [10:42:46.640] elapsed time [00:00:00:00.000]
DBGMISC:     ENTERED krmkjcl [10:42:46.640]
DBGSQL:       ENTERED krmkosqlerr

DBGSQL:        TARGET> select decode(open_mode, 'MOUNTED', 0, 'READ WRITE', 1, 'READ ONLY', 1, 'READ ONLY WITH APPLY', 1, 0) into :isdbopen from v$database
DBGSQL:           sqlcode = 1507
DBGSQL:        error: ORA-01507: database not mounted (krmkosqlerr)
DBGSQL:         (krmkosqlerr)
DBGSQL:       EXITED krmkosqlerr

DBGSQL:       TARGET> select decode(status, 'OPEN', 1, 0), decode(archiver, 'FAILED', 1, 0), decode(database_status, 'SUSPENDED', 1, 0) into :status, :archstuck, :dbsuspended from v$instance
DBGSQL:          sqlcode = 0
DBGSQL:           D :status = 0
DBGSQL:           D :archstuck = 0
DBGSQL:           D :dbsuspended = 0

DBGSQL:       TARGET> select value into :vcomp_txt from  v$parameter where name = 'compatible'
DBGSQL:          sqlcode = 0
DBGSQL:           D :vcomp_txt = 11.2.0.4.0

DBGSQL:       TARGET> declare dot1st number; dot2nd number; dot3rd number; comptxt varchar2(255) := :vcomp_txt; begin comptxt := comptxt || '.0.0'; dot1st := instr(comptxt, '.', 1, 1); dot2nd := instr(comptxt, '.', 1, 2); dot3rd := instr(comptxt, '.', 1, 3); comptxt :=  lpad(substr(comptxt, 1, dot1st - 1), 2, '0') || lpad(substr(comptxt, dot1st + 1, dot2nd - dot1st - 1), 2, '0')  || lpad(substr(comptxt, dot2nd + 1, dot3rd - dot2nd - 1), 2, '0');:vcomp_ub4 := to_number(comptxt); end;
DBGSQL:          sqlcode = 0
DBGSQL:           B :vcomp_ub4 = 110200
DBGSQL:           B :vcomp_txt = 11.2.0.4.0
DBGMISC:      krmkpdbs(): vcomp_txt:11.2.0.4.0 vcomp_ub4:110200 flags:0 [10:42:46.646]
DBGSQL:       ENTERED krmkusl
DBGSQL:       EXITED krmkusl with status 0
DBGSQL:       ENTERED krmkusl
DBGSQL:       EXITED krmkusl with status 0
DBGMISC:     EXITED krmkjcl [10:42:46.647] elapsed time [00:00:00:00.006]
DBGMISC:     error recovery releasing channel resources [10:42:46.647]
DBGRPC:      krmxcr - channel ORA_DISK_1 resetted
DBGRPC:      krmxcr - channel default resetted
DBGMISC:     ENTERED krmice [10:42:46.647]
DBGMISC:      command to be compiled and executed is: cleanup  [10:42:46.647] (krmice)
DBGMISC:      command after this command is: NONE  [10:42:46.647] (krmice)
DBGMISC:      current incarnation does not matter for cleanup [10:42:46.647] (krmice)
DBGMISC:      ENTERED krmicomp [10:42:46.647]
DBGMISC:       ENTERED krmkomp [10:42:46.647]
DBGRCV:         ENTERED krmkucls
DBGRCV:         EXITED krmkucls with address 0
DBGMISC:        krmkcomp - Name translation defaults to catalog - 2 [10:42:46.647] (krmkomp)
DBGMISC:        ENTERED krmknmtr [10:42:46.647]
DBGMISC:        EXITED krmknmtr with status cleanup [10:42:46.647] elapsed time [00:00:00:00.000]
DBGMISC:        ENTERED krmkdps [10:42:46.648]
DBGMISC:        EXITED krmkdps [10:42:46.648] elapsed time [00:00:00:00.000]
DBGMISC:       EXITED krmkomp [10:42:46.648] elapsed time [00:00:00:00.000]
DBGPLSQL:      the compiled command tree is: [10:42:46.648] (krmicomp)
DBGPLSQL:        1 CMD type=cleanup cmdid=1 status=NOT STARTED
DBGPLSQL:            1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGPLSQL:                1 TEXTNOD = -- clean
DBGPLSQL:                2 TEXTNOD = declare
DBGPLSQL:                3 TEXTNOD =   /* device status variables */
DBGPLSQL:                4 TEXTNOD =   state       binary_integer;
DBGPLSQL:                5 TEXTNOD =   devtype     varchar2(512);
DBGPLSQL:                6 TEXTNOD =   name        varchar2(512);
DBGPLSQL:                7 TEXTNOD =   bufsz       binary_integer;
DBGPLSQL:                8 TEXTNOD =   bufcnt      binary_integer;
DBGPLSQL:                9 TEXTNOD =   kbytes      number;
DBGPLSQL:               10 TEXTNOD =   readrate    binary_integer;
DBGPLSQL:               11 TEXTNOD =   parallel    binary_integer;
DBGPLSQL:               12 TEXTNOD =   thread      number;
DBGPLSQL:               13 TEXTNOD =   kcrmx_recs  number;
DBGPLSQL:               14 TEXTNOD =   autochn     number := 0;
DBGPLSQL:               15 TEXTNOD =   mr_not_started exception;
DBGPLSQL:               16 TEXTNOD =   pragma exception_init(mr_not_started, -1112);
DBGPLSQL:               17 TEXTNOD =   db_not_mounted exception;
DBGPLSQL:               18 TEXTNOD =   pragma exception_init(db_not_mounted, -1507);
DBGPLSQL:               19 TEXTNOD = begin
DBGPLSQL:               20 TEXTNOD =
DBGPLSQL:               21 PRMVAL =  autochn := 1;
DBGPLSQL:               22 TEXTNOD =   begin
DBGPLSQL:               23 TEXTNOD =     krmicd.execSql('select count(*) from x$dual');
DBGPLSQL:               24 TEXTNOD =   exception
DBGPLSQL:               25 TEXTNOD =     when others then
DBGPLSQL:               26 TEXTNOD =       krmicd.clearErrors;
DBGPLSQL:               27 TEXTNOD =   end;
DBGPLSQL:               28 TEXTNOD =   sys.dbms_backup_restore.backupCancel;
DBGPLSQL:               29 TEXTNOD =   sys.dbms_backup_restore.restoreCancel(FALSE);
DBGPLSQL:               30 TEXTNOD =   begin
DBGPLSQL:               31 TEXTNOD =     sys.dbms_backup_restore.proxyCancel;
DBGPLSQL:               32 TEXTNOD =   exception
DBGPLSQL:               33 TEXTNOD =      when others then
DBGPLSQL:               34 TEXTNOD =         krmicd.clearErrors;
DBGPLSQL:               35 TEXTNOD =   end;
DBGPLSQL:               36 TEXTNOD =   sys.dbms_backup_restore.cfileUseCurrent;              -- release enqueue
DBGPLSQL:               37 TEXTNOD =   sys.dbms_backup_restore.deviceStatus(state, devtype, name, bufsz, bufcnt,
DBGPLSQL:               38 TEXTNOD =                                          kbytes, readrate, parallel);
DBGPLSQL:               39 TEXTNOD =   begin
DBGPLSQL:               40 TEXTNOD =      sys.dbms_backup_restore.bmrCancel;
DBGPLSQL:               41 TEXTNOD =   exception
DBGPLSQL:               42 TEXTNOD =      when others then
DBGPLSQL:               43 TEXTNOD =         krmicd.clearErrors;
DBGPLSQL:               44 TEXTNOD =   end;
DBGPLSQL:               45 TEXTNOD =   begin
DBGPLSQL:               46 TEXTNOD =      sys.dbms_backup_restore.flashbackCancel;
DBGPLSQL:               47 TEXTNOD =   exception
DBGPLSQL:               48 TEXTNOD =      when others then
DBGPLSQL:               49 TEXTNOD =         krmicd.clearErrors;
DBGPLSQL:               50 TEXTNOD =   end;
DBGPLSQL:               51 TEXTNOD =   begin
DBGPLSQL:               52 TEXTNOD =     if krmicd.mrCheck > 0 then
DBGPLSQL:               53 TEXTNOD =       krmicd.execSql('alter database recover cancel');
DBGPLSQL:               54 TEXTNOD =     end if;
DBGPLSQL:               55 TEXTNOD =   exception
DBGPLSQL:               56 TEXTNOD =     when others then
DBGPLSQL:               57 TEXTNOD =       krmicd.clearErrors;
DBGPLSQL:               58 TEXTNOD =   end;
DBGPLSQL:               59 TEXTNOD =   -- If autchn is set to 0, then it the channel is user allocated, hence can be
DBGPLSQL:               60 TEXTNOD =   -- deallocated. However, we will call dbms_backup_restore.deviceDeallocate
DBGPLSQL:               61 TEXTNOD =   -- only if server says that the device is actually allocated. On the
DBGPLSQL:               62 TEXTNOD =   -- other hand, we will call krmicd.clearChannelInfo even if server
DBGPLSQL:               63 TEXTNOD =   -- thinks that device is not allocated because it can be that
DBGPLSQL:               64 TEXTNOD =   -- deviceAllocate have failed.
DBGPLSQL:               65 TEXTNOD =   if (autochn = 0) then
DBGPLSQL:               66 TEXTNOD =     if (state > sys.dbms_backup_restore.NO_DEVICE) then
DBGPLSQL:               67 TEXTNOD =        sys.dbms_backup_restore.deviceDeallocate;
DBGPLSQL:               68 TEXTNOD =        krmicd.writeMsg(8031, krmicd.getChid);
DBGPLSQL:               69 TEXTNOD =        -- Clear the client_info field on channels which have no device
DBGPLSQL:               70 TEXTNOD =        -- allocated. This has the effect of leaving the client_info field
DBGPLSQL:               71 TEXTNOD =        -- present on the default channel.
DBGPLSQL:               72 TEXTNOD =        sys.dbms_backup_restore.set_client_info('');
DBGPLSQL:               73 TEXTNOD =     end if;
DBGPLSQL:               74 TEXTNOD =     krmicd.clearChannelInfo;                    -- tell krmq no device here now
DBGPLSQL:               75 TEXTNOD =   end if;
DBGPLSQL:               76 TEXTNOD =   sys.dbms_backup_restore.setRmanStatusRowId(rsid=>0, rsts=>0);
DBGPLSQL:               77 TEXTNOD = end;
DBGMISC:      EXITED krmicomp with address 36396808 [10:42:46.651] elapsed time [00:00:00:00.004]
DBGMISC:      ENTERED krmiexe [10:42:46.651]
DBGMISC:       Executing command cleanup [10:42:46.651] (krmiexe)
DBGRPC:        krmxr - entering
DBGRPC:        krmxpoq - returning rpc_number: 5 with status: FINISHED130 for channel default
DBGRPC:        krmxr - channel default has rpc_count: 5
DBGRPC:        krmxpoq - returning rpc_number: 18 with status: FINISHED7 for channel ORA_DISK_1
DBGRPC:        krmxr - channel ORA_DISK_1 has rpc_count: 18
DBGRPC:        ENTERED krmqgns
DBGRPC:         krmqgns: looking for work for channel default (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: channel default running cleanup (krmqgns)
DBGRPC:        EXITED krmqgns with status 0
DBGRPC:        ENTERED krmqgns
DBGRPC:         krmqgns: looking for work for channel ORA_DISK_1 (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: channel ORA_DISK_1 running cleanup (krmqgns)
DBGRPC:        EXITED krmqgns with status 0
DBGRPC:        krmxcis - channel default, calling pcicmp
DBGRPC:        krmxcis - channel ORA_DISK_1, calling pcicmp
DBGRPC:        krmxr - channel default calling peicnt
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPCANCEL excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.RESTORECANCEL excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.PROXYCANCEL excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.CFILEUSECURRENT excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.DEVICESTATUS excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.BMRCANCEL excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.FLASHBACKCANCEL excl: 0
DBGRPC:        krmxrpc - channel default kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.SETRMANSTATUSROWID excl: 0
DBGRPC:        krmxr - channel default returned from peicnt
DBGRPC:        krmxr - channel default finished step
DBGRPC:            ENTERED krmqgns
krmqgns: looking for work for channel default (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: no work found for channel default (krmqgns)
DBGRPC:          (krmqgns)
DBGRPC:        EXITED krmqgns with status 1
DBGRPC:        krmxr - channel ORA_DISK_1 calling peicnt
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPCANCEL excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.RESTORECANCEL excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.PROXYCANCEL excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.CFILEUSECURRENT excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.DEVICESTATUS excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.BMRCANCEL excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.FLASHBACKCANCEL excl: 0
DBGRPC:        krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.SETRMANSTATUSROWID excl: 0
DBGRPC:        krmxr - channel ORA_DISK_1 returned from peicnt
DBGRPC:        krmxr - channel ORA_DISK_1 finished step
DBGRPC:            ENTERED krmqgns
krmqgns: looking for work for channel default (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: no work found for channel default (krmqgns)
DBGRPC:          (krmqgns)
DBGRPC:        EXITED krmqgns with status 1
DBGRPC:        ENTERED krmqgns
DBGRPC:         krmqgns: looking for work for channel ORA_DISK_1 (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: no work found for channel ORA_DISK_1 (krmqgns)
DBGRPC:          (krmqgns)
DBGRPC:        EXITED krmqgns with status 1
DBGRPC:        ENTERED krmqgns
DBGRPC:         krmqgns: looking for work for channel default (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: no work found for channel default (krmqgns)
DBGRPC:          (krmqgns)
DBGRPC:        EXITED krmqgns with status 1
DBGRPC:        ENTERED krmqgns
DBGRPC:         krmqgns: looking for work for channel ORA_DISK_1 (krmqgns)
DBGRPC:         krmqgns: commands remaining to be executed: (krmqgns)
DBGRPC:         CMD type=cleanup cmdid=1 status=NOT STARTED
DBGRPC:               1 STEPstepid=1 cmdid=1 status=NOT STARTED
DBGRPC:         krmqgns: no work found for channel ORA_DISK_1 (krmqgns)
DBGRPC:          (krmqgns)
DBGRPC:        EXITED krmqgns with status 1
DBGRPC:        krmxr - all done
DBGRPC:        krmxr - exiting with 0
DBGMISC:      EXITED krmiexe with status 0 [10:42:46.673] elapsed time [00:00:00:00.021]
DBGMISC:      Finished cleanup at 18-MAR-15 [10:42:46.673]
DBGMISC:      ENTERED krmkjcl [10:42:46.673]
DBGMISC:      EXITED krmkjcl [10:42:46.673] elapsed time [00:00:00:00.000]
DBGMISC:     EXITED krmice [10:42:46.673] elapsed time [00:00:00:00.026]
Calling krmmpem from krmmexe
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of conversion at target command on ORA_DISK_1 channel at 03/18/2015 10:42:46
RMAN-10032: unhandled exception during execution of job step 1:
ORA-06512: at line 554
RMAN-10035: exception raised in RPC:
ORA-19583: conversation terminated due to error
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
ORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 1384
RMAN-10031: RPC Error: ORA-19583  occurred during call to DBMS_BACKUP_RESTORE.BACKUPPIECECREATE
DBGMISC:     ENTERED krmkursr [10:42:46.674]
DBGMISC:     EXITED krmkursr [10:42:46.674] elapsed time [00:00:00:00.000]

查询发现这应该是Oracle bug 17565514 导致处理方式是将辅助实例xtt创建为一个测试库,调整为归档模式。同时启动到mount状态下进行操作。于是这里我干脆创建一个xtt的测试库得了,如下:

SQL> show parameter instance

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
active_instance_count                integer
cluster_database_instances           integer     1
instance_groups                      string
instance_name                        string      xtt
instance_number                      integer     0
instance_type                        string      RDBMS
open_links_per_instance              integer     4
parallel_instance_group              string
parallel_server_instances            integer     1
SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2260088 bytes
Variable Size             335545224 bytes
Database Buffers          708837376 bytes
Redo Buffers               22294528 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2260088 bytes
Variable Size             335545224 bytes
Database Buffers          708837376 bytes
Redo Buffers               22294528 bytes
Database mounted.
SQL>

创建后,将xtt启动到mount状态,然后再进行测试,发现一切OK。

[ora1124@cszwadb1 xtts_l_2]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Mar 18 11:07:20 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: XTT (DBID=4264586957, not open)

RMAN> convert from platform 'AIX-Based Systems (64-bit)' datafile  '/test/oracle/accta/oradata/vgacctdb02/lv_vg02_10g_011'
format '+DG_DATA01/accta/datafile/vgacctdb02/%N_%f.dbf';

Starting conversion at target at 18-MAR-15
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=211 device type=DISK
channel ORA_DISK_1: starting datafile conversion
input file name=/test/oracle/accta/oradata/vgacctdb02/lv_vg02_10g_011
converted datafile=+DG_DATA01/accta/datafile/vgacctdb02/invoice_idx_01_216.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:02:25
Finished conversion at target at 18-MAR-15

不仅仅是我的手工测试ok,而且所有的后台脚本运行也都OK,目前已经转换了3TB,慢慢跑吧!

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   9437166  7045877                0         7045877              0             N  DG_DATA01/
ASMCMD>
ASMCMD>
ASMCMD>
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   9437166  6277828                0         6277828              0             N  DG_DATA01/
ASMCMD>
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   9437166  6093498                0         6093498              0             N  DG_DATA01/
ASMCMD>

分享给大家,以免大家以后再踩这个坑!

Related posts:

  1. 列删除的恢复测试 – 不要模仿
  2. dataguard主库丢失archivelog,如何不重建备库?
  3. XTTS(Cross Platform Incremental Backup)的测试例子
此条目发表在 Oracle, rman备份/恢复 分类目录。将固定链接加入收藏夹。

评论功能已关闭。