RMAN备份归档日志ORA-19575

RMAN备份归档日志ORA-19575
一、问题描述
1)环境oracle 10g;
2)报错现象RMAN进行备份归档报错失败ORA-19575

二、问题处理
1)根据客户说明的现象,百度了一波(详见参考链接)
2)操作系统mv修改名称存在问题的归档日志后,crosscheck检查归档日志,delete删除无效的归档日志后,再次进行备份,问题已解决。

三、参考链接
https://smarttechways.com/2012/11/01/ora-19575-expected-blocks-in-file-location-rman/
https://www.linuxidc.com/Linux/2014-05/102153.htm
https://community.oracle.com/message/9229357#9229357
MOS
BUG 9138594-RMAN ORA-19575备份10g之前的归档日志(文档ID 9138594.8)
ORA-19575 During RMAN Backup (文档 ID 1518129.1)

MOS信息说明
1.bug
10g数据库,升级至11g后,使用rman进行备份10g的归档日志,可能会报错无有效解决方案,但是可以进行全库备份即可11g的数据文件,也无法使用10g归档进行恢复。
2.ORA-19575 问题说明

简要说明就是控制文件记录的归档日志blocks与rman备份对归档日志进行检测发现不同,这个归档日志将无法进行备份,也无法应用于恢复。

