在恢復lsnrctl配置前,需確保具備以下條件:
oracle);ORACLE_HOME指向Oracle安裝目錄,ORACLE_SID指向數據庫實例名),可通過echo $ORACLE_HOME和echo $ORACLE_SID驗證;sudo執行關鍵命令)。若之前備份過listener.ora文件(Oracle監聽器主配置文件),可直接將其復制回原位置覆蓋當前配置:
listener.ora通常位于$ORACLE_HOME/network/admin目錄下(如/u01/app/oracle/product/19c/network/admin/listener.ora);lsnrctl stop終止當前監聽器進程;cp命令將備份文件復制回原位置(例如備份文件在/home/oracle/listener.ora.bak,則執行sudo cp /home/oracle/listener.ora.bak $ORACLE_HOME/network/admin/listener.ora);lsnrctl start啟動監聽器;lsnrctl status檢查監聽器是否正常運行(需顯示“Listener is ready”等提示)。若未備份listener.ora文件,可刪除現有配置讓Oracle自動生成默認配置:
lsnrctl stop;mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora.old(避免直接刪除導致數據丟失);lsnrctl start,Oracle會根據默認模板重新生成listener.ora文件;lsnrctl status確認監聽器狀態,若仍無法啟動,需參考Oracle官方文檔調整默認配置。若記得listener.ora的原有配置內容,可直接用文本編輯器修改文件:
lsnrctl stop;vi或nano打開$ORACLE_HOME/network/admin/listener.ora(如sudo vi $ORACLE_HOME/network/admin/listener.ora);LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))));Esc鍵輸入:wq保存文件;lsnrctl start;lsnrctl status確認配置生效。lsnrctl status,需顯示監聽器名稱、地址、端口及已注冊的服務(如數據庫實例);$ORACLE_HOME/diag/tnslsnr/<主機名>/listener/trace/listener.log);ping命令測試客戶端與監聽器服務器的網絡連通性,確保端口(默認1521)未被防火墻阻擋(可通過sudo ufw allow 1521/tcp開放端口)。lsnrctl命令路徑已添加至系統PATH環境變量(如export PATH=$PATH:$ORACLE_HOME/bin);