客户自从使用nbu 以来一直报这个错误。因为以前一直都是正常的。所以晚上先让停止了nbu的备份。单独使用以前的脚本正常。报错信息一样。所以怀疑是不是脚本的问题。
查询网上分析原因如下:
Symptoms
When attempting to delete obsolete backups from RMAN using the following command:
RMAN> delete obsolete;
the following error occurs:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of delete command at 05/07/2008 22:04:21
RMAN-06091: no channel allocated for maintenance (of an appropriate type)
.
Cause
Tape channel had not being allocated when attempt to delete obsolete backup on tape.
Using the following command to verify that there are backup sets on tape.
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1 Incr 0 113.25M SBT_TAPE 00:08:35 01-MAR-08
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: HOT_DB_BK_LEVEL0
Handle: bk_4_1_648250152 Media:
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
5 0 Incr 1342657 01-MAR-08 /u01/Oracle/app/oracle/oradata/test/undotbs2
75 0 Incr 1342657 01-MAR-08 /u01/oracle/app/oracle/oradata/test/USER_DAT_08_vg3_002
91 0 Incr 1342657 01-MAR-08 /u01/oracle/app/oracle/oradata/test/USER_DAT_12_vg3_002
==>The Device Type is SBT_TAPE.
Solution
To implement the solution, please execute the following steps:
Please run the following commands to delete obsolete backup sets on both disk and tape:
RMAN> allocate channel for maintenance type disk;
RMAN> allocate channel for maintenance device type 'sbt_tape' PARMS '...';
==>Please change '...' to your actual tape params
RMAN> delete obsolete;
If you want to delete obsolete backup sets on disk, you can use the following commands:
RMAN> allocate channel for maintenance type disk;
RMAN> delete obsolete device type disk;、
说的很明白说是没有分配为维护通道。
我只修改了rman_backup.sh中的语句。
#delete noprompt obsolete;
#allocate channel c1 type disk;
将上面的语句改为下面的。
allocate channel for maintenance type disk; #this is add by yt 2012 2 21
delete obsolete device type disk; #this is add by yt 2012 2 21
我试着单独执行这两句:
RMAN> allocate channel for maintenance type disk;
allocated channel: ORA_MAINT_DISK_2
channel ORA_MAINT_DISK_2: sid=736 instance=cmsxty1 devtype=DISK
RMAN> delete noprompt obsolete device type disk;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Deleting the following obsolete backups and copies:
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Control File Copy 1 01-JAN-12 /backup/1101/standby01.ctl
RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due
RMAN-06208: to mismatched status. Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212: Object Type Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Datafile Copy /backup/1101/standby01.ctl
提示我 有个备份找不到不让删除。
继续执行下面的语句
RMAN>DELETE FORCE NOPROMPT OBSOLETE DEVICE TYPE DISK;
删除成功。
看了少了个force,至于这个force在这里的作用我下来得好好研究下。
最后脚本更改如下。备份正常。
run {
allocate channel c1 type disk;
backup database include current controlfile format '/backup/rman_cmsxty_full_%s_%T.bak';
sql 'alter system archive log current';
backup archivelog all delete input format '/backup/rman_cmsxty_arc_%s_%T.bak';
backup current controlfile format '/backup/rman_cmsxty_ctl_%s_%T.bak';
release channel c1;
}
report obsolete;
crosscheck archivelog all;
crosscheck backup;
allocate channel for maintenance type disk;
DELETE FORCE NOPROMPT OBSOLETE DEVICE TYPE DISK;
EOF