關於RAC的remote_listener

abstractcyj發表於2019-10-30

近期在客戶那邊配合測試Active Dataguard的切換測試時,採用了這樣的測試流程:

資料庫的架構為11.2.0.4的RAC作為primary, standby端是個單例項。

           1. DATAGUARD進行switchover

           2. 原primary端停止scan listener與scan ip

           3. 原standby端修改IP地址與primary端的SCAN IP相同

           4. crsctl stop crs。 停掉原primary端叢集服務

      

最開始,應用連線到新的primary端沒有問題。切換之後,我們重新啟動了新的standby端的叢集服務。這時候,應用端出現了錯誤: ORA-01033 : ORACLE initialization or shutdown in progress


經確認, 客戶的應用端都是採用的SCAN IP配置的資料庫連線。

檢查監聽, 發現監聽狀態中除了備庫註冊的靜態監聽服務,同時多了兩個instance, orcl1, orcl2。這樣就導致監聽把客戶端的連線請求轉發到了資料庫主機上不存在的兩個例項orcl1與orcl2上。


測試結束之後,定位錯誤原因。想來想去,應與remote_listener這個引數相關。

檢查此引數, remote_listener引數為rac-scan:1521。RAC的資料庫例項,都會向remote_listener引數指向的監聽地址註冊。測試時,remote_listener依舊指向的是原SCAN IP, 這樣,修改IP之後,remote listener自然就是switchover之後的新的primary資料庫。這樣看來,監聽中出現ready狀態的instance: orcl1, orcl2也不足為奇了。

以下圖片來自於我的測試環境, RAC與單例項之間也並未搭建DG。


如果不調整remote_listener,備庫監聽就會出現以下情況

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

相關文章