auxiliary database: ORA-12528錯誤

kuqlan發表於2011-09-22

Oracle Data Guard的重建過程中,曾經發生的一次故障,現在回想應該屬於備庫動態監聽和重啟監聽器問題導致的。

因當時某種原因導致,Data Guard環境需要重新搭建。為此,當我在主庫上執行RMAN備份後複製到,備庫的伺服器,但是執行到如下步驟時,開始出錯,然後我又把備庫的監聽器重啟了...

1:RMAN> backup database format='/backup/full_%u%p%s.dbf' include current controlfile for standby;

2:rman的備份集複製至standby庫相同的路徑

3 複製主資料庫RMAN備份及控制檔案到備庫

  注意:備份存放位置要與primary database RMAN備份檔案的位置相同. 控制檔案存放位置要與生成standby database controlfile的位置相同

scp /oracle/rmanback/*.dbf root@192.168.18.2:/oracle/rmanback/

scp /oracle/rmanback/*.ctl root@192.168.18.2:/oracle/oracle/oradata/stand

[@more@]

4.對複製過來備份進行Rman duplicate恢復操作:

-bash-3.00$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Oct 22 09:35:12 2010

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

connected to target database: BOSS (DBID=1185551605)

RMAN> connect auxiliary sys/oracle@standby

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-04006: error from auxiliary database: ORA-12528: TNS:listener: all appropriate instances are blocking new connections

避免該錯誤方法有兩個:

1在備庫上執行duplicate操作(在我第一次執行過在備庫上執行該方法,透過實際操作已經驗證該方法是沒有問題的):

-bash-3.00$ rman target sys/onewave@primary auxiliary /

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Oct 22 20:53:28 2010

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

connected to target database: BOSS (DBID=1185551605)

connected to auxiliary database: BOSS (not mounted)

RMAN> duplicate target database for standby nofilenamecheck;

Starting Duplicate Db at 22-OCT-10

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=1090 devtype=DISK

allocated channel: ORA_AUX_DISK_2

channel ORA_AUX_DISK_2: sid=1089 devtype=DISK

allocated channel: ORA_AUX_DISK_3

channel ORA_AUX_DISK_3: sid=1088 devtype=DISK

allocated channel: ORA_AUX_DISK_4

channel ORA_AUX_DISK_4: sid=1087 devtype=DISK

2、在備庫的監聽器配置為靜態註冊方式:

例項雖然啟動,但是沒有註冊到監聽。例項是透過PMON程式註冊到監聽上的,而PMON程式需要在MOUNT狀態下才會啟動。因此造成了上面的錯誤。在$ORACLE_HOME/network/admin目錄下的listener.ora中新增下面的內容:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME =orcl)

(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)

(SID_NAME =orcl)

)

)

在動態監聽情況下,如果監聽器後來發生了重啟,動態註冊資訊將會丟失。顯然,最好在所有的資料庫啟動之前先啟動監聽器,這樣就會避免沒有顯式設定 service_namesinstance_name的值時,若重啟監聽器帶來的動態註冊資訊丟失的情況。

為初始化引數service_namesinstance_name設定顯式的值是個很好的實踐,儘管如果您沒有設定它們,Oracle也會為動態註冊而生成預設值(基於db_namedb_main)。這樣做的原因是,如果監聽器在資料庫啟動之後重新啟動,其動態註冊行為將會有一些微妙的區別.如果監聽器在資料庫執行之後重新啟動,你們僅當您在init.ora檔案中顯式地設定了service_namesinstance_name的值時,每個資料庫的PMON程式才會在很短的時間之後自動註冊資料庫。

關於動態和靜態監聽的區別,請訪問本站連線:http://kuqlan.itpub.net/post/38575/523820

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

相關文章