Oracle 修改預設監聽埠故障分析
環境說明:
OS:Redhat 7.5
DB:Oracle 11.2.0.4.0 單例項
問題:
測試環境資料庫埠使用預設埠1521,嘗試修改預設埠為8821,修改成功後進行驗證。
發現透過8821可以登入到資料庫了,搞定,收工?
sqlplus cjc/******@10.0.0.10:8821/cjcdb
在驗證下1521是不是連線不上了,居然還能連線?
sqlplus cjc/******@10.0.0.10:1521/cjcdb
操作過程如下:
1.停止監聽
lsnrctl stop
2.修改監聽檔案listener.ora
cd $ORACLE_HOME/network/admin
cp listener.ora listener.ora.bak
vi listener.ora
LISTENER = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) (ADDRESS = (PROTOCOL = TCP)(HOST = myhostname)(PORT = myport)) )
3.修改tnsnames.ora檔案
cd $ORACLE_HOME/network/admin
cp tnsnames.ora tnsnames.ora.bak
vi tnsnames.ora
(1)修改對應埠號
(2)檔案末尾新增如下內容
MYLISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myserver )(PORT = myport)) )
4.修改LOCAL_LISTENER引數
show parameter local
ALTER SYSTEM SET LOCAL_LISTENER='MYLISTENER' SCOPE=BOTH;
5.啟動監聽檔案
lsnrctl start
6.驗證
sqlplus cjc/******@10.0.0.10:8821/cjcdb
成功!
sqlplus cjc/******@10.0.0.10:1521/cjcdb
成功?
sqlplus cjc/******@10.0.0.10:61521/cjcdb
隨便寫一個埠號,失敗
問題排查:
為什麼改完埠了透過1521還能遠端登入?
停止監聽
lsnrctl stop
測試,透過1521還能遠端登入
sqlplus cjc/******@10.0.0.10:1521/cjcdb
難道是配置了多個監聽?
全盤搜尋,只有一個listener.ora,而且配置沒問題
#find / -name listener.ora
檢查1521埠對應的程式
lsof -i:1521
找到1521對應程式pid
檢視程式資訊
ps -ef|grep pid
xxx/bin/tnslsnr listener -inherit
已經停了監聽,為何還有監聽程式
手動殺掉這個程式,重啟監聽恢復正常。
問題原因:
Metalink上沒有找到對應版本的問題,
和Bug 4518443類似,但是版本對不上,這個bug描述如下:
The listener process can hang under load while spawning a process.
The last process the listener spawned will have a stack which
includes a mutex lock call in ons_atfork_prepare().
如何檢查你的資料庫是否有這個問題?
ps -ef|grep -i tnslsnr|grep -v grep
如果有2個程式,說明可能會有類似的問題。
解決方案:
臨時解決方案:
殺掉多餘的程式。
永久解決方案:
單例項下,將SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF配置到監聽檔案彙總。
或者打補丁。
其他:如何修改RAC環境下預設監聽埠號?
1.檢視當前監聽配置
srvctl config listener
2.修改ocr中記錄的埠號
srvctl modify listener -l LISTENER -p "TCP:<new-listener-port>"
3.修改scan_listener埠號
srvctl modify scan_listener -p <new-scan-port>
4.修改LOCAL_LISTENER
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<Host-name>)(PORT=<new-port-number>))))' scope=both sid='[<your-chosen-instance> | * ] '
5.修改REMOTE_LISTENER
6.重啟監聽
參考:
Changing Default Listener Port Number (Doc ID 359277.1)
Changing Listener Ports On RAC/EXADATA (Doc ID 1473035.1)
Bug 4518443 - Listener hang under load (Doc ID 4518443.8)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2896830/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle之 單例項監聽修改埠Oracle單例
- Oracle 建立非1521埠監聽Oracle
- 12C RAC 修改監聽埠
- oracle rac scan監聽更改埠號Oracle
- 資料庫監聽夯故障分析資料庫
- 網站預設埠怎麼修改,網站預設埠修改方法網站
- ArcGIS for Server預設埠6080修改Server
- 修改Windows預設遠端埠號Windows
- 初始化監聽埠
- samba程序與監聽埠Samba
- Linux修改ssh預設22埠的方法Linux
- .Net Core 修改預設的啟動埠
- 修改伺服器預設遠端埠伺服器
- oracle靜態監聽Oracle
- JMS監聽Oracle AQOracle
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- windows10怎麼檢視監聽埠_windows10檢視監聽埠的方法Windows
- nginx 80埠監聽多個域名Nginx
- ECS修改 Linux 伺服器預設遠端埠Linux伺服器
- Oracle dblink監聽問題Oracle
- 6、oracle網路(監聽)Oracle
- grid監聽故障,本地地址不能連線
- shell埠監聽異常郵箱告警
- 使用java程式,監聽tcp協議埠JavaTCP協議
- Oracle 監聽異常處理Oracle
- Oracle啟動兩個監聽Oracle
- Oracle 監聽投毒COST解決Oracle
- 修改tomcat預設主頁,修改後只需要輸入埠就能訪問Tomcat
- oracle監聽不到例項服務Oracle
- 監聽檔案修改的四種方法
- linux系統中監聽埠概念是什麼?Linux
- ssh遠端埠轉發無法監聽0.0.0.0
- Linux 修改預設SSH埠 22,避免被暴力破解密碼Linux解密密碼
- 【ASK_ORACLE】Oracle 12.2 Bug導致網路卡出現故障後RAC庫未向TCP註冊本地VIP監聽OracleTCP
- oracle 設定監聽白名單,並且怎麼設定白名單地址Oracle
- 使用JavaScript給物件修改註冊監聽器JavaScript物件
- Oracle 11g RAC 監聽日常管理Oracle
- oracle 最全的監聽、tnsnames.ora格式Oracle