在開始配置前,需確認以下信息:
192.168.1.100
)、監聽端口(默認1521
)、數據庫實例SID(如orcl
)或全局數據庫名(如orcl.example.com
);$ORACLE_HOME/network/admin
目錄有讀寫權限;sqlplus / as sysdba
→ startup
)。Oracle網絡依賴穩定的網絡接口配置,需將Linux服務器設置為靜態IP(避免DHCP導致IP變動影響連接)。
使用ip addr
或ifconfig
命令查看可用接口(如eth0
、ens33
):
ip addr show
根據Linux發行版選擇對應文件:
/etc/sysconfig/network-scripts/ifcfg-eth0
(eth0
為接口名);/etc/network/interfaces
。DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=static # 靜態IP
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes # 開機自啟
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
# CentOS/RHEL 7+
sudo systemctl restart network
# Debian/Ubuntu
sudo systemctl restart networking
ip addr show eth0 # 確認IP已生效
ping -c 4 192.168.1.100 # 測試自身連通性
監聽器負責接收客戶端連接請求并轉發至數據庫實例。
cd $ORACLE_HOME/network/admin
listener.ora
文件使用文本編輯器(如vi
)修改或創建listener.ora
,添加以下內容:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 監聽IP和端口
# 可選:添加IPC協議(用于本地連接)
# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
# 可選:定義監聽的數據庫實例(SID)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl) # 數據庫實例SID
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1) # Oracle安裝路徑
)
)
lsnrctl stop # 停止監聽器(若已運行)
lsnrctl start # 啟動監聽器
lsnrctl status
輸出應包含:
LISTENER
)、狀態(RUNNING
);TCP:192.168.1.100:1521
);orcl.example.com
)。tnsnames.ora
文件用于將客戶端易記的服務名映射至服務器的監聽地址和數據庫服務。
tnsnames.ora
文件路徑:$ORACLE_HOME/network/admin/tnsnames.ora
。
示例(連接至遠程數據庫):
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 監聽器地址
(CONNECT_DATA =
(SERVER = DEDICATED) # 連接模式(專用服務器)
(SERVICE_NAME = orcl.example.com) # 數據庫全局服務名(需與監聽器注冊的一致)
)
)
示例(連接至本地數據庫,使用SID):
ORCL_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl) # 數據庫實例SID
)
)
使用sqlplus
命令測試:
sqlplus username/password@ORCL # 使用服務名連接
若配置正確,將進入Oracle命令行界面。
為簡化連接字符串,可通過以下方式優化名稱解析:
/etc/hosts
文件將服務器IP與主機名綁定(適用于客戶端與服務器在同一網絡):
sudo vi /etc/hosts
添加:
192.168.1.100 orcl-server orcl.example.com
之后可使用sqlplus username/password@orcl-server
連接。
sqlnet.ora
文件路徑:$ORACLE_HOME/network/admin/sqlnet.ora
。
設置名稱解析順序(優先使用TNSNAMES
,即本地tnsnames.ora
文件):
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
其中EZCONNECT
允許使用host:port/service_name
格式連接(如sqlplus username/password@192.168.1.100:1521/orcl
)。
確保防火墻允許Oracle監聽端口(默認1521)通過:
iptables
(舊版Linux)sudo iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
sudo service iptables save # 保存規則(CentOS 6)
firewalld
(新版Linux,如CentOS 7+)sudo firewall-cmd --permanent --add-port=1521/tcp
sudo firewall-cmd --reload
若SELinux處于Enforcing
模式,需允許Oracle網絡訪問:
sudo setsebool -P oracle_net_tcp_listen=1
listener.ora
文件語法(如括號匹配)、端口是否被占用(netstat -tulnp | grep 1521
);tnsnames.ora
中的主機名/IP、端口、服務名與服務器一致;檢查防火墻是否放行端口;sqlplus / as sysdba
→ startup
),且LOCAL_LISTENER
參數設置正確(show parameter local_listener
)。通過以上步驟,可完成Linux環境下Oracle數據庫的網絡配置,實現客戶端與服務器的安全、穩定連接。