Mac安装Oracle数据库(M芯片)

适用场景:

  • 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.dmg
  • instantclient-sdk-macos.dmg

4. 安装 Instant Client(拖拽/复制到固定目录)

4.1 创建安装目录(推荐放在用户目录)

例如放到:

text 复制代码
/Users/你的目录

/Users/***/software/Java/oracle/

你可以先在 Finder 创建好该目录。


4.2 安装 Basic(必须)

  1. 双击打开 instantclient-basic-macos.dmg
  2. 会出现一个挂载盘,例如 instantclient-basic-macos.x64-19.16...
  3. 里面能看到大量 .dylib 文件(如 libclntsh.dyliblibnnz19.dyliblibocci.dylib
  4. 将该挂载盘里的所有内容复制到目标目录,例如:
text 复制代码
/Users/***/software/Java/oracle/instantclient_19_16/

⚠️ 注意:最终目录里必须能看到 libclntsh.dylib,否则说明还没安装成功。


4.3 安装 SDK(建议)

  1. 双击打开 instantclient-sdk-macos.dmg
  2. 将里面的内容复制到同一个目录:
text 复制代码
/Users/***/software/Java/oracle/instantclient_19_16/

当系统提示"文件已存在,是否替换"时:

  • 勾选 全部应用
  • 选择 替换

4.4 验证是否安装成功

进入目标目录,确认存在:

  • libclntsh.dylib
  • libclntsh.dylib.19.1
  • libclntshcore.dylib.19.1
  • libnnz19.dylib
  • libocci.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

因为你安装的是 Intel x86 版本 Instant Client,Navicat 必须运行在 Rosetta 模式,否则架构不一致加载失败。

步骤:

  1. Finder → 应用程序 → 找到 Navicat Premium
  2. 右键 → 显示简介
  3. 勾选 ✅ 使用 Rosetta 打开
  4. Cmd + Q 完全退出 Navicat
  5. 重新打开 Navicat

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
  • 重新打开 → 测试连接

10. 最终验证:连接成功

当左侧能看到大量 Schema(如 CHENGMINSUPCONLMS_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 测试连接成功


相关推荐
数据组小组12 小时前
免费数据库管理工具深度横评:NineData 社区版、Bytebase 社区版、Archery,2026 年开发者该选哪个?
数据库·测试·数据库管理工具·数据复制·迁移工具·ninedata社区版·naivicat平替
悟空聊架构18 小时前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL18 小时前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
进击的丸子21 小时前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
NineData2 天前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL2 天前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king2 天前
入门 java 和 数据库
java·数据库·后端
jiayou642 天前
KingbaseES 实战:审计追踪配置与运维实践
数据库
NineData2 天前
NineData 迁移评估功能正式上线
数据库·dba
NineData3 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算