CentOS环境下Oracle数据库网络配置指南
编辑网络接口配置文件(路径:/etc/sysconfig/network-scripts/ifcfg-<interface_name>,如ifcfg-eth0),设置静态IP或DHCP:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100 # 数据库服务器IP
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes # 开机自启
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
保存后重启网络服务:
sudo systemctl restart network # CentOS 7及以下
# 或(CentOS 8及以上,若使用NetworkManager)
sudo nmcli connection down <connection_name> && sudo nmcli connection up <connection_name>
SELinux可能阻止Oracle网络服务运行,需禁用:
sudo setenforce 0
sudo sed -i 's/selinux=enforcing/selinux=disabled/g' /etc/selinux/config
重启系统使配置生效。
your_host_name为易识别的名称,如oracle-db):sudo hostnamectl set-hostname your_host_name
/etc/hosts),添加IP与主机名映射:192.168.1.100 your_host_name
确保客户端主机的hosts文件也包含此映射(若跨服务器连接)。
ping 192.168.1.100 # 替换为数据库服务器IP
nslookup your_host_name
确保无丢包、解析正确。
监听器负责接收客户端连接请求,需通过netca工具或手动编辑listener.ora文件配置。
以Oracle用户身份运行:
sudo -u oracle netca
按向导操作:
LISTENER);your_host_name或IP;端口:1521,默认);文件路径:$ORACLE_HOME/network/admin/listener.ora(若目录不存在,需创建)。
示例配置(静态IP):
LISTENER = (
DESCRIPTION_LIST = (
DESCRIPTION = (
ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(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安装目录
)
)
)
保存后,通过以下命令管理监听器:
$ORACLE_HOME/bin/lsnrctl start
$ORACLE_HOME/bin/lsnrctl status # 确认监听器运行正常,且包含目标SID
$ORACLE_HOME/bin/lsnrctl reload
$ORACLE_HOME/bin/lsnrctl stop
tnsnames.ora文件用于定义数据库连接的便捷名称(别名),路径:$ORACLE_HOME/network/admin/tnsnames.ora。
添加数据库连接配置(替换ORCL为自定义别名,your_host_name为服务器IP/主机名,your_service_name为数据库服务名):
ORCL = (
DESCRIPTION = (
ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)
)
CONNECT_DATA = (
SERVER = DEDICATED # 连接类型(专用服务器,适用于大多数场景)
SERVICE_NAME = your_service_name # 数据库服务名(可通过监听器状态查看)
)
)
示例(连接本地数据库orcl):
ORCL_LOCAL = (
DESCRIPTION = (
ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)
)
CONNECT_DATA = (
SERVER = DEDICATED
SERVICE_NAME = orcl
)
)
使用sqlplus命令测试(替换username、password为数据库账号信息):
sqlplus username/password@ORCL
若提示“Connected to Oracle Database”,则配置成功。
Oracle对系统内核参数有特定要求,需修改/etc/sysctl.conf文件:
sudo vi /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 # 发送缓冲区最大值
保存后使配置生效:
sudo sysctl -p
编辑Oracle用户的~/.bash_profile文件(或/etc/profile全局配置),添加Oracle环境变量:
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 # Oracle安装目录
export ORACLE_SID=orcl # 数据库SID(需与监听器配置一致)
export PATH=$ORACLE_HOME/bin:$PATH # 将Oracle命令加入PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH # 库文件路径
保存后使配置生效:
source ~/.bash_profile
sudo firewall-cmd --permanent --add-port=1521/tcp
sudo firewall-cmd --reload
/etc/hosts文件包含数据库服务器的IP与主机名映射,且防火墙允许访问1521端口。listener.ora和tnsnames.ora文件,避免配置丢失。