Ubuntu 下 SQL*Plus 环境配置步骤
一 安装 Oracle Instant Client 与 SQL*Plus
- 准备安装包:从 Oracle 官网下载与系统架构匹配的 Instant Client 包,至少需要Basic与SQL*Plus(可选SDK)。常见版本如12.1、21.x。
- 安装转换工具与依赖:
sudo apt-get update
sudo apt-get install -y alien libaio1
- 将 RPM 转换为 DEB 并安装(示例为 64 位 12.1,按实际版本调整):
sudo alien -i oracle-instantclient12.1-basic-.x86_64.rpm
sudo alien -i oracle-instantclient12.1-sqlplus-.x86_64.rpm
如安装了 SDK:sudo alien -i oracle-instantclient12.1-devel-*.x86_64.rpm
- 验证安装:
sqlplus -v
若提示找不到命令,可尝试 sqlplus64(部分安装包提供)。
二 配置环境变量与库路径
- 设置环境变量(写入 ~/.bashrc 或 /etc/profile,按实际版本替换路径中的版本与 client 目录名,如12.1/client64或21/client64):
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
使配置生效:source ~/.bashrc(或 source /etc/profile)。
- 注册 Oracle 客户端库路径(解决“libsqlplus.so 找不到”等问题):
echo “$ORACLE_HOME/lib” | sudo tee /etc/ld.so.conf.d/oracle.conf
sudo ldconfig
- 如未安装异步 I/O 库会报错“libaio.so.1 找不到”,安装:
sudo apt-get install -y libaio1
三 配置 TNS 与服务名连接
- 创建网络配置目录并编辑 tnsnames.ora:
sudo mkdir -p $TNS_ADMIN
sudo nano $TNS_ADMIN/tnsnames.ora
- 示例条目(按实际主机、端口、服务名修改):
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.109)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
- 连接测试:
sqlplus system/YourPassword@TEST
或使用 EZConnect:
sqlplus system/YourPassword@//dbhost:1521/SID
四 提升 SQL*Plus 使用体验
- 安装 rlwrap 以支持方向键与历史:
sudo apt-get install -y rlwrap
使用:rlwrap sqlplus user/pass@//host:1521/service
建议加入别名(写入 ~/.bashrc):alias sqlplus=‘rlwrap sqlplus’。
- 设置默认编辑器(SQL> edit 调用 vim):
在 $ORACLE_HOME/sqlplus/admin/glogin.sql 中添加:DEFINE _EDITOR = vi
或在 ~/.bashrc 中设置:export EDITOR=vi 并 source 使其生效。
- 保存个人 SQLPlus 环境:在 SQLPlus 中执行 STORE SET $HOME/.sqlplusrc,下次用 @$HOME/.sqlplusrc 恢复。
五 常见问题排查
- 报错“libaio.so.1: cannot open shared object file”:安装 libaio1 后重试。
- 报错“sqlplus: error while loading shared libraries: libsqlplus.so …”:确认 $ORACLE_HOME/lib 已加入 /etc/ld.so.conf.d/oracle.conf 并执行 sudo ldconfig。
- 报错“libsqlplus.so: cannot open shared object file”或命令不存在:检查 ORACLE_HOME、PATH、LD_LIBRARY_PATH 是否指向正确的 client(64)/lib 目录;必要时使用 sqlplus64。
- 登录报错 ORA-01017:核对用户名/密码、服务名/端口、数据库是否允许远程连接。
- 中文乱码:在 ~/.bashrc 中设置 NLS_LANG,例如:export NLS_LANG=“SIMPLIFIED CHINESE_CHINA.UTF8”。