在 Apple Silicon Mac 上运行 Oracle XE 数据库
最近入手了一台 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 启动的容器环境,这属于正常现象,所有操作都应在命令行完成。