Mac(M4 Pro / Apple Silicon)使用 Navicat Premium 17.2.5 连接 Oracle:安装 Instant Client 全流程
适用场景:
- Mac 芯片:本机M4pro(Apple Silicon / arm64)
- Navicat:Navicat Premium 17.2.5
- Oracle:通过 OCI / Instant Client 连接
1. 确认 Mac 芯片架构(可选)
打开终端执行:
bash
uname -m
- 输出
arm64:Apple Silicon(M1/M2/M3/M4)
2. 安装 Rosetta(强烈推荐)
因为你可能会选择 Intel x86 版本的 Instant Client(兼容性最稳),因此需要 Rosetta:
bash
softwareupdate --install-rosetta --agree-to-license
3. 下载 Oracle Instant Client(Intel x86 版)
打开 Oracle 官方下载页:
text
https://www.oracle.com/database/technologies/instant-client/downloads.html
选择:
- Instant Client for macOS (Intel x86)
下载这两个包(DMG):
- Basic (dmg)
- SDK (dmg)(建议安装,兼容性更好)
下载后的文件通常类似:
instantclient-basic-macos.dmginstantclient-sdk-macos.dmg
4. 安装 Instant Client(拖拽/复制到固定目录)
4.1 创建安装目录(推荐放在用户目录)
例如放到:
text
/Users/你的目录
/Users/***/software/Java/oracle/
你可以先在 Finder 创建好该目录。
4.2 安装 Basic(必须)
- 双击打开
instantclient-basic-macos.dmg - 会出现一个挂载盘,例如
instantclient-basic-macos.x64-19.16... - 里面能看到大量
.dylib文件(如libclntsh.dylib、libnnz19.dylib、libocci.dylib) - 将该挂载盘里的所有内容复制到目标目录,例如:
text
/Users/***/software/Java/oracle/instantclient_19_16/
⚠️ 注意:最终目录里必须能看到 libclntsh.dylib,否则说明还没安装成功。
4.3 安装 SDK(建议)
- 双击打开
instantclient-sdk-macos.dmg - 将里面的内容复制到同一个目录:
text
/Users/***/software/Java/oracle/instantclient_19_16/
当系统提示"文件已存在,是否替换"时:
- 勾选 全部应用
- 选择 替换
4.4 验证是否安装成功
进入目标目录,确认存在:
libclntsh.dyliblibclntsh.dylib.19.1libclntshcore.dylib.19.1libnnz19.dyliblibocci.dylib.19.1
5. 配置 Oracle 环境变量(zsh)
编辑 ~/.zshrc(如果你是 bash 则是 ~/.bash_profile):
bash
nano ~/.zshrc
在文件末尾追加(路径换成你的实际目录):
bash
# Oracle Instant Client
export ORACLE_HOME=/Users/***/software/Java/oracle/instantclient_19_16
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
使其生效:
bash
source ~/.zshrc
验证:
bash
echo $ORACLE_HOME
ls "$ORACLE_HOME" | grep clntsh
6.(可选)修复 libclntsh.dylib 软链接
有些环境/程序对软链接更敏感,可以强制重建:
bash
cd "$ORACLE_HOME"
rm -f libclntsh.dylib
ln -s libclntsh.dylib.19.1 libclntsh.dylib
7. 让 Navicat 使用 Rosetta 打开(关键)
因为你安装的是 Intel x86 版本 Instant Client,Navicat 必须运行在 Rosetta 模式,否则架构不一致加载失败。
步骤:
- Finder → 应用程序 → 找到 Navicat Premium
- 右键 → 显示简介
- 勾选 ✅ 使用 Rosetta 打开
- Cmd + Q 完全退出 Navicat
- 重新打开 Navicat
8. 在 Navicat 配置 Oracle 连接
Navicat 里填:
- 主机:``
- 端口:
1521 - 选择:(Service Name)
- 服务名称:``
- 用户名:``
- 密码:``
8.1 避免 ORA-01005(密码为空)
如果出现:
ORA-01005: null password given; logon denied
解决方法:
- 先取消勾选 保存密码
- 手动重新输入密码
- 如果依然出现,去 钥匙串访问(Keychain Access) 删除 Navicat 相关条目
9. 解决 ORA-24454(client host name is not set)
在 macOS 上 Oracle 可能报:
ORA-24454: client host name is not set
原因:Oracle 客户端获取不到本机 HostName,或 .local 解析问题。
9.1 设置系统 HostName
bash
sudo scutil --set HostName TylerMacPro
sudo scutil --set LocalHostName TylerMacPro
sudo scutil --set ComputerName TylerMacPro
9.2 修改 /etc/hosts(关键)
bash
sudo nano /etc/hosts
在末尾添加两行:
text
127.0.0.1 TylerMacPro
127.0.0.1 TylerMacPro.local
bash
保存并退出:
Ctrl + O → 回车
Ctrl + X
保存退出。
9.3 刷新 DNS 缓存
bash
dscacheutil -flushcache
sudo killall -HUP mDNSResponder
9.4 重启 Navicat 再测试连接
- 重新打开 → 测试连接
10. 最终验证:连接成功
当左侧能看到大量 Schema(如 CHENGMIN、SUPCONLMS_TEST 等)时,说明已经连接成功。
常见问题汇总(FAQ)
Q1:Navicat 仍提示"未加载 Oracle 库"
- 说明 Instant Client 没装对(目录里没有
libclntsh.dylib) - 或 Navicat 没用 Rosetta 打开(Intel 库无法被 arm 进程加载)
Q2:ORA-01005(null password)
- Navicat 没从钥匙串读到密码,传了空值
- 解决:取消保存密码、重新输入、清理 Keychain
Q3:ORA-24454(client host name is not set)
- Oracle 获取不到 HostName(.local / DNS / scutil 空值)
- 解决:设置 HostName + 修改 /etc/hosts + 刷新缓存
完整一键检查清单
✅ Rosetta 已安装
✅ Instant Client(Basic + SDK)已安装到固定目录
✅ 目录中存在 libclntsh.dylib
✅ .zshrc 配置 ORACLE_HOME / DYLD_LIBRARY_PATH / PATH
✅ Navicat 勾选 Rosetta 打开
✅ /etc/hosts 添加 TylerMacPro 映射
✅ Navicat 测试连接成功