【ASK_ORACLE】Oracle 12.2 Bug導致網路卡出現故障後RAC庫未向TCP註冊本地VIP監聽
實驗環境
搭建平臺:VMware Workstation
OS:RHEL 7.6
Grid&DB:Oracle 12.2.0.1
問題描述
1. 網路卡NIC發生故障後,發現資料庫註冊不到本地監聽器(監聽使用的VIP):
$ lsnrctl status ##此處省略一部分輸出## Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.xx.xx.165)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.xx.xx.166)(PORT=1521))) The listener supports no services ##沒有服務被註冊
2. 手工強制註冊監聽:
SQL> alter system register;
再次檢查發現任然沒有註冊上
3. 檢查listener相關引數:
SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST= 192.xx.xx.166)(PORT=1521)) remote_listener string testdb-scan:1521
貌似也沒有什麼問題......
4. 檢查trace日誌跟蹤顯示傳送了正確的註冊資訊,但是監聽器似乎從未接收過服務資訊。
$ vim /oracle/app/oracle/diag/rdbms/testdb/testdb1/trace/testdb1_lreg_3891.trc ##此處省略一部分輸出## Unix process pid: 3891, image: oracle@racdb01 (LREG) ##此處省略一部分輸出## Local listeners: 0 - (ADDRESS=(PROTOCOL=TCP)(HOST=192.xx.xx.166)(PORT=1521)) pdb 1 dci 0 state=2, err=0 nse[0]=0, nse[1]=0, nte[0]=0, nte[1]=0, nte[2]=0 ncre=0 endp=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.xx.xx.166)(PORT=1521))) flg=0x80000000 nse=0 pri=0x101815c75
日誌顯示註冊資訊已經傳送出去了,但是監聽卻收到過服務資訊。
5. 檢查scan的監聽:
$ lsnrctl status listener_scan1
發現scan沒問題,能看見服務註冊上去。
6. 最後再檢查VNCR(Valid Node Checking Registration)設定:
$ lsnrctl show valid_node_checking_registration LSNRCTL for LINUX RISC System/6000: Version 12.2.0.1.0 - Production on 16-AUG-2021 10:25:57 Copyright (c) 1991, 2016, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))) LISTENER parameter "valid_node_checking_registration" set to SUBNET ##這裡顯示被設定為SUBNET(一般預設就是這個值)
解決辦法
諮詢了Oracle官方人員,這是一個未公開的 Bug 26739452 引起的,後來我查該Bug編號也確實查不出來。
該Bug與 CRS 自動將 VNCR設定為 SUBNET 值有關,即使在單節點環境中也是如此在這種情況下:當一個節點關閉時,如果沒有子網,資料庫仍在嘗試“SUBNET”安全設定,就會導致LOCAL註冊出現問題。 這個Bug在Oracle 18c修復了。
所以,如果不想升級12c,那麼解決辦法如下:
將LOCAL_LISTENER設定為本地VIP監聽器的IPC地址,不再用TCP地址:
SQL> alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=
IPC)(KEY=LISTENER))' scope=both sid='*';
SQL> alter system register;
注:
1)KEY的值要與 listener.ora 檔案中的KEY的值相同
2) 用於 LOCAL 監聽器註冊的 IPC 地址實際上是首選,因為它更安全(IPC僅是“本地”協議),並且它更快(IPC 不容易發生 TCP 網路流量變化)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2789173/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 當心ORACLE 12.2 RAC新特性引入的BUG導致ORA-4031Oracle
- rac監聽不能動態註冊
- Oracle RAC日常運維-NetworkManager導致叢集故障Oracle運維
- 【RAC】Oracle rac 如何修改公網及vipOracle
- 【ASK_ORACLE】因process用盡導致的rac重啟的解決方法Oracle
- 【ASK_ORACLE】安裝Oracle RAC 12.2的GI軟體時報錯CLSRSC-614Oracle
- Oracle 12.2 BUG :分割槽維護導致的 ORA-600 KKPOFPCD3Oracle
- 在duplicate時,出現監聽BLOCKED的情況,導致監聽自動關閉BloC
- oracle rac scan監聽更改埠號Oracle
- grid監聽故障,本地地址不能連線
- Oracle 11g RAC 監聽日常管理Oracle
- Oracle 19C 監聽無法動態註冊例項Oracle
- Oracle 12.2 RAC on Linux Best Practice DocumentationOracleLinux
- Oracle 修改預設監聽埠故障分析Oracle
- 資料庫監聽夯故障分析資料庫
- 指定無線網路卡監聽通道
- ORACLE之手動註冊監聽listener。alter system set local_listener="XXX"Oracle
- oracle 12c 資料庫例項監聽無法註冊問題一例Oracle資料庫
- Oracle RAC修改public, VIP, SCAN IPOracle
- oracle rac的scan監聽狀態Not All Endpoints RegisteredOracle
- 6、oracle網路(監聽)Oracle
- Oracle 11gR2 RAC 單網路卡轉雙網路卡繫結配置Oracle
- 使用JavaScript給物件修改註冊監聽器JavaScript物件
- Nacos - 事件的註冊、取消與監聽(EventDispatcher)事件
- 微軟升級病毒庫導致Win7/8.1端Defender出現bug微軟Win7
- Oracle RAC啟動因CTSS導致的異常Oracle
- 資料庫無法註冊至監聽服務解決辦法資料庫
- 記一次儲存問題導致的rac故障案例
- 【ASK_ORACLE】Relink RAC叢集詳細步驟Oracle
- RAC節點hang住, oracle bug導致了cpu過高,無法啟動叢集隔離Oracle
- js 註冊事件的兩種方式詳解,傳統註冊事件與方法監聽註冊事件(addEventListener)JS事件dev
- 【ASK_ORACLE】Oracle RAC配置ASM Filter Driver(ASMFD)(一)ASMFD簡介OracleASMFilter
- 檢視無線網路卡是否支援監聽模式模式
- ORACLE rac資料庫監聽與應用TNS連線串配置與ORA12519Oracle資料庫
- 導致物聯網路卡停機的原因
- 一次Oracle監聽無法動態註冊處理過程排查分析Oracle
- 研究網路卡地址註冊時的一點思考
- oracle11gR2 RAC更換網路卡實施方案Oracle