如何用Apple Silicon(M1)连接Parallels中Win11虚拟机的Oracle数据库
解决Apple Silicon(M1) DataGrip连接Parallels虚拟机Oracle HR库失败的问题
问题核心分析
先拆解你遇到的报错信息:
Failed DBMS: Oracle (no ver.) Case sensitivity: plain=mixed, delimited=exact Native library cannot be loaded. no ocijdbc21 in java.library.path: /Users/malkhaz/instantclient_19_8:/Users/malkhaz/lib:/Users/malkhaz/instantclient_19_8
核心问题点:
- 版本不匹配:报错要找
ocijdbc21(对应Oracle 21c本地库),但你装的是19.8版本的Instant Client,版本完全对不上 - 架构可能不兼容:Apple Silicon是arm64架构,若你装的是x86版本的Instant Client,会因为架构差异导致库加载失败
- 路径配置指向了错误版本的库目录
分步解决方案
1. 对齐Instant Client与JDBC驱动版本
两种选择二选一:
- 换DataGrip的JDBC驱动:打开数据库连接配置的「Driver」标签页,下载Oracle 19.x对应的ojdbc8驱动包,替换当前的21版本驱动
- 升级Instant Client:换成21c的arm64版本,确保和驱动版本一致
2. 安装适配Apple Silicon的Instant Client
- 下载Oracle官方的arm64架构Instant Client(比如21.10或19.18版本),别用x86版本
- 解压后放到本地目录(比如
/Users/你的用户名/instantclient_21_10) - 在DataGrip连接配置的「Advanced」选项里,找到
native library path,手动填入这个目录的绝对路径
3. 匹配DataGrip与Instant Client的架构
- 优先用JetBrains官方的原生arm64版本DataGrip,避免Rosetta转译带来的兼容性问题
- 如果非要用x86版本的DataGrip,必须装x86版本的Instant Client,且确保DataGrip通过Rosetta运行
4. 先搞定虚拟机网络连通性
- 先在Mac终端测虚拟机IP连通性:
ping 虚拟机IP地址,确保能通 - 测Oracle监听端口(默认1521):
nc -zv 虚拟机IP 1521,返回succeeded!才算端口开放 - 确认虚拟机内Oracle监听服务正常,且HR用户已解锁并开启远程连接权限:
ALTER USER hr ACCOUNT UNLOCK; ALTER USER hr IDENTIFIED BY 你的HR用户密码;
5. 手动配置Java库路径
- 打开DataGrip的「Help」→「Edit Custom VM Options」
- 添加一行:
-Djava.library.path=/Users/你的用户名/正确的instantclient目录 - 重启DataGrip生效
额外注意事项
- arm64版本的Instant Client自带必要依赖,无需额外装libaio
- 确保Instant Client目录权限正确:
chmod -R 755 /你的instantclient目录
内容的提问来源于stack exchange,提问作者Malkhaz
相关产品推荐
相关产品推荐

