温馨提示×

centos环境下sqlplus网络配置

小樊
37
2026-01-02 03:50:29
栏目: 云计算

CentOS 环境下 sqlplus 网络配置

一 场景与准备

  • 区分两类场景:
    1. 本机仅安装 Oracle Instant Client + sqlplus(无数据库服务端);
    2. 本机已安装 Oracle 数据库服务端(自带 sqlplus)。
  • 客户端常用安装包(以 x86_64 为例):
    • oracle-instantclient-basicoracle-instantclient-sqlplus(版本建议与服务端匹配,如 19.x/21.x/12.2)。
    • 安装后客户端默认目录通常为:/usr/lib/oracle/<版本>/client64
  • 服务端网络文件默认目录:$ORACLE_HOME/network/admin(包含 listener.ora、tnsnames.ora、sqlnet.ora)。

二 客户端安装与网络配置

  • 安装 Instant Client(示例为 21.x):
    • 下载并安装 RPM:
      • oracle-instantclient-basic-21.x-x86_64.rpm
      • oracle-instantclient-sqlplus-21.x-x86_64.rpm
      • 命令:rpm -ivh oracle-instantclient-*.rpm
  • 配置动态库与解析:
    • 方式 A:写入系统库缓存
      • 编辑 /etc/ld.so.conf,追加:/usr/lib/oracle/21/client64/lib
      • 执行:ldconfig
    • 方式 B:设置环境变量
      • export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH
  • 环境变量(建议写入 /etc/profile.d/oracle.sh~/.bash_profile):
    • export ORACLE_HOME=/usr/lib/oracle/21/client64
    • export TNS_ADMIN=$ORACLE_HOME/network/admin
    • export PATH=$ORACLE_HOME/bin:$PATH
    • export NLS_LANG=AMERICAN_AMERICA.AL32UTF8(或 SIMPLIFIED CHINESE_CHINA.AL32UTF8
  • 创建网络配置目录与文件:
    • mkdir -p $TNS_ADMIN
    • 编辑 $TNS_ADMIN/tnsnames.ora,示例:
      ORCL =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver.example.com)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = orcl.example.com)
          )
        )
      
  • 连接测试:
    • 使用别名:sqlplus user/pass@ORCL
    • 直连模式:sqlplus user/pass@//dbserver.example.com:1521/orcl.example.com
    • 字符集:如出现中文乱码,设置 NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8 后重连。

三 仅客户端的最小可用配置清单

  • 已安装包:basic + sqlplus
  • 目录与文件:$ORACLE_HOME/network/admin/tnsnames.ora 配置正确别名。
  • 环境变量:ORACLE_HOME、TNS_ADMIN、LD_LIBRARY_PATH、PATH、NLS_LANG
  • 库加载:ldconfigLD_LIBRARY_PATH 生效。
  • 连接命令:优先用别名;若别名不通,改用直连 URL 验证网络与监听可达性。

四 服务端监听与注册要点

  • 启动监听与数据库:
    • lsnrctl start
    • sqlplus / as sysdbastartup
  • 检查监听状态:lsnrctl status(应看到监听端口 1521 与已注册服务)。
  • 动态注册失败或未注册服务时的处理:
    • alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=服务器IP)(PORT=1521))' scope=both;
    • alter system register;(强制向监听注册)
    • 再次 lsnrctl status 确认服务已出现。

五 连通性测试与常见错误

  • 基础连通性:
    • tnsping ORCL(验证别名解析与监听可达)
    • telnet dbserver 1521nc -vz dbserver 1521(验证端口连通)
  • 常见错误与处理:
    • ORA-12154:TNS 别名无法解析 → 检查 $TNS_ADMIN/tnsnames.ora 路径、别名拼写、文件权限。
    • ORA-12541:无监听 → 在服务器执行 lsnrctl start,确认监听端口 1521 在运行。
    • ORA-01017:用户名/密码错误 → 核对凭据;若含特殊字符,使用双引号包裹。
    • 库加载失败:执行 ldconfig $ORACLE_HOME/lib 或正确设置 LD_LIBRARY_PATH
  • 安全与加固(可选):在 $TNS_ADMIN/sqlnet.ora 启用加密(示例):
    SQLNET.ENCRYPTION_SERVER = required
    SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
    SQLNET.CRYPTO_CHECKSUM_SERVER = required
    
  • 权限最小化:
    • chmod 750 $ORACLE_HOME
    • chmod 600 $TNS_ADMIN/*

0