在开始配置前,需确认以下信息:
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数据库的网络配置,实现客户端与服务器的安全、稳定连接。