数据库客户端安装
本文档记录各数据库客户端在目标主机上的安装位置、依赖与验证方法
| 项目 | 说明 |
|---|---|
| 目标主机 | igohost01(Ubuntu 20.04.6 LTS,x86_64) |
| 安装数据盘 | /data |
| 安装包备份约定 | 各产品独立目录,例如 /data/oracle19c |
| 文档维护 | 每新增一种客户端,增加独立章节 |
1. Oracle 19c Instant Client
1.1 环境与选型
| 项 | 值 |
|---|---|
| 操作系统 | Ubuntu 20.04.6 LTS(Focal) |
| 架构 | x86_64 |
| 产品形态 | Instant Client 19.26(Basic + SQL*Plus) |
| 安装目录 | /data/oracle/instantclient_19_26 |
| 安装包备份 | /data/oracle19c |
| 环境脚本 | /data/oracle/oracle_env.sh |
| TNS 目录 | /data/oracle/instantclient_19_26/network/admin |
未选用完整 Client,Instant Client 体积小、满足常见连接与 sqlplus 运维需求。
1.2 目录与权限
/data 属主为 root,需用 sudo 创建目录并授权给操作用户(示例用户:igo):
sudo mkdir -p /data/oracle19c /data/oracle
sudo chown -R igo:igo /data/oracle19c /data/oracle
1.3 系统依赖
已确认需要:
libaio1(运行库)unzip(解压 zip 安装包)wget或curl(下载)
安装 unzip:
sudo apt-get install -y unzip
说明:本机 apt 源中未找到 libnsl2;当前环境 sqlplus 可正常启动,若日后出现 libnsl.so.1 缺失,再补装对应 NIS 库包。
1.4 下载安装包(并备份)
官方包(需接受 Oracle 许可 Cookie):
| 包 | 作用 | URL |
|---|---|---|
| Basic | 核心运行库(libclntsh 等),提供 OCI 连接能力,是 Instant Client 的基础包,几乎所有场景都要装 |
https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-basic-linux.x64-19.26.0.0.0dbru.zip |
| SQL*Plus | 命令行客户端工具 sqlplus,用于登录库、执行 SQL/脚本;依赖 Basic,需叠加安装 |
https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-sqlplus-linux.x64-19.26.0.0.0dbru.zip |
下载到备份目录(两个包都要下;仅 Basic 可连库但无 sqlplus,仅 SQL*Plus 无法单独运行):
cd /data/oracle19c
wget -c --tries=0 \
-O instantclient-basic-linux.x64-19.26.0.0.0dbru.zip \
"https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-basic-linux.x64-19.26.0.0.0dbru.zip"
wget -c --tries=0 \
-O instantclient-sqlplus-linux.x64-19.26.0.0.0dbru.zip \
"https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-sqlplus-linux.x64-19.26.0.0.0dbru.zip"
备份目录中应保留上述两个 zip,便于重装或复制到其他主机。
1.5 解压安装
cd /data/oracle
unzip -oq /data/oracle19c/instantclient-basic-linux.x64-19.26.0.0.0dbru.zip
unzip -oq /data/oracle19c/instantclient-sqlplus-linux.x64-19.26.0.0.0dbru.zip
解压后得到:/data/oracle/instantclient_19_26(内含 sqlplus、libclntsh.so* 等)。
1.6 环境变量
创建 /data/oracle/oracle_env.sh:
export ORACLE_HOME=/data/oracle/instantclient_19_26
export TNS_ADMIN=/data/oracle/instantclient_19_26/network/admin
export LD_LIBRARY_PATH=/data/oracle/instantclient_19_26${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export PATH=/data/oracle/instantclient_19_26${PATH:+:$PATH}
并创建 TNS 配置目录:
mkdir -p /data/oracle/instantclient_19_26/network/admin
当前用户持久化(示例:igo 的 ~/.bashrc):
# Oracle Instant Client 19c
[ -f /data/oracle/oracle_env.sh ] && . /data/oracle/oracle_env.sh
新开 shell 或执行 source /data/oracle/oracle_env.sh 后生效。
1.7 sqlnet.ora(本环境必须)
本机到目标库 1521 端口可达,但未配置时会出现:
ORA-12637: Packet receive failed
原因:SQL*Net 默认可能使用 TCP 紧急数据(OOB,Out-of-Band) 做取消/中断信号;途经防火墙、NAT、负载均衡等设备时,OOB 常被剥离或改写,导致收包失败。
本环境处理:在 $TNS_ADMIN/sqlnet.ora 关闭 OOB(本机连库必需):
cat > /data/oracle/instantclient_19_26/network/admin/sqlnet.ora <<'EOF'
DISABLE_OOB=ON
DIAG_ADR_ENABLED=OFF
SQLNET.AUTHENTICATION_SERVICES=(NONE)
EOF
| 参数 | 说明 |
|---|---|
DISABLE_OOB=ON |
禁用 OOB,避免 ORA-12637;本环境必须 |
DIAG_ADR_ENABLED=OFF |
关闭 ADR 诊断目录写入,减少无关日志 |
SQLNET.AUTHENTICATION_SERVICES=(NONE) |
使用用户名密码认证,不做 OS 外部认证 |
说明:这不是 Oracle 全局强制项,而是当前网络路径下的必需客户端配置;换到直连、无中间设备的环境后,有时可不设,但建议保留以降低同类故障。
1.8 验证
. /data/oracle/oracle_env.sh
sqlplus -V
预期输出类似:
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.26.0.0.0
连接数据库示例(需已配置上一节 sqlnet.ora):
echo "SELECT USER FROM dual;" | sqlplus -L -S user/password@//db_host:1521/service_name
如需本地服务名,将 tnsnames.ora 放到 $TNS_ADMIN(即 network/admin)下。
1.9 安装结果摘要
| 路径 | 说明 |
|---|---|
/data/oracle19c/*.zip |
安装包备份 |
/data/oracle/instantclient_19_26 |
客户端运行目录 |
/data/oracle/oracle_env.sh |
环境变量脚本 |
/data/oracle/instantclient_19_26/network/admin |
TNS / sqlnet 配置目录 |
/data/oracle/instantclient_19_26/network/admin/sqlnet.ora |
含 DISABLE_OOB=ON(本环境必须) |
连库查询(用 sqlplus 按明文账号连上 Oracle,查询指定表中 workipaddr 等于末尾 <work_ip> 的记录;需替换的参数为:<table_name>、
bash -c 'printf "%s\n" "SET PAGESIZE 200" "SET LINESIZE 300" "SELECT * FROM <table_name> WHERE workipaddr='\''$0'\'';" "EXIT" | sqlplus -L -S <username>/<password>@//<db_host>:1521/<service_name>' <work_ip>
2. 其他数据库客户端(预留)
后续 MySQL、PostgreSQL、SQL Server 客户端时:
- 安装包备份到
/data/<产品标识>/ - 软件安装到
/data/<产品>/或发行版默认路径