在迁移一次产品环境后,没有发现其他的问题,不过备份出了一点小问题。
这篇给出一个更方便的解决方法。
迁移后带库备份问题:http://yangtingkun.itpub.net/post/468/477704
上文提到的方法都有一定的限制,最好的办法还是直接调用DBMS_BACKUP_RESTORE包中的DELETEBACKUPPIECE过程。
这里给出一个简单的例子:
RMAN> list backupset 793;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
793 Full 200.25M SBT_TAPE 00:00:51 31-8月 -07
BP 关键字: 1003 状态: AVAILABLE 已压缩: NO 标记: TAG20070831T002901
句柄: v1iqnkqd_1_1 介质: /data1/backup/backup_1188491347_C1_F1
备份集 793 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
5 Full 5702288349 31-8月 -07 +DISK/testrac/datafile/users.267.618591279
下面利用DBMS_BACKUP_RESTORE包来清除这个备份级:
RMAN> host;
$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 12月 4 02:08:58 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> set pages 100 lines 120
SQL> col handle format a15
SQL> select recid, stamp, handle, set_stamp, set_count, piece#
2 from v$backup_piece
3 where handle = 'v1iqnkqd_1_1';
RECID STAMP HANDLE SET_STAMP SET_COUNT PIECE#
---------- ---------- --------------- ---------- ---------- ----------
1003 632017742 v1iqnkqd_1_1 632017741 993 1
SQL> declare
2 c1 varchar2(32767);
3 begin
4 c1 := dbms_backup_restore.deviceallocate;
5 dbms_backup_restore.deletebackuppiece(1003, 632017742, 'v1iqnkqd_1_1', 632017741, 993, 1);
6 dbms_backup_restore.devicedeallocate;
7 end;
8 /
PL/SQL 过程已成功完成。
SQL> exit;
从 Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options 断开
$ exit
主机命令完成
RMAN> list backupset 793;
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: list 命令 (在 12/04/2008 02:14:32 上) 失败
RMAN-06160: 没有为备份集关键字找到备份段: 793
需要注意的是,虽然备份是保存在带库上,这里并不要分配DEVICE TYPE为STB的通道,否则会因为无法连接带库而报错:
第 1 行出现错误:
ORA-19509: 无法删除顺序文件, 句柄 = "v1iqnkqd_1_1", 参数 = "1"
ORA-27027: sbtremove2 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
VxBSAValidateFeatureId: Failed with error:
Server Status: cannot connect on socket
ORA-06512: 在 "SYS.DBMS_BACKUP_RESTORE", line 2686
ORA-06512: 在 "SYS.DBMS_BACKUP_RESTORE", line 2618
ORA-06512: 在 line 5
这种方法Oracle只是清除了控制文件中的记录,而并不会真正删除物理存储上的备份集,当然这正是当前环境下所需要的结果。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-545090/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-545090/