简介Oracle Database 19c 客户端安装包面向需要在 Oracle Solaris x86 32 位环境中连接和管理数据库的开发人员与运维人员解决在 Unix 变体平台上部署 Oracle 客户端、配置连接环境及使用开发工具的问题。压缩包共 14671 个文件约 807.92MB以 htm 帮助文档、msb 消息文件、jar 组件包、sql 脚本、xml 配置、so 动态库及 sh 安装脚本为主涵盖 env.ora 环境配置、runInstaller 安装入口、root.sh 后置脚本、sqldeveloper 开发工具、oracore 核心库、ldap 目录服务、olap 分析组件、utl 工具库与 inventory 安装清单等模块。已有 239 人学习下载。读者可据此完成客户端安装与 ORACLE_HOME、TNS_ADMIN 等变量定制借助 SQL Developer 编写调试 SQL 与 PL/SQL并通过 LDAP 认证、OLAP 分析及 UTL 工具库支撑企业级数据管理与排错目录结构完整适合中高级数据库从业者参考。1. 拿到 SOLARIS.X32-195000-client-home.zip 先别急着解压它到底是什么如果你在 Oracle 官方下载页翻到过SOLARIS.X32-195000-client-home.zip这个包大概率会愣一下名字里带 SOLARIS又带 X32还带 client-home跟平时在 Windows 上装的 Oracle Database 19c 完全不是一个路数。先说结论——这是 Oracle Database 19c 面向 Solaris x86-32 平台的客户端 home 压缩包不是数据库服务端安装介质也不是能直接双击 setup.exe 跑起来的东西。它解决的是「我有一台 Solaris x86 机器需要装一套只跑客户端工具的 Oracle Home」这个场景比如你要在上面跑 SQL*Plus、跑 exp/imp、跑 OCI 应用但不想装完整实例。很多人第一次接触会把它和LINUX.X64_193000_db_home.zip搞混以为解压完就有runInstaller能建库。实际上 client-home 包里只有客户端组件没有 DBMS 内核也没有 DBCA。适合谁适合维护 Solaris 老系统、需要跟远端 19c 实例通信的 DBA或者做 Oracle EBS、Oracle ERP 这类套件时需要在应用层装轻量客户端的工程师。不适合谁想在本机建库练手的新手直接去下 Linux x86-64 的 db_home 包别在这个包上浪费时间。2. 拆包看结构client-home 里到底装了什么、缺了什么2.1 解压后先认目录别被 install/ 骗了拿到 zip 之后我一般先在一个临时目录解压不直接往目标 ORACLE_HOME 里扔。命令很简单# 建临时目录避免污染目标路径 mkdir -p /tmp/ora19c_client_inspect cd /tmp/ora19c_client_inspect # 解压注意 unzip 对大小写敏感Solaris 上建议用 -X 保留权限 unzip -q /path/to/SOLARIS.X32-195000-client-home.zip # 看顶层结构 ls -1解压完你会看到install/、oui/、bin/、lib/、network/、rdbms/这些目录。注意rdbms/里只有客户端相关的库和 admin 脚本没有rdbms/admin/catalog.sql这类建库脚本。bin/下有sqlplus、tnsping、exp、imp、sqlldr但没有dbca、dbstart、orapwd。这就是判断它是客户端包最直接的方法。install/目录下有oraparam.ini和unixmacros之类的响应文件模板但别指望直接跑runInstaller就能一路下一步——Solaris 上的 OUI 对内核参数、补丁级别、X11 转发都有要求后面避坑章节会细说。2.2 为什么是 X32 而不是 X64选型理由和兼容边界标题里的X32指的是 Solaris x86 32 位。Oracle 19c 在 Solaris 上同时提供 x86-64 和 x86-32 的客户端包服务端只有 x86-64。为什么还要留 32 位客户端因为很多老应用是 32 位编译的比如某些 Oracle EBS 的 Forms 进程、某些第三方 OCI 程序它们只能加载 32 位的libclntsh.so。如果你强行装 64 位客户端这些程序启动时会报wrong ELF class: ELFCLASS64这就是选 32 位的唯一理由。但边界也很清楚32 位客户端连 19c 服务端没问题协议是兼容的但单个进程能用的内存受限跑大批量数据导出时容易 ORA-04030。我一般会建议如果应用能重编成 64 位优先用 64 位客户端实在动不了的老系统才用这个 X32 包。2.3 版本号 195000 的含义与补丁基线195000对应的是 19.5 这个 RU 基线也就是 2019 年 10 月左右的补丁集。它不是 19.0.0.0 的初始版已经包含了前几个 RU 的修复。这意味着你装完之后opatch lspatches应该能看到一组补丁号。如果你后续要打更高的 RU比如 19.20需要先确认这个 client-home 是否支持直接 opatch apply——客户端 home 的补丁策略和服务端不完全一样有些 RU 只发服务端客户端要单独下。常见做法是装完先跑$ORACLE_HOME/OPatch/opatch lsinventory -detail把当前补丁基线记下来再决定要不要往上打。别一上来就追最新 RU客户端稳定比新特性重要。3. 在 Solaris 上落地响应文件安装与网络配置3.1 准备响应文件别用图形界面硬扛Solaris 上跑 OUI 图形界面是件痛苦的事X11 转发慢、字体缺失、Java 版本冲突随便一个都能让你卡半天。我一般直接用响应文件静默安装。先复制模板# 进入解压目录的 response 目录 cd /tmp/ora19c_client_inspect/response # 复制客户端安装模板 cp client_install.rsp client_install_custom.rsp然后编辑client_install_custom.rsp关键参数如下# 安装类型客户端 oracle.install.client.installTypeAdministrator # ORACLE_HOME 路径必须是绝对路径且目录为空 ORACLE_HOME/u01/app/oracle/product/19.0.0/client_1 # ORACLE_BASE ORACLE_BASE/u01/app/oracle # 安装用户所属组Solaris 上通常是 dba UNIX_GROUP_NAMEdba # 是否创建 starter 数据库客户端包必须选 false oracle.install.client.starterdb.typefalse # 语言按需保留 oracle.install.client.installLanguagesen参数说明installType选 Administrator 会装全套客户端工具包括 SQL*Plus、网络工具、ODBC如果只想要最小集可以选 InstantClient但那个包不在这里是单独的 zip。ORACLE_HOME目录必须提前建好并授权给 oracle 用户OUI 不会帮你创建父目录。3.2 静默安装命令与日志排查响应文件改好后用runInstaller带-silent和-responseFile执行# 切到 oracle 用户设置好环境变量 export DISPLAY # 清空强制静默 cd /tmp/ora19c_client_inspect ./runInstaller -silent -responseFile /tmp/ora19c_client_inspect/response/client_install_custom.rsp -waitforcompletion-waitforcompletion让命令阻塞到安装结束方便脚本化。安装日志在$ORACLE_HOME/cfgtoollogs/oui/下如果失败先看installActions*.log里面会明确写哪一步校验没过。Solaris 上最常见的失败是Checking operating system requirements不过因为 OUI 会检查/etc/release里的 Solaris 版本和内核补丁缺补丁就直接退出。3.3 配置 tnsnames.ora 和 sqlnet.ora装完客户端第一件事是配网络。$ORACLE_HOME/network/admin/下默认没有tnsnames.ora需要自己建# tnsnames.ora ORCL19C (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 10.0.0.20)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl19c) ) )# sqlnet.ora指定解析顺序 NAMES.DIRECTORY_PATH (TNSNAMES, EZCONNECT)配完用tnsping ORCL19C验证返回OK说明监听可达。如果报TNS-03505: Failed to resolve name先检查TNS_ADMIN环境变量是否指向了正确的 admin 目录别让客户端去读服务端的配置。4. 避坑与排查Solaris 客户端安装的五个血泪经验4.1 现象runInstaller 报Checking swap space: failed原因OUI 要求 swap 至少 500MBSolaris 默认 swap 可能不够或者/tmp空间不足导致临时文件写不进去。解决先用swap -l看当前 swap不够就临时加一个 swap 文件mkfile 1g /swapfile swap -a /swapfile装完再决定是否持久化。同时确认/tmp有至少 1GB 空闲。4.2 现象sqlplus 启动报ld.so.1: sqlplus: fatal: libclntsh.so.19.1: open failed原因LD_LIBRARY_PATH没包含$ORACLE_HOME/lib或者包含了但顺序不对被系统里其他 Oracle 版本的库抢先加载。解决在 oracle 用户的 profile 里显式设置LD_LIBRARY_PATH$ORACLE_HOME/lib:/usr/lib并且确保登录时没有其他 Oracle 环境变量残留。用ldd $ORACLE_HOME/bin/sqlplus可以看它到底在找哪个路径的库。4.3 现象连接远端 19c 报ORA-28040: No matching authentication protocol原因客户端和服务端的SQLNET.ALLOWED_LOGON_VERSION不匹配。19c 服务端默认要求 12 以上但这个 19.5 客户端如果 sqlnet.ora 里没配可能走老协议。解决在客户端的sqlnet.ora里加SQLNET.ALLOWED_LOGON_VERSION_CLIENT12和SQLNET.ALLOWED_LOGON_VERSION_SERVER12重启客户端进程。注意这是客户端侧配置不用动服务端。4.4 现象静默安装到 80% 卡住日志停在Copying files原因Solaris 上文件系统权限或磁盘 inode 耗尽。/u01如果用的是 UFS默认 inode 可能不够。解决df -i /u01看 inode 使用率超过 90% 就换 ZFS 或者清理小文件。另外确认 oracle 用户对ORACLE_HOME有写权限别用 root 建目录后忘了 chown。4.5 现象装完 opatch 报OPatch cannot find a valid oraInst.loc原因/var/opt/oracle/oraInst.loc不存在或指向了错误的 inventory 目录。解决手动创建该文件内容为inventory_loc/u01/app/oraInventory和inst_groupdba然后重新跑opatch lsinventory。Solaris 上这个文件路径和 Linux 不同Linux 在/etc/oraInst.loc别搞混。5. 进阶用这个客户端跑 SQLcl 和 Python 连接以及验证清单装完客户端只是开始真正让它干活才是目的。19c 客户端 home 里其实带了 SQLcl 的依赖但 SQLcl 是单独发的 zip你可以把 SQLcl 解压到$ORACLE_HOME/sqlcl下然后用同一个tnsnames.ora连接。命令是$ORACLE_HOME/sqlcl/bin/sql -mypath它比 SQL*Plus 多了格式化输出和脚本能力跑日常查询更顺手。Python 连接的话cx_Oracle或者oracledb模块需要libclntsh.so。在 Solaris 上装oracledb的 thin 模式不需要客户端库但 thick 模式必须指定lib_dirimport oracledb # thick 模式指向 19c 客户端 home 的 lib 目录 oracledb.init_oracle_client(lib_dir/u01/app/oracle/product/19.0.0/client_1/lib) # 用 tnsnames 里的别名连接 conn oracledb.connect(userscott, passwordtiger, dsnORCL19C) cur conn.cursor() cur.execute(select sysdate from dual) print(cur.fetchone()) cur.close() conn.close()参数说明lib_dir必须指向包含libclntsh.so的目录不是bin。如果报DPI-1047说明架构不匹配——你装的是 32 位客户端但 Python 是 64 位的这时候要么换 64 位客户端要么用 thin 模式绕开。验证清单我一般会走一遍tnsping通、sqlplus -v显示 19.5、opatch lspatches有补丁号、ldd sqlplus没有 not found、Python thick 模式能连。这五步过了这个客户端 home 才算真正可用。从那以后我每次装完客户端都会先跑一遍ldd和tnsping再动应用配置省得后面被库路径和协议问题来回折腾。希望帮到你。本文还有配套的精品资源点击获取