Oracle数据库需要稳定的网络环境,首先需配置CentOS的网络接口。
静态IP配置(推荐生产环境使用):
编辑网络配置文件(路径:/etc/sysconfig/network-scripts/ifcfg-<网卡名>,如ifcfg-eth0),添加以下内容:
DEVICE=eth0
BOOTPROTO=static # 静态IP
IPADDR=192.168.1.100 # 数据库服务器IP
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 网关
DNS1=8.8.8.8 # 首选DNS
ONBOOT=yes # 开机自启
保存后重启网络服务:systemctl restart network。
动态IP配置(仅测试环境使用):
将BOOTPROTO改为dhcp,删除IPADDR、NETMASK、GATEWAY等参数,重启网络服务即可。
使用ping命令测试网络是否正常:
ping 8.8.8.8 # 测试外网连通性
ping <数据库服务器IP> # 测试本地IP连通性
若无法ping通,需检查网卡驱动、物理连接或防火墙设置。
SELinux可能阻止Oracle监听端口,需临时关闭并永久禁用:
# 临时关闭(立即生效)
setenforce 0
# 永久关闭(修改配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Oracle对内核参数有特定要求,编辑/etc/sysctl.conf文件,添加以下内容:
kernel.shmmax = 2147483648 # 共享内存最大值(建议为物理内存的一半,单位字节)
kernel.shmmni = 4096 # 共享内存段最大数量
kernel.shmall = 2097152 # 共享内存总页数
kernel.sem = 250 32000 100 128 # 信号量参数
fs.file-max = 65536 # 最大文件句柄数
net.ipv4.ip_local_port_range = 1024 65000 # 本地端口范围
net.core.rmem_default=262144 # 接收缓冲区默认大小
net.core.rmem_max=262144 # 接收缓冲区最大大小
net.core.wmem_default=262144 # 发送缓冲区默认大小
net.core.wmem_max=262144 # 发送缓冲区最大大小
使配置生效:sysctl -p。
监听器负责接收客户端的连接请求,需通过netca工具或手动配置listener.ora文件。
# 切换至oracle用户
su - oracle
# 启动netca
netca
按照向导选择“监听程序配置”→“添加监听程序”,设置监听名称(默认LISTENER)、协议(TCP)、主机(服务器IP或localhost)、端口(默认1521),完成配置后自动启动监听器。
监听器配置文件路径:$ORACLE_HOME/network/admin/listener.ora(若目录不存在需创建)。
示例内容(静态注册):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 监听地址
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl) # 数据库SID(需与数据库实例一致)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1) # Oracle安装目录
(PROGRAM = extproc) # 外部过程程序(可选)
)
)
保存后重启监听器:
lsnrctl stop # 停止监听器
lsnrctl start # 启动监听器
lsnrctl status # 检查状态(需显示“RUNNING”)
tnsnames.ora文件用于客户端连接数据库,路径:$ORACLE_HOME/network/admin/tnsnames.ora。
示例内容:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 监听地址(需与listener.ora一致)
(CONNECT_DATA =
(SERVER = DEDICATED) # 连接方式(专用服务器)
(SERVICE_NAME = orcl) # 数据库服务名(需与数据库实例一致)
)
)
测试连接:
tnsping ORCL # 测试tns名称解析
sqlplus username/password@ORCL # 测试数据库连接
需开放Oracle监听端口(默认1521),允许客户端访问:
# 开放1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
# 重启防火墙
firewall-cmd --reload
若使用iptables,命令如下:
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
service iptables save
listener.ora文件语法(如括号匹配)、端口是否被占用(netstat -tulnp | grep 1521)。tnsnames.ora中的主机名、端口、服务名与listener.ora一致;检查防火墙是否放行端口;使用lsnrctl status查看监听器是否注册了数据库实例。/etc/hosts文件中包含服务器IP与主机名的映射(如192.168.1.100 orcl)。