遷移後帶庫備份問題(二)

yangtingkun發表於2009-02-02

在遷移一次產品環境後,沒有發現其他的問題,不過備份出了一點小問題。

這篇給出一個更方便的解決方法。

遷移後帶庫備份問題: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 TYPESTB的通道,否則會因為無法連線帶庫而報錯:

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章