在 CentOS 上配置 SQL*Plus 的推荐做法
一 准备与安装
- 选择安装方式:优先使用 Oracle Instant Client RPM,也可用 ZIP 包;若本机已安装 Oracle 数据库服务端,可直接使用自带的 sqlplus,无需再装客户端。
- 安装依赖(Instant Client 需要):
sudo yum install -y libaio libaio-devel
- RPM 安装示例(以 12.2 为例,两个包都要装):
sudo yum install -y oracle-instantclient12.2-basic-.x86_64.rpm
sudo yum install -y oracle-instantclient12.2-sqlplus-.x86_64.rpm
安装后客户端默认目录通常为:/usr/lib/oracle/12.2/client64。
- 如需 ZIP 安装:下载 Basic 与 SQL*Plus 两个 ZIP,解压到同一目录(如 /opt/oracle/instantclient_XX_X),后续通过环境变量使用。
二 环境变量与库路径
- RPM 安装的推荐配置(写入 ~/.bashrc 或 /etc/profile.d/oracle.sh):
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
使配置生效:source ~/.bashrc 或 source /etc/profile.d/oracle.sh。
- ZIP 安装的推荐配置(ORACLE_HOME 指向解压目录):
export ORACLE_HOME=/opt/oracle/instantclient_XX_X
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
- 若采用系统库缓存方式(RPM 也可用):在 /etc/ld.so.conf 末尾添加
/usr/lib/oracle/12.2/client64/lib
然后执行:sudo ldconfig。
三 配置网络连接
- 创建网络配置目录与文件:
sudo mkdir -p $ORACLE_HOME/network/admin
sudo vim $ORACLE_HOME/network/admin/tnsnames.ora
- tnsnames.ora 示例:
MYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = your_service_name)
)
)
- 说明:如本机是 Oracle 服务器,监听与 tnsnames.ora 通常在 $ORACLE_HOME/network/admin 已存在;仅客户端需自建。
四 验证与连接测试
- 版本检查:
sqlplus -v
- 本地“空登录”测试(不连库,验证 sqlplus 可用):
sqlplus /nolog
- 连接测试(三种常用写法):
- 使用 TNS 别名:sqlplus username/password@MYDB
- 使用 EZConnect:sqlplus username/password@//hostname:1521/service_name
- 使用 SID(部分库仍支持):sqlplus username/password@hostname:1521/SID
- 网络连通与监听检查:
tnsping MYDB
lsnrctl status(服务器端)
五 常见问题与排查
- 命令未找到:检查 PATH 是否包含 $ORACLE_HOME/bin;RPM 安装路径一般为 /usr/lib/oracle/12.2/client64/bin。
- 库加载失败:确认 LD_LIBRARY_PATH 包含 $ORACLE_HOME/lib,或已执行 ldconfig 刷新缓存。
- TNS 无法解析:核对 tnsnames.ora 中 HOST/PORT/SERVICE_NAME 与服务器一致,且目录由 TNS_ADMIN 正确指向。
- 监听问题:服务器端执行 lsnrctl status 查看监听端口(默认 1521)与服务映射。
- 字符集:如出现中文乱码,可设置 NLS_LANG,例如:
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(或 AMERICAN_CHINA.ZHS16GBK)。