温馨提示×

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_listeneralter 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 添加解析记录。

0