四、实际测试

    RMAN备份归档日志ORA-19575
    一、问题描述
    1)环境oracle 10g;
    2)报错现象RMAN进行备份归档报错失败ORA-19575

    二、问题处理
    1)根据客户说明的现象,百度了一波(详见参考链接)
    2)操作系统mv修改名称存在问题的归档日志后,crosscheck检查归档日志,delete删除无效的归档日志后,再次进行备份,问题已解决。

    三、参考链接
    https://smarttechways.com/2012/11/01/ora-19575-expected-blocks-in-file-location-rman/
    https://www.linuxidc.com/Linux/2014-05/102153.htm
    https://community.oracle.com/message/9229357#9229357
         MOS
    BUG 9138594-RMAN ORA-19575备份10g之前的归档日志(文档ID 9138594.8)
    ORA-19575 During RMAN Backup (文档 ID 1518129.1)    

    MOS信息说明
    1.bug
    10g数据库,升级至11g后,使用rman进行备份10g的归档日志,可能会报错无有效解决方案,但是可以进行全库备份即可11g的数据文件,也无法使用10g归档进行恢复。
    2.ORA-19575 问题说明
    1)版本
    APPLIES TO:
    Oracle Server - Enterprise Edition - Version 11.1.0.7 and later
    Information in this document applies to any platform.
    2)说明
    No problem with RMAN execution, just error derived from corrupted archivelog, which RMAN will not backup.
    ORA-19575, 00000, "expected %s blocks in file %s, found %s"
    // *Cause:  During a backup, restore, copy, or scan operation, the indicated
    //          file did not contain as many blocks as were indicated in the file
    //          header.
    // *Action: The input copy or backup piece is probably corrupt.  If another
    //          backup or copy exists of the file that is being restored, then the
    //          corrupt file can be deleted from the recovery catalog and the
    //          operation can be restarted.
    简要说明就是控制文件记录的归档日志blocks与rman备份对归档日志进行检测发现不同,这个归档日志将无法进行备份,也无法应用于恢复。
    3)处理
    Validate all archivelogs for corruption:
    RMAN> validate archivelog all;
    Move any corrupted archivelog to a temporary directory using an operating system command such as cp
    For example:
    $ mv /opt/app/oracle/oradata/ORA112/archivelog/2013_01_11/o1_mf_1_84_8gyj98c3_.arc /tmp/.
    Then run a crosscheck command to update RMAN‘s repository. Any files that have been moved will now be marked as expired and RMAN will no longer attempt to back them up.
    RMAN> crosscheck archivelog all;
     You can then proceed to take a full database and archivelog backup.
    WARNING !!!! Any archivelogs that are corrupted cannot be used for recovery, so the recoverability of the database is comprimised
    !任何损坏的archivelogs都不能用于恢复,因此数据库的可恢复性

    四、实际测试
    4.1 破坏归档日志(删除部分信息)
    SQL> alter system switch logfile;
    SQL> select name from v$archived_log where sequence#=(select max(sequence#) from v$archived_log);
    NAME
    --------------------------------------------------------------------------------
    C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000614_0994609796.0001
    通过windows文本编辑软件,打开归档日志文件,后删除一部分信息。
    RMAN> crosscheck archivelog all;
    对归档日志的验证失败
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000614_0994609796.0001 RECID=61 STAMP=1021067372
    已交叉检验的 28 对象
    校验删除部分信息后,rman工具crosscheck检测会直接提示失败。
    4.2 破坏归档日志(替换部分文字)
    SQL> alter system switch logfile;
    SQL> select name from v$archived_log where sequence#=(select max(sequence#) from v$archived_log);
    C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000615_0994609796.0001
    ue编辑工具,替换NUL为CCC后,再次使用RMAN工具crosscheck
    对归档日志的验证失败
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000615_0994609796.0001 RECID=62 STAMP=1021067664
    已交叉检验的 28 对象
    还是失败
    4.3 破坏归档日志,不使用RMAN CHECKCROSS,破坏后直接进行备份(上述的两个破坏性操作进行还原,使用操作前的备份进行还原)
    SQL> alter system switch logfile;
    RMAN> backup as compressed backupset full database format ‘C:\win_oracle_11_database\rmanbackup%U.bk‘ include current controlfile plus archivelog delete input format ‘C:\win_oracle_11_database\rmanbackup\%U.bk‘;
    启动 backup 于 07-10月-19
    当前日志已存档
    使用目标数据库控制文件替代恢复目录
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=184 设备类型=DISK
    通道 ORA_DISK_1: 正在启动压缩的归档日志备份集
    通道 ORA_DISK_1: 正在指定备份集内的归档日志
    输入归档日志线程=1 序列=590 RECID=37 STAMP=1019726288
    输入归档日志线程=1 序列=591 RECID=38 STAMP=1019728061
    输入归档日志线程=1 序列=592 RECID=39 STAMP=1019813814
    输入归档日志线程=1 序列=593 RECID=40 STAMP=1019830780
    输入归档日志线程=1 序列=594 RECID=41 STAMP=1019864373
    输入归档日志线程=1 序列=595 RECID=42 STAMP=1019951079
    输入归档日志线程=1 序列=596 RECID=43 STAMP=1019981966
    输入归档日志线程=1 序列=597 RECID=44 STAMP=1019982137
    输入归档日志线程=1 序列=598 RECID=45 STAMP=1020031215
    输入归档日志线程=1 序列=599 RECID=46 STAMP=1020072700
    输入归档日志线程=1 序列=600 RECID=47 STAMP=1020182589
    输入归档日志线程=1 序列=601 RECID=48 STAMP=1020182604
    输入归档日志线程=1 序列=602 RECID=49 STAMP=1020211222
    输入归档日志线程=1 序列=603 RECID=50 STAMP=1020244644
    输入归档日志线程=1 序列=604 RECID=51 STAMP=1020269122
    输入归档日志线程=1 序列=605 RECID=52 STAMP=1020337210
    输入归档日志线程=1 序列=606 RECID=53 STAMP=1020681819
    输入归档日志线程=1 序列=607 RECID=54 STAMP=1020683592
    输入归档日志线程=1 序列=608 RECID=55 STAMP=1020683592
    输入归档日志线程=1 序列=609 RECID=56 STAMP=1020934755
    输入归档日志线程=1 序列=610 RECID=57 STAMP=1020934777
    输入归档日志线程=1 序列=611 RECID=58 STAMP=1020936521
    输入归档日志线程=1 序列=612 RECID=59 STAMP=1020949726
    输入归档日志线程=1 序列=613 RECID=60 STAMP=1021054890
    输入归档日志线程=1 序列=616 RECID=63 STAMP=1021067822
    输入归档日志线程=1 序列=617 RECID=64 STAMP=1021068003
    通道 ORA_DISK_1: 正在启动段 1 于 07-10月-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup plus archivelog 命令 (在 10/07/2019 22:00:29 上) 失败
    ORA-19599: 块编号 2 已在 archived log C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 中损坏
    RMAN> list expired archivelog all;
    无616这个损坏的归档日志
    疑问:并且,在本次备份过程中,第一步骤是先备份数据库数据文件,再进行备份归档日志操作,再删除已备份的归档日志?  为何会中断?

    4.4 RMAN直接使用crosscheck之后,该归档日志被置为损坏的,后续能否直接备份
    RMAN> crosscheck archivelog all;
    对归档日志的验证成功
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000614_0994609796.0001 RECID=61 STAMP=1021067372
    对归档日志的验证成功
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000615_0994609796.0001 RECID=62 STAMP=1021067664
    对归档日志的验证成功
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 RECID=63 STAMP=1021067822
    对归档日志的验证成功
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000617_0994609796.0001 RECID=64 STAMP=1021068003
    对归档日志的验证成功
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000618_0994609796.0001 RECID=65 STAMP=1021068470
    已交叉检验的 28 对象
    RMAN> list expired archivelog all;
    Null
    RMAN> backup as compressed backupset full database format ‘C:\win_oracle_11_database\rmanbackup%U.bk‘ include current controlfile plus archivelog delete input format ‘C:\win_oracle_11_database\rmanbackup\%U.bk‘;
    RMAN-03002: backup plus archivelog 命令 (在 10/07/2019 22:09:56 上) 失败
    ORA-19599: 块编号 2 已在 archived log C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 中损坏
    及时使用crosscheck archivelog all;命令,再次进行备份,还是报错,并且无法观察到错误的归档信息。

    解答4.3疑问
    从报错的内容可以发现,rman是在执行backup plus archivelog时失败的,如果是单独执行backup database是可以正常执行的。
    RMAN> backup as compressed backupset full database format ‘C:\win_oracle_11_database\rmanbackup%U.bk‘;
    通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:45
    完成 backup 于 07-10月-19
    4.5 RMAN备份命令执行,后台对应的数据库什么操作?
    C:\Users\Thinkpad> rman target / debug trace=C:\Users\Thinkpad\Desktop\命令\备份\debug_20191007.txt

    恢复管理器: Release 11.2.0.4.0 - Production on 星期一 10月 7 22:14:48 2019

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

    RMAN-06005: 已连接到目标数据库: WIN11 (DBID=3546669248)

    RMAN>  backup as compressed backupset full database format ‘C:\win_oracle_11_database\rmanbackup%U.bk‘ include current controlfile plus archivelog delete input format ‘C:\win_oracle_11_database\rmanbackup\%U.bk‘;

    RMAN-03090: 启动 backup 于 07-10月-19
    RMAN-03033: 当前日志已存档
    RMAN-06009: 使用目标数据库控制文件替代恢复目录
    RMAN-08030: 分配的通道: ORA_DISK_1
    RMAN-08500: 通道 ORA_DISK_1: SID=358 设备类型=DISK
    RMAN-08049: 通道 ORA_DISK_1: 正在启动压缩的归档日志备份集
    RMAN-08014: 通道 ORA_DISK_1: 正在指定备份集内的归档日志
    RMAN-08504: 输入归档日志线程=1 序列=593 RECID=40 STAMP=1019830780
    RMAN-08504: 输入归档日志线程=1 序列=594 RECID=41 STAMP=1019864373
    RMAN-08504: 输入归档日志线程=1 序列=595 RECID=42 STAMP=1019951079
    RMAN-08504: 输入归档日志线程=1 序列=596 RECID=43 STAMP=1019981966
    RMAN-08504: 输入归档日志线程=1 序列=597 RECID=44 STAMP=1019982137
    RMAN-08504: 输入归档日志线程=1 序列=598 RECID=45 STAMP=1020031215
    RMAN-08504: 输入归档日志线程=1 序列=599 RECID=46 STAMP=1020072700
    RMAN-08504: 输入归档日志线程=1 序列=600 RECID=47 STAMP=1020182589
    RMAN-08504: 输入归档日志线程=1 序列=601 RECID=48 STAMP=1020182604
    RMAN-08504: 输入归档日志线程=1 序列=602 RECID=49 STAMP=1020211222
    RMAN-08504: 输入归档日志线程=1 序列=603 RECID=50 STAMP=1020244644
    RMAN-08504: 输入归档日志线程=1 序列=604 RECID=51 STAMP=1020269122
    RMAN-08504: 输入归档日志线程=1 序列=605 RECID=52 STAMP=1020337210
    RMAN-08504: 输入归档日志线程=1 序列=606 RECID=53 STAMP=1020681819
    RMAN-08504: 输入归档日志线程=1 序列=607 RECID=54 STAMP=1020683592
    RMAN-08504: 输入归档日志线程=1 序列=608 RECID=55 STAMP=1020683592
    RMAN-08504: 输入归档日志线程=1 序列=609 RECID=56 STAMP=1020934755
    RMAN-08504: 输入归档日志线程=1 序列=610 RECID=57 STAMP=1020934777
    RMAN-08504: 输入归档日志线程=1 序列=611 RECID=58 STAMP=1020936521
    RMAN-08504: 输入归档日志线程=1 序列=612 RECID=59 STAMP=1020949726
    RMAN-08504: 输入归档日志线程=1 序列=613 RECID=60 STAMP=1021054890
    RMAN-08504: 输入归档日志线程=1 序列=614 RECID=61 STAMP=1021067372
    RMAN-08504: 输入归档日志线程=1 序列=615 RECID=62 STAMP=1021067664
    RMAN-08504: 输入归档日志线程=1 序列=616 RECID=63 STAMP=1021067822
    RMAN-08504: 输入归档日志线程=1 序列=617 RECID=64 STAMP=1021068003
    RMAN-08504: 输入归档日志线程=1 序列=618 RECID=65 STAMP=1021068470
    RMAN-08504: 输入归档日志线程=1 序列=619 RECID=66 STAMP=1021068571
    RMAN-08504: 输入归档日志线程=1 序列=620 RECID=67 STAMP=1021068934
    RMAN-08038: 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup plus archivelog 命令 (在 10/07/2019 22:16:10 上) 失败
    RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 10/07/2019 22:16:10 上) 失败
    ORA-19599: 块编号 2 已在 archived log C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 中损坏

    RMAN>

    ---截取debug少量日志

    RMAN-08504: 输入归档日志线程=1 序列=619 RECID=66 STAMP=1021068571
    DBGMISC:         EXITED krmzlog [22:15:44.788] elapsed time [00:00:00:00.004]
    DBGIO:           channel ORA_DISK_1: blocks=2 block_size=512 [22:15:44.791] (name_log)
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPARCHIVEDLOG excl: 0
    DBGMISC:         ENTERED krmzlog [22:15:44.804]
    RMAN-08504: 输入归档日志线程=1 序列=620 RECID=67 STAMP=1021068934
    DBGMISC:         EXITED krmzlog [22:15:44.813] elapsed time [00:00:00:00.009]
    DBGIO:           channel ORA_DISK_1: blocks=304 block_size=512 [22:15:44.818] (name_log)
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPSTATUS excl: 0
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.SETLIMIT excl: 0
    DBGMISC:         ENTERED krmzlog [22:15:44.840]
    RMAN-08038: 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-19
    DBGMISC:         EXITED krmzlog [22:15:44.847] elapsed time [00:00:00:00.007]
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.GENPIECENAME excl: 0
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=0 db=target proc=SYS.DBMS_BACKUP_RESTORE.ISFILENAMEOMF excl: 0
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=3123 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPPIECECREATE excl: 0
    DBGRPC:          krmxr - channel ORA_DISK_1 returned from peicnt
    DBGRPC:          krmxpoq - returning rpc_number: 72 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=NOT STARTED
    DBGRPC:                 1 STEPstepid=1 cmdid=1 status=STARTED
    DBGRPC:                 2 STEPstepid=2 cmdid=1 status=NOT STARTED
    DBGRPC:                     1 DON_F stepid=1 satisfied=FALSE
    DBGRPC:           krmqgns: no work found for channel default (krmqgns)
    DBGRPC:            (krmqgns)
    DBGRPC:          EXITED krmqgns with status 1
    DBGRPC:          krmxpoq - returning rpc_number: 72 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=NOT STARTED
    DBGRPC:                 1 STEPstepid=1 cmdid=1 status=STARTED
    DBGRPC:                 2 STEPstepid=2 cmdid=1 status=NOT STARTED
    DBGRPC:                     1 DON_F stepid=1 satisfied=FALSE
    DBGRPC:           krmqgns: no work found for channel default (krmqgns)
    DBGRPC:            (krmqgns)
    DBGRPC:          EXITED krmqgns with status 1
    DBGRPC:          krmxpoq - returning rpc_number: 72 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=NOT STARTED
    DBGRPC:                 1 STEPstepid=1 cmdid=1 status=STARTED
    DBGRPC:                 2 STEPstepid=2 cmdid=1 status=NOT STARTED
    DBGRPC:                     1 DON_F stepid=1 satisfied=FALSE
    DBGRPC:           krmqgns: no work found for channel default (krmqgns)
    DBGRPC:            (krmqgns)
    DBGRPC:          EXITED krmqgns with status 1
    DBGRPC:          krmxpoq - returning rpc_number: 72 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=NOT STARTED
    DBGRPC:                 1 STEPstepid=1 cmdid=1 status=STARTED
    DBGRPC:                 2 STEPstepid=2 cmdid=1 status=NOT STARTED
    DBGRPC:                     1 DON_F stepid=1 satisfied=FALSE
    DBGRPC:           krmqgns: no work found for channel default (krmqgns)
    DBGRPC:            (krmqgns)
    DBGRPC:          EXITED krmqgns with status 1
    DBGRPC:          krmxpoq - returning rpc_number: 72 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=NOT STARTED
    DBGRPC:                 1 STEPstepid=1 cmdid=1 status=STARTED
    DBGRPC:                 2 STEPstepid=2 cmdid=1 status=NOT STARTED
    DBGRPC:                     1 DON_F stepid=1 satisfied=FALSE
    DBGRPC:           krmqgns: no work found for channel default (krmqgns)
    DBGRPC:            (krmqgns)
    DBGRPC:          EXITED krmqgns with status 1
    DBGRPC:          krmxpoq - returning rpc_number: 72 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=NOT STARTED
    DBGRPC:                 1 STEPstepid=1 cmdid=1 status=STARTED
    DBGRPC:                 2 STEPstepid=2 cmdid=1 status=NOT STARTED
    DBGRPC:                     1 DON_F stepid=1 satisfied=FALSE
    DBGRPC:           krmqgns: no work found for channel default (krmqgns)
    DBGRPC:            (krmqgns)
    DBGRPC:          EXITED krmqgns with status 1
    DBGRPC:          krmxpoq - returning rpc_number: 72 with status: FINISHED16 for channel ORA_DISK_1
    DBGRPC:          krmxr - channel ORA_DISK_1 calling peicnt
    DBGRPC:          krmxrpc - channel ORA_DISK_1 kpurpc2 err=19624 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPPIECECREATE excl: 204
    DBGRPC:          krmxrpc - caloing krmxtrim: with message of length 204: @@@ORA-19624: 操作失败, 如果可能请重试
    DBGRPC:          ORA-19599: 块编号 2 已在 archived log C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 中损坏
    DBGRPC:          ORA-06512: 在 "SYS.DBMS_BACKUP_RESTORE", line 1381
    DBGRPC:          @@@
    DBGMISC:         ENTERED krmzejob [22:16:10.070]
    DBGMISC:          Input Args(failed=1),(errnum=-19624) [22:16:10.072] (krmzejob)
    DBGMISC:          duration(stepid=1),endtime=1021040170,jobtime=26s [22:16:10.074] (krmzejob)
    DBGMISC:          duration(stepid=1), remaining(chn sec,bytes)=(0,738811904) [22:16:10.076] (krmzejob)
    DBGMISC:         EXITED krmzejob with status 0 (FALSE) [22:16:10.078] elapsed time [00:00:00:00.008]
    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 [22:16:10.084]
    DBGMISC:          Trimming message: ORA-19624: 操作失败, 如果可能请重试 [22:16:10.086] (krmstrim)
    DBGMISC:          ORA-19599: 块编号 2 已在 archived log C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 中损坏 (krmstrim)
    DBGMISC:          ORA-06512: 在 "SYS.DBMS_BACKUP_RESTORE", line 1381 (krmstrim)
    DBGMISC:          ORA-06512: at line 729 (krmstrim)
    DBGMISC:           (227) (krmstrim)
    `````````````

    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup plus archivelog 命令 (在 10/07/2019 22:16:10 上) 失败
    RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 10/07/2019 22:16:10 上) 失败
    RMAN-10032: 执行作业步骤 1 时出现未处理的异常错误:
    ORA-06512: at line 729
    RMAN-10035: RPC 中出现异常错误:
    ORA-19624: 操作失败, 如果可能请重试
    ORA-19599: 块编号 2 已在 archived log C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001 中损坏
    ORA-06512: 在 "SYS.DBMS_BACKUP_RESTORE", line 1381
    RMAN-10031: RPC 错误: ORA-19624, 在调用 DBMS_BACKUP_RESTORE.BACKUPPIECECREATE 时出现
    DBGMISC:        ENTERED krmkursr [22:16:10.779]

    小结,也就是说,Orace在你执行备份操作的时候,不是上去就备份,而是后台一系列的检测,确认文件无异常后,在进行的有效备份。

    4.6 上述问题如何处理,本次演练一下:
    1)mv修改上述归档日志名称(损坏的,或者直接删除)
    2)RMAN> crosscheck archivelog all;
    RMAN> list expired archivelog all;
    使用目标数据库控制文件替代恢复目录
    db_unique_name 为 WIN11 的数据库的归档日志副本列表
    =====================================================================
    关键字     线程序列     S 时间下限
    ------- ---- ------- - ----------
    63      1    616     X 07-10月-19
            名称: C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000616_0994609796.0001

    再次进行rman备份
    上述4.4的操作有点问题,破坏归档日志后,rman全备失败报错,随后使用rman crosscheck 由于文件存在,检测竟然通过了,list查询损坏的无效的归档日志也看不到。
    本次4.6,rm删除了损坏的文件,后续crosscheck检测后,list可以查询到,再次进行rman全备,进行观察。
    备份成功!!!

    也就是说,解决问题的关键是,mv或者删除归档日志文件后,在进行crosscheck,只要归档日志被标记为无效,oracle备份就不会备份该归档日志

    ==========如下信息截取,备份及删除清理已备份的归档,直接跳过了无效的归档序列号616!
    输入归档日志线程=1 序列=615 RECID=62 STAMP=1021067664
    输入归档日志线程=1 序列=617 RECID=64 STAMP=1021068003
    通道 ORA_DISK_1: 正在启动段 1 于 07-10月-19
    通道 ORA_DISK_1: 已完成段 1 于 07-10月-19
    段句柄=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\17UDOI5K_1_1.BK 标记=TAG20191007T222451 注释=NONE
    通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
    通道 ORA_DISK_1: 正在删除归档日志
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000615_0994609796.0001 RECID=62 STAMP=1021067664
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000617_0994609796.0001 RECID=64 STAMP=1021068003
    完成 backup 于 07-10月-19

    4.7 学习跳过某个归档日志进行备份的操作

    1)破坏归档
    626 sequence
    2)RMAN备份还原报错场景
    RMAN>  backup as compressed backupset full database format ‘C:\win_oracle_11_database\rmanbackup%U.bk‘ include current controlfile plus archivelog delete input format ‘C:\win_oracle_11_database\rmanbackup\%U.bk‘;
    启动 backup 于 07-10月-19
    当前日志已存档
    使用通道 ORA_DISK_1
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup plus archivelog 命令 (在 10/07/2019 22:34:21 上) 失败
    ORA-19563:  标头 (文件 ) 验证失败
    *本次不深入研究报错,不再次深入
    3)跳过sequence#
    RUN {
     change archivelog sequence 626 uncatalog;
     backup as compressed backupset full database format ‘C:\win_oracle_11_database\rmanbackup%U.bk‘

 include current controlfile plus archivelog delete input format ‘C:\win_oracle_11_database\rmanbackup\%U.bk‘;
     }

    RMAN日志输出
    未编目的归档日志
    归档日志文件名=C:\WIN_ORACLE_11_DATABASE\RMANBACKUP\ARCH\ARC0000000626_0994609796.0001 RECID=73 STAMP=1021069922
    未分类的 1 对象
    ······
    输入归档日志线程=1 序列=625 RECID=72 STAMP=1021069921
    输入归档日志线程=1 序列=627 RECID=74 STAMP=1021070044
    ······  跳过去了!!!
    因此备份也可以顺利进行!
     

原文地址:https://www.cnblogs.com/lvcha001/p/11631067.html

时间: 2024-08-10 13:47:21

RMAN备份归档日志ORA-19575的相关文章

通过RMAN删除归档日志不释放问题

我的生产环境中归档日志满了,通过如下脚本删除后,空间并没有释放,看有网友有相关的解决思路,可以跟大家一起分享一下: RMAN> crosscheck archivelog all; RMAN> delete expried archivelog all; 关于rm删除文件空间不释放的问题可以写成一个FAQ了 一般说来不会出现rm掉不释放空间的情况出现这样的情况一般是由于有进程在向文件中写数据或有进程正在访问文件而此时rm文件则会出现不释放空间的情况 理解这样的问题需要理解rm的操作内含一个文件

rman 还原归档日志(restore archivelog)

听说过还原(restore)数据库,表空间及数据库文件,使用归档日志恢复(recover)数据库,表空间,数据库文件. 咦,还有还原归档日志这一说法呢?没错,可能我们忽略了还原归档日志这一个过程,原因是还原归档日志通常情况下是oracle在recover时自动完成的. 大多数情况下我们是先还原数据库,恢复数据库,打开数据库.实际上在恢复数据库之前有一个动作,那就是还原归档日志,也就是将日志文件还原到缺省的归档位置, 如果我们在备份归档日志时使用了delete [all] input子句的话. 本

RMAN删除归档日志不释放问题

今天同事问到一个问题,他那边的一套Oracle 11g数据库使用RMAN没办法删除旧的归档,导致磁盘使用率很高. [email protected]:[/opt/oracle/archive/db] ls -ltr |moretotal 3059881082 -rw-r-----   1 oracle     oinstall   725320704 May 20  2016 1_1_91233774.dbf -rw-rw----   1 oracle     oinstall   175693

使用RMAN备份时应如何处置归档日志文件

昨天去某客户部署RMAN备份,在跑shell脚本的时候,提示找不到归档日志,因为客户那里之前只对数据库做EXPDP逻辑导出备份,并且每天都自动删除前一天的归档,每个归档的生成量大概在200M左右,因为考虑磁盘空间比较紧张,不得已而为之. 在我的脚本中,是采用backup database format 'xxx' plus archivelog format 'xxx'的方式进行备份的,在执行RMAN脚本时,由于是先对归档日志进行备份,再对数据库进行备份的,在脚本的输出日志中,提示找不到35xx

RMAN数据库恢复之恢复归档日志文件

恢复归档日志文件如果只是为了在恢复数据文件之后应用归档文件,那并不需要手动对归档文件进行恢复,RMAN会在RECOVER时自动对适当的归档进行恢复.单独恢复归档文件一般是有特别的需求,如创建了Data Guard环境.Standby端丢失了部分归档文件,需要从Primary端重新获取.1.恢复全部归档日志文件RMAN> RESTORE ARCHIVELOG ALL; 2.恢复归档序号为20至30之间的归档文件RMAN> RESTOER ARCHIVELOG SEQUENCE BETWEEN 2

Oracle RMAN备份恢复指导书

目 录 1 目的与范围... 1 2 术语和定义... 1 3 角色和职责... 2 4 使用RMAN备份数据库... 2 4.1.1 检查数据库模式... 2 4.1.2 连接到target数据库... 3 4.1.3 查看备份信息... 3 4.1.4 备份数据库... 5 4.1.5 备份数据文件... 6 4.1.6 备份表空间... 6 4.1.7 备份控制文件... 6 4.1.8 备份归档日志文件... 7 4.1.9 备份闪回区... 8 4.1.10 增量备份... 8 4.2

rman 备份并异机恢复

1.RMAN 备份脚本 RUN { CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "/backup/ZGW_Controlfile_%F"; ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;

delete archivelog all 无法彻底删除归档日志?

最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢? [python] view plain copy print? 1.演示环境 SQL> select * from v$version where rownum<2; BANNER ---------------------------------------------------------------- Oracle Database 10g Release 10.2.0.

Oracle RMAN备份与还原注意事项

1 备份文件管理 如果要删除之前的备份,不要手动去目录下删除,应该在rman命令模式下使用删除命令,否则虽然在磁盘上把物理备份文件删除了,但是使用备份查看命令会一直看到已经删除的备份文件 list backup; 查看当前系统有哪些可用的备份文件 list backupset summary; 查看备份文件的概要信息 crosscheck backup; 更新rman备份信息,如果有损坏的不可用的,或者手动删除的物理备份文件都可以通过此命令查看ex delete expired backup;