centos sqlplus网络配置注意事项
小樊
41
2025-12-29 06:16:22
CentOS 上 SQL*Plus 网络配置注意事项
客户端环境与解析
- 安装匹配的 Oracle Instant Client(Basic/SQL*Plus 包),并将目录加入 PATH,设置 LD_LIBRARY_PATH;建议显式设置 TNS_ADMIN 指向
…/network/admin,便于集中管理配置。
- 客户端解析优先顺序:先检查 TNS_ADMIN/tnsnames.ora,再依赖 Easy Connect 串;确保
tnsnames.ora 中 HOST/PORT/SERVICE_NAME 正确。
- 连接串两种常用写法:
- Easy Connect:
sqlplus user/pass@192.0.2.10:1521/service_name
- TNS 别名:
sqlplus user/pass@ORCL_ALIAS
- 常见客户端报错速查:
sqlplus: command not found → 客户端未装或 PATH/LD_LIBRARY_PATH 未设置
ORA-12154 → tnsnames.ora 不存在或别名未定义/路径不对
ORA-12545 → HOST/PORT/SERVICE_NAME 任一错误,或目标主机不可达
服务器端监听与服务
- 监听配置
listener.ora 中的 HOST 建议使用服务器实际 IP 或 0.0.0.0(允许所有地址),端口通常为 1521;变更后用 lsnrctl stop && lsnrctl start 使生效。
- 确认监听已启动并注册服务:
lsnrctl status,检查服务名与实例映射是否正确。
- 确认数据库实例运行:
ps -ef | grep pmon;未运行可由具有 SYSDBA 权限的账户登录本机执行 sqlplus / as sysdba 后 startup。
- 若仅本机可连、远程不通,优先复查 listener.ora 的 HOST 配置 与实例是否已注册到监听。
防火墙与 SELinux
- firewalld:放行数据库端口(默认 1521/tcp)并持久化
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
- 如使用 iptables:
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT 并保存规则。
- SELinux:
- 临时宽松用于排查:
setenforce 0
- 更优做法是为 Oracle 端口放行布尔值:
setsebool -P oracle_db_port_t 1
- 云环境需同步检查 安全组/NACL 是否放行 1521/tcp。
连通性测试与超时排查
- 分层验证:
- 网络层:
ping <DB_IP>(ICMP 可达性)
- 端口层:
telnet <DB_IP> 1521 或 nc -zv <DB_IP> 1521(端口开放)
- 监听层:
lsnrctl status(服务注册与端口)
- 解析层:
tnsping ORCL_ALIAS(TNS 解析是否正常)
- 连接超时或间歇性失败时:
- 在客户端
sqlnet.ora 适度增大 SQLNET.EXPIRE_TIME(分钟)与 SQLNET.RECV_TIMEOUT,避免长时间空闲断连或接收等待过久。
- 用
strace -T -t -o sqlplus.log sqlplus … 定位 DNS 解析、连接建立等耗时环节;检查 /etc/resolv.conf 与 NTP 时间同步。
- 服务器端查看监听与数据库日志(
$ORACLE_HOME/log 下相关日志)获取更详细错误。
名称解析与主机配置
- 正确设置 /etc/hosts:确保
IP <-> 主机名 映射唯一且准确,避免解析到错误主机。
- 合理设置 主机名:
hostnamectl set-hostname your_host_name,与 listener.ora/tnsnames.ora 中 HOST 保持一致或可解析。
- 避免 DNS 误配 导致解析慢或失败;必要时在
/etc/resolv.conf 中调整 nameserver 顺序或改用 hosts 直连。