- 首页 >
- 问答 >
-
云计算 >
- centos里sqlplus网络配置要点
centos里sqlplus网络配置要点
小樊
32
2025-12-31 04:55:32
CentOS 上 sqlplus 网络配置要点
一 客户端安装与目录结构
- 仅连接远程库时,推荐安装 Oracle Instant Client(Basic + SQL*Plus)两个 RPM 包,选择与系统匹配的 x86_64 版本,避免 32/64 位混用导致“找不到 sqlplus”等问题。安装后库文件通常位于:/usr/lib/oracle/<版本>/client64/。在该目录下创建网络配置目录:/usr/lib/oracle/<版本>/client64/network/admin,用于放置 tnsnames.ora、sqlnet.ora。如使用 RPM 重定位安装,目录会随 relocate 路径变化,但应保持 $ORACLE_HOME/network/admin 的结构一致。
二 核心配置文件与关键参数
- 建议至少准备并理解以下三个文件(客户端通常只需前两个;服务器端三者皆需):
- sqlnet.ora:控制解析顺序与认证方式,例如:
NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME) 表示先查 tnsnames.ora,再按主机名解析;
SQLNET.AUTHENTICATION_SERVICES=(NTS) 等可按需设置。
- tnsnames.ora:定义网络服务名到“主机/端口/服务”的映射,示例:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)))
其中 HOST、PORT、SERVICE_NAME 为必填;SERVICE_NAME 可在数据库侧用 show parameter service_name 查询。
- listener.ora(服务器端):定义监听地址与端口,以及 SID/GLOBAL_DBNAME 映射,示例:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = ORCL)))
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))))
动态注册时,若监听未显示服务,可在数据库侧设置 local_listener 并手工注册:
alter system set local_listener=‘(ADDRESS=(PROTOCOL=TCP)(HOST=服务器IP)(PORT=1521))’ scope=both;
alter system register;。
三 环境变量与库路径
- 客户端常用变量(写入 /etc/profile 或 ~/.bashrc 并 source 生效):
- ORACLE_HOME:指向 Instant Client 根目录,如 /usr/lib/oracle/19.5/client64
- TNS_ADMIN:指向 $ORACLE_HOME/network/admin(显式指定配置目录)
- LD_LIBRARY_PATH:指向 $ORACLE_HOME/lib(确保能加载 OCI 库)
- PATH:包含 $ORACLE_HOME/bin
- NLS_LANG:建议设为 AMERICAN_AMERICA.AL32UTF8(避免客户端字符集与服务端不一致)
如使用较新 Instant Client,可能已自带可执行文件与库目录;如未自动识别库路径,可在 /etc/ld.so.conf 中加入 $ORACLE_HOME/lib 并执行 ldconfig。
四 防火墙与连通性测试
- 开放数据库监听端口(默认 1521):
- firewalld:firewall-cmd --add-port=1521/tcp --permanent && firewall-cmd --reload
- 或 nftables/iptables 放行 1521/tcp
- 连通性自检:
- 基本连通:nc -vz 数据库IP 1521 或 telnet 数据库IP 1521
- Oracle Net 解析与监听:tnsping ORCL(应返回 OK)
- 登录测试:sqlplus 用户名/密码@ORCL 或 sqlplus 用户名/密码@//数据库IP:1521/服务名
若 tnsping 失败,优先检查 HOST 是否可解析/可达、端口是否开放、tnsnames.ora 配置是否正确;若监听未注册服务,按上文设置 local_listener 并 alter system register。
五 常见坑与排查清单
- 架构不一致:在 64 位 CentOS 上误装 32 位 Instant Client 会导致“/bin/sqlplus: 没有那个文件或目录”或无法加载库,需统一为 x86_64。
- 解析顺序不当:sqlnet.ora 未包含 TNSNAMES 时,sqlplus 别名将无法解析;必要时显式设置 NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)。
- 监听未注册服务:RAC/多监听或自定义监听时,数据库可能未向监听注册,使用 alter system set local_listener=…; alter system register; 并查看 lsnrctl status 输出。
- 防火墙/安全组未放行:数据库服务器与客户端之间的 1521/tcp 必须双向可达,云环境需检查安全组规则。
- 主机名解析问题:若使用主机名连接,确保客户端能 ping 通该主机名,必要时在 /etc/hosts 添加解析记录。