Oracle修改端口號之后無法啟動的解決方案
一、問題根源分析??
??配置文件語法錯誤??
- 修改listener.ora時遺漏關鍵符號(如括號不匹配)、格式錯誤或路徑錯誤會導致解析失敗。
 - ??典型表現(xiàn)??:執(zhí)行l(wèi)snrctl start后報錯 TNS-12542: TNS: 監(jiān)聽器地址無效。
 
??端口被占用或防火墻攔截??
- 新端口可能被其他進程占用(如Apache、其他數(shù)據(jù)庫)或被防火墻阻止。
 - ??驗證命令??:
 
# Linux/Unix netstat -tuln | grep <新端口號> # Windows netstat -ano | findstr "<新端口號>"
- ??未同步更新客戶端配置??
- 僅修改
listener.ora而未更新tnsnames.ora,導致客戶端無法連接,誤判為監(jiān)聽器故障。 
 - 僅修改
 - ??SID或服務名未正確關聯(lián)??
- 監(jiān)聽器未綁定到正確的數(shù)據(jù)庫實例(SID),導致無法路由連接請求。
 
 
?二、保姆級解決方案??
??步驟1:修正監(jiān)聽器配置文件 (listener.ora)??
- ??文件路徑??:
$ORACLE_HOME/network/admin/listener.ora - ??正確配置模板??:
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 主機名)(PORT = 新端口號))  # 修改此處端口
    )
  )
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
    )
  )??關鍵檢查點??:
- 括號必須成對閉合,避免嵌套錯誤。
 HOST需為服務器IP或可解析的主機名(避免用localhost)。
??步驟2:更新客戶端配置 (tnsnames.ora)??
- ??文件路徑??:
$ORACLE_HOME/network/admin/tnsnames.ora - ??修改示例??:
 
服務別名 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 主機名)(PORT = 新端口號))  # 與listener.ora一致
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 數(shù)據(jù)庫服務名)  # 例如 orcl
    )
  )步驟3:重啟監(jiān)聽器并驗證?
# 停止監(jiān)聽器 lsnrctl stop # 啟動監(jiān)聽器 lsnrctl start # 檢查狀態(tài) lsnrctl status
- ?預期輸出??:顯示
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=新端口號))且狀態(tài)為 ??"Service ready"??。 
??步驟4:處理端口占用與防火墻?
- ??釋放端口??:終止占用進程(通過
kill -9 <PID>或Windows任務管理器)。 - ??開放防火墻??:
 
# Linux firewall-cmd --add-port=<新端口號>/tcp --permanent firewall-cmd --reload # Windows:高級安全防火墻 → 新建入站規(guī)則
??步驟5:檢查環(huán)境變量與權限??
- ??確認
ORACLE_HOME正確??: 
echo $ORACLE_HOME # Linux set ORACLE_HOME # Windows
- ??文件權限??:確保
oracle用戶對listener.ora和tnsnames.ora有讀寫權限: 
chown oracle:oinstall $ORACLE_HOME/network/admin/*.ora chmod 640 $ORACLE_HOME/network/admin/*.ora
三、預防性措施??
- ??變更前備份配置??:
 
cp listener.ora listener.ora.bak cp tnsnames.ora tnsnames.ora.bak
- ??使用工具驗證配置??:
tnsping 服務別名測試客戶端連通性。
 - ??RAC環(huán)境特殊處理??:
- 通過
srvctl更新集群監(jiān)聽配置: 
 - 通過
 
srvctl modify listener -l LISTENER -p "TCP:新端口號" srvctl modify scan_listener -p 新端口號
總結??
端口修改后監(jiān)聽器無法啟動通常由??配置遺漏或語法錯誤??引發(fā)(占案例80%以上)。嚴格遵循以下流程可徹底解決:
- ??雙文件同步??:同步修改
listener.ora和tnsnames.ora; - ??語法校驗??:檢查括號閉合、參數(shù)格式;
 - ??環(huán)境驗證??:端口占用、防火墻、權限;
 - ??重啟生效??:通過
lsnrctl status確認監(jiān)聽狀態(tài)。 
若仍失敗,檢查 $ORACLE_HOME/log/diag/tnslsnr/主機名/listener/alert/log.xml 中的詳細錯誤日志。
到此這篇關于Oracle修改端口號之后無法啟動的解決方案的文章就介紹到這了,更多相關Oracle修改端口號無法啟動內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
 oracle的歸檔模式 ORACLE數(shù)據(jù)庫歸檔日志常用命令
Oracle數(shù)據(jù)庫有聯(lián)機重做日志,這個日志是記錄對數(shù)據(jù)庫所做的修改,比如插入,刪除,更新數(shù)據(jù)等,對這些操作都會記錄在聯(lián)機重做日志里2013-01-01
 Oracle的PDB數(shù)據(jù)庫創(chuàng)建DIRECTORY時遇到ORA-65254問題及解決方法
這篇文章主要介紹了Oracle的PDB數(shù)據(jù)庫創(chuàng)建DIRECTORY時遇到ORA-65254問題,本文給大家分享完美解決方案,需要的朋友可以參考下2023-06-06
 Oracle 要慌了!華為終于開源了自家的 Huawei JDK——畢昇 JDK!
畢昇 JDK 是華為內部 OpenJDK 定制版 Huawei JDK 的開源版本,是一個高性能、可用于生產(chǎn)環(huán)境的 OpenJDK 發(fā)行版,感興趣的朋友跟隨小編一起看看吧2020-12-12
 Oracle數(shù)據(jù)庫中ora-12899錯誤的解決方法
大家在使用oracle數(shù)據(jù)庫時,經(jīng)常會遇到各種各樣的問題,其中ORA-12899就是前段時間我在將數(shù)據(jù)導入到我本地機器上的時候一直出現(xiàn)的問題.經(jīng)過一番倒騰問題順利解決,下面小編把實現(xiàn)思路分享到腳本之家平臺大家可以參考下2017-11-11
 Oracle數(shù)據(jù)庫部分遷至閃存存儲的實現(xiàn)方法
下面小編就為大家分享一篇Oracle數(shù)據(jù)庫部分遷至閃存存儲的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

