PL/SQL Developer 突然無法連線、無報錯碼直接卡死。查閱 oradim.log 發現雙重錯誤:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_DRP'
根因為 LOCAL_LISTENER 參數引用的網路別名 LISTENER_DRP 在 tnsnames.ora 中遺失或定義錯誤。本文提供兩套修復方案:tnsnames.ora 補全法與 SPFILE/PFILE 參數重建法。
$ORACLE_HOME/network/admin/tnsnames.ora。LISTENER_DRP =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
DRP 為資料庫 SID,HOST 為實際主機名(非 IP),PORT 與 listener.ora 一致。STARTUP 即可正常掛載/開啟。SQL> CREATE PFILE='D:\app\oracle\product\11.2.0\dbhome_1\database\INITdrp.ORA'
FROM SPFILE='D:\app\oracle\product\11.2.0\dbhome_1\database\SPFILEDRP.ORA';
local_listener 行,修正為完整 ADDRESS_LIST 格式:local_listener='(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=your_hostname)(PORT=1521)))'
SQL> CREATE SPFILE='D:\app\oracle\product\11.2.0\dbhome_1\database\SPFILEDRP.ORA'
FROM PFILE='D:\app\oracle\product\11.2.0\dbhome_1\database\INITdrp.ORA';
SQL> STARTUP
SHOW PARAMETER local_listener 確認值正確。LSNRCTL STATUS 確認監聽器服務已註冊。tnsnames.ora、listener.ora、LOCAL_LISTENER 三者一致性。「報錯時要學會查看 Oracle 錯誤日誌裡面的信息,有時候報的錯誤並不是表面上的那樣,需要我們尋根問底才行。」
oradim.log、alert_SID.log、listener.log 是診斷啟動/連線問題的鐵三角,善用它們比盲目重裝快百倍。