Oracle RAC 11gR2 SCAN IP和VIP共用1521監聽埠引發的ORA-12520問題
問題現象:
Oracle 11.2.0.4.0 RAC SCAN IP和VIP共用1521埠,則只有各個RAC節點上能同時通過scan ip或vip訪問資料庫。
版本:
Oracle:Oracle 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
OS: Linux ... 3.0.13-0.27-default #1 SMP Wed Feb 15 13:33:49 UTC 2012 (d73692b) x86_64 x86_64 x86_64 GNU/Linux
1. 測試場景:
/etc/hosts配置的一個scan ip: IP地址 10.229.174.172 / listener_scan1監聽埠1521, 名稱test_scan ;
兩個rac vip:IP地址分別為10.229.174.168, 10.229.174.169, listener監聽埠1521, 測試資料庫服務test_db, 例項分別為test_db1,test_db2。
2. 登入rac2-vip: 10.229.174.169機器(listern_scan1在本節點上啟動),檢視listener引數:
SQL> show parameter lis;
NAME TYPE VALUE
---------------------------------- ----------- ------------------------------
listener_networks string
local_listener string
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.229.174.169)(PORT=1521))))
remote_listener string test_scan:1521
檢視本機啟動的listener_scan1狀態:
#> lsnrctl status listener_scan1
...
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.229.174.172)(PORT=1521)))
...
3. 登入rac1-vip: 10.229.174.168機器,檢視listener引數
SQL> show parameter lis;
NAME TYPE VALUE
---------------------------------- ----------- ------------------------------
listener_networks string
local_listener string
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.229.174.168)(PORT=1521))))
remote_listener string test_scan:1521
4. PC客戶端10.233.11.58連線rac1-vip:
C:> sqlplus sys/XXXX@10.229.174.168/test_db as sysdba
SQL> select instance_name from v$insance 顯示結果正確。
5. PC客戶端10.233.11.58連線rac2-vip:
C:> sqlplus sys/XXXX@10.229.174.169/test_db as sysdba
SQL> select instance_name from v$instance 顯示結果正確。
6. PC客戶端10.233.11.58連線scan ip:
C:> sqlplus sys/XXXX@10.229.174.172/test_db as sysdba
顯示:
ORA-12520: TNS: 監聽程式無法為請求的伺服器型別找到可用的處理程式
檢視scan ip日誌檔案/oracle/app/grid/diag/tnslsnr/rac2/listener_scan1/trace/listener_scan1.log內容,有連續兩次客戶端連線請求資訊,
第一次連線的trace資訊如下:
23-MAR-2014 19:16:10 * (CONNECT_DATA=(SERVICE_NAME=test_db)(CID=(PROGRAM=f:\oracle\product\11.2.0\client_1\bin\sqlplus.exe)(HOST=CNL)(USER=zrlw))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.233.11.58)(PORT=1325)) * establish * test_db * 0
處理結果碼為0:成功。
第二次連線的trace資訊如下:
23-MAR-2014 19:16:10 * (CONNECT_DATA=(SERVICE_NAME=test_db)(CID=(PROGRAM=f:\oracle\product\11.2.0\client_1\bin\sqlplus.exe)(HOST=CNL)(USER=zrlw))(SERVER=dedicated)(INSTANCE_NAME=test_db2)) * (ADDRESS=(PROTOCOL=tcp) (HOST=10.233.11.58)(PORT=1326)) * establish * test_db * 12520
處理結果碼為12520:失敗。
其中第二次資訊中的test_db2是10.229.174.169上的資料庫例項,顯然第二個請求是發給10.229.174.169的1521埠的資料,但被同一機器上部署的listener_scan1(10.229.174.172 : 1521)截獲了。
個人推斷:
Oracle RAC 11g R2的endpoints_listener.ora引數檔案配置的private ip均自動帶有IP=FIRST限定引數,以限定在private ip的網路介面上監聽,從日誌資訊推斷,11.2.0.4.0版本的scan ip可能沒有做IP=FIRST的限制,不僅監聽了自己要監聽的網路介面,而且監聽了本機所有的網路介面(INADDR_ANY),當同機vip埠與其監聽埠相同的時候,scan listener直接截獲了本該由vip listener接收的資料。 如果上述推斷屬實,則本問題應是Oracle RAC 11.2.0.4.0版本的一處BUG。
應對辦法:
分離vip和scan ip的監聽埠,將各個vip的監聽埠改為1522,同時修改local_listener引數,為避免客戶端變動,scan ip埠維持1521不變。
完成埠分離之後經過測試,客戶端的sqlplus / odbc / jdbc 通過scan ip 還是通過vip現在均能正常訪問資料庫了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31840/viewspace-1127876/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle rac scan監聽更改埠號Oracle
- Oracle RAC中的Public IP, VIP和Internal IP,SCANOracle
- RAC改VIP和SCAN IP
- Oracle RAC修改public, VIP, SCAN IPOracle
- Oracle 建立非1521埠監聽Oracle
- Oracle RAC修改public,private,vip scan IPOracle
- Oracle 11gR2 RAC修改SCAN IPOracle
- 【Oracle】修改scan監聽器埠號Oracle
- rac的vip和監聽莫名故障
- 導致 Scan VIP 和 Scan Listener(監聽程式)出現故障的最常見的 5 個問題
- ORACLE 修改11.2.0.4 RAC 預設監聽埠號1521為1621Oracle
- oracle監聽【非1521埠】動態註冊Oracle
- rac 手動漂移scan ip vip
- Oracle 11gR2 RAC修改SCAN IP地址Oracle
- oracle 11g rac 修改VIP、scan VIP、priv IP操作文件Oracle
- oracle 11g 修改預設監聽埠1521Oracle
- RAC_網路_VIP漂移_SCAN IP
- Oracle之 11gR2 RAC 修改監聽器埠號的步驟Oracle
- RAC中的各種IP-PUBLIC-VIP-Private-SCAN IP
- oracle rac的scan監聽狀態Not All Endpoints RegisteredOracle
- Oracle RAC修改IP和VIP地址Oracle
- rac scan listener log 清理監聽日誌 oracleOracle
- TCPUDP 共用埠問題TCPUDP
- How to modify Public ip and vip In 11gr2 Rac
- Oracle RAC修改Scan IP,Public IP的方法Oracle
- Oracle 11gr2修改RAC叢集的scan ip,並處理ORA-12514問題Oracle
- 11g RAC 修改PUBLIC-IP、VIP、PRIV-IP、SCAN-IP
- 【RAC】如何修改SCAN IP的IP地址、名稱、埠等資訊
- oracle更改預設埠號,監聽器加密,限制ip訪問Oracle加密
- RAC_TNS故障轉移負載均衡、SCAN IP、VIP、PUBLIC IP負載
- oracle的監聽問題Oracle
- oracle 11gR2 scan ip (DNS模式)OracleDNS模式
- oracle 11gR2 scan PRVF-4664 問題Oracle
- 【Oracle】修改oracle監聽埠Oracle
- 關於oracle11g RAC 監聽器問題Oracle
- oracle 11gR2 如何修改scan vip 地址 /etc/hosts方式Oracle
- oracle 11gR2 修改 DNS 方式 SCAN IPOracleDNS
- Oracle 10g RAC vip 漂移問題Oracle 10g