当前位置:首页 > 技术 > 正文内容

在 Apple Silicon Mac 上运行 Oracle XE 数据库

访客 技术 2026年6月23日 1

最近入手了一台 Macbook Air M1 用于日常开发。学校课程中需要使用 Oracle XE 11g 数据库,但官方并未提供 macOS 原生版本。经过多次尝试,最终成功在 ARM 架构上运行了该数据库。以下是完整的技术方案。

1. 配置 Homebrew 环境

macOS 默认终端为 zsh,而 Homebrew 官方脚本主要针对 bash 设计,直接使用可能导致 brew 命令不可用。推荐采用以下替代方案进行安装:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装过程中选择中科大镜像源以加速下载,等待脚本自动完成。

2. 部署 Colima 虚拟机

Oracle XE 需运行在 x86_64 架构下,因此需通过 Colima 模拟该环境。执行以下命令安装并启动:

brew install colima qemu
colima start --memory 4 --arch x86_64

参数 --arch x86_64 强制使用 Intel 架构模拟,--memory 4 分配 4GB 内存。

3. 安装 Docker 客户端

使用 brew 安装轻量级 Docker 工具:

brew install docker

若后续需要图形化管理界面,可替换为 Docker Desktop(参考问题解决部分)

4. 运行 Oracle XE 容器

首先登录 Docker Hub:

docker login

随后拉取并启动预配置的 Oracle 11g 镜像:

docker run -h "oraclehost" --name "oracle" -d -p 1521:1521 oracleinanutshell/oracle-xe-11g

该命令将容器的 1521 端口映射到宿主机,供外部工具连接。

5. 验证数据库状态

查看运行中的容器:

docker ps

输出示例:

CONTAINER ID   IMAGE                             COMMAND                  
cdd8e2328ef2   oracleinanutshell/oracle-xe-11g   "/bin/sh -c '/usr/sb…"

进入容器内部 shell:

docker exec -it cdd8e2328ef2 /bin/bash

使用 SQL*Plus 登录测试:

sqlplus system/oracle

成功后将显示如下信息:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL>

常见问题处理

Q1:启动容器时提示 Docker 守护进程未运行

错误信息:Cannot connect to the Docker daemon at unix:///var/run/docker.sock
解决方案:卸载 brew 安装的 Docker 并改用桌面版:

brew uninstall docker

从 Docker 官网下载并安装 Docker Desktop。

Q2:安装 Docker Desktop 后终端找不到命令

编辑或创建 ~/.zshrc 文件,添加路径:

export PATH="/Applications/Docker.app/Contents/Resources/bin:$PATH"

使配置生效:

source ~/.zshrc

Q3:默认连接凭证与端口

  • 用户名:system
  • 密码:oracle
  • 服务名:XE
  • 端口:1521

Q4:Navicat 连接报错"未加载 Oracle 数据库"

在访达中右键 Navicat → 显示简介 → 勾选"使用 Rosetta 运行",重新启动应用即可。

Q5:SQL*Plus 中方向键显示为转义字符

在容器内安装 readline 工具:

apt update && apt install rlwrap -y

使用增强版命令启动:

rlwrap sqlplus system/oracle

注意事项

避免使用 deepdiver 提供的镜像,因版本过旧可能导致拉取失败。此外,Docker Desktop 可能无法识别通过 Colima 启动的容器环境,这属于正常现象,所有操作都应在命令行完成。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。