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 11g 修改預設監聽埠1521Oracle
- 【Oracle】修改oracle監聽埠Oracle
- 【Oracle】修改scan監聽器埠號Oracle
- Oracle 11g 修改監聽埠Oracle
- ORACLE 修改11.2.0.4 RAC 預設監聽埠號1521為1621Oracle
- oracle之 單例項監聽修改埠Oracle單例
- Oracle資料庫修改LISTENER的監聽埠Oracle資料庫
- [20160418]修改oracle監聽埠.txtOracle
- 修改oracle監聽佔用的8080埠(轉)Oracle
- oracle更改預設埠號,監聽器加密,限制ip訪問Oracle加密
- 預設及非預設埠的動態監聽/靜態監聽實驗彙總
- [20130422]修改oracle監聽埠.txtOracle
- 12C RAC 修改監聽埠
- 修改ORACLE的預設8080埠Oracle
- oracle 監聽配置多個埠Oracle
- 網站預設埠怎麼修改,網站預設埠修改方法網站
- 資料庫監聽夯故障分析資料庫
- oracle rac scan監聽更改埠號Oracle
- Oracle 建立非1521埠監聽Oracle
- 如何更改oracle監聽器的埠Oracle
- Oracle之 11gR2 RAC 修改監聽器埠號的步驟Oracle
- Oracle RAC Database 11.1.0.6監聽故障案例OracleDatabase
- 【監聽】配置服務端靜態(動態)監聽/修改監聽埠及引數local_listener作用服務端
- Linux修改sshd預設埠Linux
- oracle 11.2.0.3.6升級故障---監聽報錯Oracle
- Oracle 預設埠列表Oracle
- Windows server 防火牆開放oracle監聽埠WindowsServer防火牆Oracle
- 修改服務端監聽器埠號為1526服務端
- 修改Windows預設遠端埠號Windows
- ArcGIS for Server預設埠6080修改Server
- Oracle 10g 兩個監聽程式的故障Oracle 10g
- oracle監聽【非1521埠】動態註冊Oracle
- 初始化監聽埠
- samba程序與監聽埠Samba
- 修改伺服器預設遠端埠伺服器
- .Net Core 修改預設的啟動埠
- UNIX環境設定監聽埠的指令碼指令碼
- 【LISTENER】修改 LISTENER的監聽埠為1526(動態註冊)