Welcome 微信登录

首页 / 数据库 / MySQL / 无法删除RMAN过期备份

RMAN> report obsolete直接delete会报这个错误:
RMAN> delete obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=136 devtype=DISK
释放的通道: ORA_DISK_1crosscheck也不行
RMAN> crosscheck backup;
a分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=136 devtype=DISK
释放的通道: ORA_DISK_1解决方式:
1、重建控制文件。
绝对好使,但是代价较大,不仅之前备份统统无效,而且还需要停数据库服务,由于要操作的是一台较重要的生产服务器,因此这种方法不可行。
2、通过rman命令手工将备份集状态置为unavailable。
RMAN提供了一个change命令,可以修改备份集状态为AVAILABLE/UNAVAILABLE/UNCATALOG等等。手工使用该命令将所有不可访问的备份集置为unavailable,修改完状态后等待控制文件自动更新覆盖失效记录即可。这种方式最大的问题是见效太慢。
注意,nocatalog模式才能使用这种方式。
3、借助dbms_backup_restore包直接删除备份片段。通过dbms_backup_restore.deleteBackupPiece过程删除无法访问的备份集。
       dbms_backup_restore.deleteBackupPiece的定义如下:
前6项参数都需要我们指定,这些参数的参数值可以从v$backup_piece中获得。
SQL> select recid,stamp,set_stamp,set_count,handle,piece# from v$backup_piece;     RECID      STAMP SET_STAMP SET_COUNT HANDLE                             PIECE#
---------- ---------- ---------- ---------- ------------------------------ ----------
     11301 674167385 674167385      11411 c-1984618042-20081222-00                1
     11304 674168006 674168005      11414 c-1984618042-20081222-01                1
     11306 674168089 674168089      11416 c-1984618042-20081222-02                1
     11312 674253707 674253707      11422 c-1984618042-20081223-00                1
     11315 674254316 674254315      11425 c-1984618042-20081223-01                1
     11317 674254397 674254397      11427 c-1984618042-20081223-02                1执行删除RMAN过期备份
SQL> DECLARE
   devtype varchar2(256);
   BEGIN
   devtype:=dbms_backup_restore.deviceAllocate (type=>"",ident=>"t1");
   dbms_backup_restore.deleteBackupPiece(recid => 11301,stamp => 674167385,handle => "c-1984618042-20081222-00",set_stamp => 674167385 ,set_count => 11411 ,pieceno => 1);
   dbms_backup_restore.deviceDeallocate;
   END;
   /
SQL> select "dbms_backup_restore.deleteBackupPiece(recid =>" || recid || ",stamp =>" || stamp || ",handle =>""" || HANDLE || """,set_stamp =>" || SET_STAMP || ",set_count =>" || SET_COUNT || ",pieceno =>" || PIECE# || ");" sqlt
     from v$backup_pieceOracle关于日志文件基本操作Oracle 默认表空间问题及自增变量设置相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数