FAL_SERVER設定錯誤導致SWITCHOVER切換HANG住

yangtingkun發表於2011-10-25

客戶在進行DATA GUARDSWITCHOVER時,操作長時間沒有反應。

 

 

操作如下:

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

這個命令等待很長時間沒有結束,雖然資料庫的SWITCHOVER_STATUS並非TO STANDBY而是SESSION ACTIVE,但是幾乎所有的LOCAL=NO的連線已經在作業系統級kill掉了,而且使用了WITH SESSION SHUTDOWN語法,理論上不應該是連線問題導致SWITCHOVER無法完成。

檢查告警日誌:

Fri Oct 14 23:03:45 2011
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN
Fri Oct 14 23:03:45 2011
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY (db1)
Fri Oct 14 23:03:47 2011
Thread 1 cannot allocate new log, sequence 133983
Private strand flush not complete
Current log# 4 seq# 133982 mem# 0: /dev/rredodbs41
Current log# 4 seq# 133982 mem# 1: /dev/rredodbs42
Fri Oct 14 23:03:50 2011
Thread 1 advanced to log sequence 133983 (LGWR switch)
Current log# 5 seq# 133983 mem# 0: /dev/rredodbs51
Current log# 5 seq# 133983 mem# 1: /dev/rredodbs52
Fri Oct 14 23:03:50 2011
Waiting for all non-current ORLs to be archived...
Fri Oct 14 23:03:50 2011
Waiting for the ORL for thread 1 sequence 133982 to be archived...
Fri Oct 14 23:04:00 2011
ORL for thread 1 sequence 133982 has been archived...
Fri Oct 14 23:04:00 2011
All non-current ORLs have been archived.
Fri Oct 14 23:04:00 2011
Waiting for all FAL entries to be archived...
Fri Oct 14 23:25:29 2011
ORA-1013 signalled during: ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN...

資料庫在等待和FAL配置有關,由於資料庫的操作一直停在了這裡,最後不得以中止了SWITCHOVER的操作。

檢查客戶的FAL相關配置,發現FAL_SERVER的設定可能存在問題:

SQL> SHOW PARAMETER FAL

NAME                       TYPE        VALUE
-------------------------- ----------- --------------------
fal_client                 string      db1
fal_server                 string      db1st,db1st2

由於當前主庫配置了兩個STANDBY資料庫,分別是db1stdb2st,當前的設定明顯是希望無論主庫和那個備庫進行切換後,透過設定兩個fal_serverDATA GUARD配置都可以正常,而不需要修改配置。

但是目前看來,似乎這種設定兩個引數的方式並不生效,使得在SWITCHOVER的時Oracle停了下來。

FAL_SERVER設定為要進行SWITCHOVER的備庫的TNS服務名:

SQL> ALTER SYSTEM SET fal_server='db1st';

System altered.

重啟資料庫,使得引數生效。雖然這個引數的修改不需要重啟資料庫,但是在執行SWITCHOVER的時候發現,如果不重啟資料庫,Oracle並沒有重新獲取FAL_SERVER的值,而是根據本次啟動時載入的FAL_SERVER的值。

重新啟動後再次執行SWITCHOVER,切換成功完成:

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

Database altered.

一直認為FAL_SERVERFAL_CLIENT只是DATA GUARD配置用來自動獲取GAP的引數,沒想到這個引數的設定對於SWITCHOVER也有這麼大的影響。

 

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

相關文章