一次帶庫備份異常

yangtingkun發表於2007-06-22

今天在測試RAC的備份時發現,一個節點上備份到帶庫出現異常。


現象是在一個節點上備份到帶庫,整個備份過程就沒有任何的相應了。

透過netbackup的圖形管理工具jnbSA,發現後臺備份job已經失敗。錯誤狀態54

前臺程式必須透過CTRL+C來手工中止,其中錯誤資訊類似如下:

RMAN> backup spfile;

啟動 backup 22-6 -07忽略 SBT_TAPE 通道 2 的配置分配的通道: ORA_SBT_TAPE_1通道 ORA_SBT_TAPE_1: sid=288 例項=testrac1 devtype=SBT_TAPE通道ORA_SBT_TAPE_1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)通道 ORA_SBT_TAPE_1: 啟動全部資料檔案備份集通道 ORA_SBT_TAPE_1: 正在指定備份集中的資料檔案在備份集中包含當前的 SPFILE通道 ORA_SBT_TAPE_1: 正在啟動段 1 22-6 -07
^C

MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup
命令 (ORA_SBT_TAPE_1 通道上, 06/22/2007 20:24:54 ) 失敗
ORA-19506:
無法建立順序檔案, 名稱 = "p3ikujbo_1_1", 引數 = ""
ORA-27028: skgfqcre: sbtbackup
返回錯誤

ORA-19511:
從介質管理器層接收到錯誤, 錯誤文字為:
VxBSACreateObject: Failed with error:
Server Status: Communication with the server has not been iniatated or the server status has not been retrieved from the server.

RMAN>
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558:
分析輸入命令時出錯
RMAN-01006:
在分析時出錯訊號
RMAN-02003:
無法識別的字元:

或者:

$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期五 6 22 22:00:42 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到目標資料庫: TESTRAC (DBID=4291216984)

RMAN> backup spfile;

啟動 backup 22-6 -07使用目標資料庫控制檔案替代恢復目錄忽略 SBT_TAPE 通道 2 的配置分配的通道: ORA_SBT_TAPE_1通道 ORA_SBT_TAPE_1: sid=283 例項=testrac1 devtype=SBT_TAPE通道ORA_SBT_TAPE_1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)通道 ORA_SBT_TAPE_1: 啟動全部資料檔案備份集通道 ORA_SBT_TAPE_1: 正在指定備份集中的資料檔案在備份集中包含當前的 SPFILE通道 ORA_SBT_TAPE_1: 正在啟動段 1 22-6 -07
^C
接受到使用者中斷
完成 backup 22-6 -07

MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03099:
按使用者要求取消作業

RMAN>
RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE SBT;
4> BACKUP TABLESPACE USERS;
5> }

釋放的通道: ORA_SBT_TAPE_1分配的通道: C1通道 C1: sid=283 例項=testrac1 devtype=SBT_TAPE通道C1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)

啟動 backup 22-6 -07通道 C1: 啟動全部資料檔案備份集通道 C1: 正在指定備份集中的資料檔案輸入資料檔案 fno=00005 name=+DISK/testrac/datafile/users.267.618591279通道 C1: 正在啟動段 1 22-6 -07
^C
接受到使用者中斷
完成 backup 22-6 -07

釋放的通道: C1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03099:
按使用者要求取消作業

透過jnbSA的圖形介面,觀測錯誤資訊的詳細記錄發現:

1: (54) timed out connecting to client

看來似乎是連線出了問題,但是如果連線失敗,RAC環境就會出現問題,其中一個例項會自動關閉,而現在仍然是正常的,檢查網路也未發現異常。

而且,這個問題只發生在一個節點上,對另一個節點上的RMAN執行沒有影響。

莫非是配置的問題,檢查了一下RMAN的配置:

RMAN> SHOW ALL;

RMAN 配置引數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO 'c_%F';
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' SEND 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
CONFIGURE CHANNEL 2 DEVICE TYPE 'SBT_TAPE' SEND 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data1/backup/%U', '/data1/%U';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/data/oracle/product/10.2/database/dbs/snapcf_testrac1.f'; # default

發現了為了測試多個備份集而設定了CHANNELSEND配置引數。而且備份引數傳遞的CLIENT資訊就是可以成功備份的那個節點。

莫非就是這個問題導致的,嘗試清除所有的CHANNEL配置:

RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE SBT CLEAR;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' SEND 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
已成功刪除舊的 RMAN 配置引數

RMAN> CONFIGURE CHANNEL 2 DEVICE TYPE SBT CLEAR;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL 2 DEVICE TYPE 'SBT_TAPE' SEND 'NB_ORA_CLIENT=backup,CPF1_POLICY=testoracle,CPF1_SCHED=Default-Application-Backup,CPF2_POLICY=testoracle,CPF2_SCHED=test_multi_copy';
已成功刪除舊的 RMAN 配置引數

RMAN> EXIT

恢復管理器完成。
$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期五 6 22 22:52:56 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到目標資料庫: TESTRAC (DBID=4291216984)

RMAN> backup spfile;

啟動 backup 22-6 -07使用目標資料庫控制檔案替代恢復目錄分配的通道: ORA_SBT_TAPE_1通道 ORA_SBT_TAPE_1: sid=281 例項=testrac1 devtype=SBT_TAPE通道ORA_SBT_TAPE_1: VERITAS NetBackup for Oracle - Release 6.0 (2006110304)通道 ORA_SBT_TAPE_1: 啟動全部資料檔案備份集通道 ORA_SBT_TAPE_1: 正在指定備份集中的資料檔案在備份集中包含當前的 SPFILE通道 ORA_SBT_TAPE_1: 正在啟動段 1 22-6 -07通道 ORA_SBT_TAPE_1: 已完成段 1 22-6 -07段控制程式碼=p9ikusus_1_1 標記=TAG20070622T225315 註釋=API Version 2.0,MMS Version 5.0.0.0通道 ORA_SBT_TAPE_1: 備份集已完成, 經過時間:00:02:06完成 backup 22-6 -07

居然就是由於SENDCLIENT資訊與當前節點不匹配造成的。奇怪的是,前面嘗試手工分配CHANNDEL的時候,按說應該不會繼承自動配置的結果,沒想到也同樣的報錯了。看來這個SEND配置會對後面所有的CHANNEL都生效。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69321/,如需轉載,請註明出處,否則將追究法律責任。

相關文章