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 测试连接成功


相关推荐
TESmart碲视2 小时前
突破macOS多屏限制:HDC203-PM24三屏DisplayLink KVM扩展坞深度解析
macos·计算机外设·kvm切换器·三屏kvm·displaylink
路由侠内网穿透2 小时前
本地部署开源 LLM 应用观测与调试平台 Langfuse 并实现外部访问
运维·服务器·数据库·物联网·开源
SPC的存折2 小时前
1、Ansible之Ansible安装与入门
linux·数据库·ansible
qiumingxun2 小时前
mysql的分区表
数据库·mysql
sxhcwgcy2 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
康康的AI博客2 小时前
向量数据库选型指南:AI 数据底座怎么选不踩坑
数据库·人工智能
huohuopro3 小时前
HBase 伪分布式环境安装指南
数据库·分布式·hbase
SelectDB3 小时前
中通快递:从 10 分钟到秒级,SelectDB 实时更新 + 倒排索引提升多维分析效率
数据库·数据分析
SadSunset3 小时前
第五章:Redis 的 Java 客户端
java·数据库·redis
数据皮皮侠3 小时前
1095 《中国城市统计年鉴》面板数据整理
大数据·数据库·人工智能·算法·制造