~/.bashrc
或/etc/profile
,添加以下變量(根據實際安裝路徑調整):export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 # 替換為實際ORACLE_HOME路徑
export ORACLE_SID=orcl # 替換為實際數據庫SID
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
執行source ~/.bashrc
使變量生效。監聽器配置文件默認位于$ORACLE_HOME/network/admin/
目錄下,使用文本編輯器(如vi
)打開:
sudo vi $ORACLE_HOME/network/admin/listener.ora
添加或修改以下內容(關鍵參數說明見注釋):
# 監聽器基本配置:定義監聽的協議、IP地址和端口
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) # 監聽所有網絡接口(生產環境建議指定具體IP)
)
)
# 可選:關聯SID與Oracle Home(若需監聽多個數據庫實例)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl) # 數據庫SID(需與實際一致)
(ORACLE_HOME = $ORACLE_HOME) # 指向Oracle安裝目錄
)
)
保存并退出編輯器。
若需通過服務名連接數據庫,需配置tnsnames.ora
文件(同樣位于$ORACLE_HOME/network/admin/
):
sudo vi $ORACLE_HOME/network/admin/tnsnames.ora
添加以下內容(示例):
# 定義數據庫服務名(別名),用于客戶端連接
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 替換為服務器實際IP
(CONNECT_DATA =
(SERVER = DEDICATED) # 連接模式(專用服務器)
(SERVICE_NAME = orcl) # 數據庫服務名(需與實際一致)
)
)
保存并退出。
使用lsnrctl
命令啟動監聽器:
lsnrctl start
若啟動成功,將顯示類似以下信息:
Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/ubuntu/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Services summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
通過以下命令檢查監聽器是否運行正常:
lsnrctl status
重點確認:
HOST
(如0.0.0.0
或具體IP);PORT
(如1521
);orcl
)且狀態為READY
。lsnrctl stop
lsnrctl reload
(修改listener.ora
后無需停機即可生效)tnsping
命令驗證服務名是否可達(如tnsping ORCL
)。若需將監聽器作為系統服務管理(開機自啟、狀態查看),可創建以下服務文件:
sudo vi /etc/systemd/system/oracle-listener.service
添加以下內容:
[Unit]
Description=Oracle Listener Service
After=network.target
[Service]
Type=forking
ExecStart=$ORACLE_HOME/bin/lsnrctl start
ExecStop=$ORACLE_HOME/bin/lsnrctl stop
ExecReload=$ORACLE_HOME/bin/lsnrctl reload
User=oracle
Group=oinstall
Restart=on-failure
[Install]
WantedBy=multi-user.target
執行以下命令啟用并啟動服務:
sudo systemctl daemon-reload
sudo systemctl start oracle-listener
sudo systemctl enable oracle-listener # 開機自啟
sudo systemctl status oracle-listener # 查看狀態
oracle
)對$ORACLE_HOME/network/admin/
目錄及文件有讀寫權限。sudo ufw allow 1521/tcp
HOST
設置為具體IP而非0.0.0.0
,并啟用SSL加密(修改PROTOCOL
為TCPS
)以提高安全性。