Oracle修改端口號(hào)之后無法啟動(dòng)的解決方案
一、問題根源分析??
??配置文件語法錯(cuò)誤??
- 修改listener.ora時(shí)遺漏關(guān)鍵符號(hào)(如括號(hào)不匹配)、格式錯(cuò)誤或路徑錯(cuò)誤會(huì)導(dǎo)致解析失敗。
- ??典型表現(xiàn)??:執(zhí)行l(wèi)snrctl start后報(bào)錯(cuò) TNS-12542: TNS: 監(jiān)聽器地址無效。
??端口被占用或防火墻攔截??
- 新端口可能被其他進(jìn)程占用(如Apache、其他數(shù)據(jù)庫)或被防火墻阻止。
- ??驗(yàn)證命令??:
# Linux/Unix netstat -tuln | grep <新端口號(hào)> # Windows netstat -ano | findstr "<新端口號(hào)>"
- ??未同步更新客戶端配置??
- 僅修改
listener.ora而未更新tnsnames.ora,導(dǎo)致客戶端無法連接,誤判為監(jiān)聽器故障。
- 僅修改
- ??SID或服務(wù)名未正確關(guān)聯(lián)??
- 監(jiān)聽器未綁定到正確的數(shù)據(jù)庫實(shí)例(SID),導(dǎo)致無法路由連接請(qǐng)求。
?二、保姆級(jí)解決方案??
??步驟1:修正監(jiān)聽器配置文件 (listener.ora)??
- ??文件路徑??:
$ORACLE_HOME/network/admin/listener.ora - ??正確配置模板??:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主機(jī)名)(PORT = 新端口號(hào))) # 修改此處端口
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = 數(shù)據(jù)庫SID) # 例如 orcl
(ORACLE_HOME = Oracle安裝路徑) # 例如 /u01/app/oracle/product/19.0.0/dbhome_1
)
)??關(guān)鍵檢查點(diǎn)??:
- 括號(hào)必須成對(duì)閉合,避免嵌套錯(cuò)誤。
HOST需為服務(wù)器IP或可解析的主機(jī)名(避免用localhost)。
??步驟2:更新客戶端配置 (tnsnames.ora)??
- ??文件路徑??:
$ORACLE_HOME/network/admin/tnsnames.ora - ??修改示例??:
服務(wù)別名 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主機(jī)名)(PORT = 新端口號(hào))) # 與listener.ora一致
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 數(shù)據(jù)庫服務(wù)名) # 例如 orcl
)
)步驟3:重啟監(jiān)聽器并驗(yàn)證?
# 停止監(jiān)聽器 lsnrctl stop # 啟動(dòng)監(jiān)聽器 lsnrctl start # 檢查狀態(tài) lsnrctl status
- ?預(yù)期輸出??:顯示
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=新端口號(hào)))且狀態(tài)為 ??"Service ready"??。
??步驟4:處理端口占用與防火墻?
- ??釋放端口??:終止占用進(jìn)程(通過
kill -9 <PID>或Windows任務(wù)管理器)。 - ??開放防火墻??:
# Linux firewall-cmd --add-port=<新端口號(hào)>/tcp --permanent firewall-cmd --reload # Windows:高級(jí)安全防火墻 → 新建入站規(guī)則
??步驟5:檢查環(huán)境變量與權(quán)限??
- ??確認(rèn)
ORACLE_HOME正確??:
echo $ORACLE_HOME # Linux set ORACLE_HOME # Windows
- ??文件權(quán)限??:確保
oracle用戶對(duì)listener.ora和tnsnames.ora有讀寫權(quán)限:
chown oracle:oinstall $ORACLE_HOME/network/admin/*.ora chmod 640 $ORACLE_HOME/network/admin/*.ora
三、預(yù)防性措施??
- ??變更前備份配置??:
cp listener.ora listener.ora.bak cp tnsnames.ora tnsnames.ora.bak
- ??使用工具驗(yàn)證配置??:
tnsping 服務(wù)別名測(cè)試客戶端連通性。
- ??RAC環(huán)境特殊處理??:
- 通過
srvctl更新集群監(jiān)聽配置:
- 通過
srvctl modify listener -l LISTENER -p "TCP:新端口號(hào)" srvctl modify scan_listener -p 新端口號(hào)
總結(jié)??
端口修改后監(jiān)聽器無法啟動(dòng)通常由??配置遺漏或語法錯(cuò)誤??引發(fā)(占案例80%以上)。嚴(yán)格遵循以下流程可徹底解決:
- ??雙文件同步??:同步修改
listener.ora和tnsnames.ora; - ??語法校驗(yàn)??:檢查括號(hào)閉合、參數(shù)格式;
- ??環(huán)境驗(yàn)證??:端口占用、防火墻、權(quán)限;
- ??重啟生效??:通過
lsnrctl status確認(rèn)監(jiān)聽狀態(tài)。
若仍失敗,檢查 $ORACLE_HOME/log/diag/tnslsnr/主機(jī)名/listener/alert/log.xml 中的詳細(xì)錯(cuò)誤日志。
到此這篇關(guān)于Oracle修改端口號(hào)之后無法啟動(dòng)的解決方案的文章就介紹到這了,更多相關(guān)Oracle修改端口號(hào)無法啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle 閃回 找回?cái)?shù)據(jù)的實(shí)現(xiàn)方法
閃回技術(shù)是Oracle強(qiáng)大數(shù)據(jù)庫備份恢復(fù)機(jī)制的一部分,在數(shù)據(jù)庫發(fā)生邏輯錯(cuò)誤的時(shí)候,閃回技術(shù)能提供快速且最小損失的恢復(fù)。這篇文章主要介紹了Oracle 閃回 找回?cái)?shù)據(jù)的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-09-09
Windows server 2019安裝Oracle 19c的圖文教程
Oracle是是一款高效、可靠、吞吐量高的數(shù)據(jù)庫,本文主要介紹了Windows server 2019安裝Oracle 19c的圖文教程,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
Oracle Listener 動(dòng)態(tài)注冊(cè) 與 靜態(tài)注冊(cè)
注冊(cè)就是將數(shù)據(jù)庫作為一個(gè)服務(wù)注冊(cè)到監(jiān)聽程序。客戶端不需要知道數(shù)據(jù)庫名和實(shí)例名,只需要知道該數(shù)據(jù)庫對(duì)外提供的服務(wù)名就可以申請(qǐng)連接到數(shù)據(jù)庫2015-12-12
Oracle數(shù)據(jù)庫中ORDER BY排序和查詢按IN條件的順序輸出
這篇文章主要介紹了Oracle數(shù)據(jù)庫中ORDER BY排序和查詢按IN條件的順序輸出的方法,其中ORDER BY的排序結(jié)果需要注意其是否穩(wěn)定,需要的朋友可以參考下2015-11-11
Oracle數(shù)據(jù)庫中l(wèi)ead和lag函數(shù)用法示例
lag與lead函數(shù)是跟偏移量相關(guān)的兩個(gè)分析函數(shù),通過這兩個(gè)函數(shù)可以在一次查詢中取出同一字段的前N行的數(shù)據(jù)(lag)和后N行的數(shù)據(jù)(lead)作為獨(dú)立的列,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中l(wèi)ead和lag函數(shù)用法的相關(guān)資料,需要的朋友可以參考下2024-06-06

