如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Oracle AI Database 26ai Free 是业界领先数据库的免费版本。Oracle AI Database 26ai Free容器镜像包含基于Oracle Linux 8基础镜像的Oracle AI Database 26ai Free。该镜像支持两种版本:
Full 镜像:支持Oracle AI Database 26ai Free提供的所有数据库功能。Lite 镜像:更小的镜像大小,包含数据库的精简安装。Lite镜像的存储占用比Full镜像更小(约减少80%的镜像大小),且镜像拉取时间显著缩短。此镜像适用于CI/CD场景以及不需要高级数据库功能的简单用例。有关Oracle AI Database 26ai Free的更多信息,请参见:[***]
Oracle AI Database 26ai Free容器镜像包含预构建数据库,因此启动时间非常快。快速启动在CI/CD场景中很有帮助。
要启动Oracle AI Database Free容器,请运行以下命令,其中<container_name>可以是容器的任何自定义名称:
podman run -d --name <container_name> container-registry.oracle.com/database/free:latest
容器启动时,会为SYS、SYSTEM和PDBADMIN用户生成随机密码,称为默认密码。
[!NOTE]
- 本文档中,尖括号
<>内的文字表示代码行中的变量。- 要更改默认密码,请参见:“更改SYS用户的默认密码”
- 要了解高级用例,请参见:“自定义配置”
- 本文档使用
podman作为推荐的容器运行时,但使用现代等效命令也预期可正常工作。- Oracle AI Database 26ai Free不再支持Oracle Enterprise Manager Database Express(OEM DB Express)。请改用SQL Developer。
当podman ps输出的STATUS字段显示(healthy)时,Oracle AI Database即准备就绪可供使用。
为便于自定义配置,Oracle AI Database容器提供了启动容器时可使用的配置参数。例如,以下是支持所有自定义配置的详细podman run命令:
podman run --name <container_name> \
-P | -p <host_port>:1521 \
-e ORACLE_PWD=<your_password> \
-e ORACLE_CHARACTERSET=<character_set> \
-e ENABLE_ARCHIVELOG=true \
-e ENABLE_FORCE_LOGGING=true \
-v <host_directory_or_volume>:/opt/oracle/oradata \
container-registry.oracle.com/database/free:latest
参数说明:
--name: 容器名称(默认:自动生成)-P | -p: 主机端口到容器端口的映射。仅暴露一个端口:1521(Oracle监听器)-e ORACLE_PWD: Oracle AI Database的SYS、SYSTEM和PDB_ADMIN用户密码(默认:自动生成)-e ORACLE_CHARACTERSET: 创建数据库时使用的字符集(默认:AL32UTF8)-e ENABLE_ARCHIVELOG: 创建数据库时启用归档日志模式(默认:true)-e ENABLE_FORCE_LOGGING: 创建数据库时启用强制日志记录模式(默认:true)-v <host_directory_or_volume>:/opt/oracle/oradata: 数据库使用的数据卷。必须可由容器内的Unix“oracle”用户(uid: 54321)写入。如果省略,数据库将不会在容器重建后持久化。-v <host_directory>:/opt/oracle/scripts/startup: 可选:包含数据库启动后要运行的自定义脚本的卷。详情见下文“在设置后和启动时运行脚本”部分。-v <host_directory>:/opt/oracle/scripts/setup: 可选:包含数据库设置后要运行的自定义脚本的卷。详情见下文“在设置后和启动时运行脚本”部分。支持的配置选项:
ORACLE_CHARACTERSET:此参数修改数据库的字符集。该参数为可选,默认值设为AL32UTF8。请注意,仅在创建新数据库时(即运行镜像时使用-v选项挂载主机系统目录,参见“挂载Podman卷/主机目录以实现数据库持久化”部分),此参数才会设置字符集。
ORACLE_PWD:此参数修改SYS、SYSTEM和PDBADMIN用户的密码。该参数为可选,默认值随机生成。
[!NOTE]
使用此选项会将密码暴露为容器环境变量。因此,建议使用下文描述的Podman secrets。
SYS、SYSTEM和PDBADMIN用户的密码,请创建名为oracle_pwd的secret和用于加密密码的密钥oracle_pwd_priv_key。命令如下:
mkdir /opt/.secrets/
cd /opt/.secrets
openssl genrsa -out key.pem
openssl rsa -in key.pem -out key.pub -pubout
/opt/.secrets/pwdfile.txtvi /opt/.secrets/pwdfile.txt
openssl pkeyutl -in /opt/.secrets/pwdfile.txt -out /opt/.secrets/pwdfile.enc -pubin -inkey /opt/.secrets/key.pub -encrypt
rm -rf /opt/.secrets/pwdfile.txt
podman secret create oracle_pwd /opt/.secrets/pwdfile.enc
podman secret create oracle_pwd_priv_key /opt/.secrets/key.pub
--secret选项将上述创建的oracle_pwd和oracle_pwd_priv_key secrets传递给容器:podman run --name <container_name> --secret=oracle_pwd --secret=oracle_pwd_priv_key container-registry.oracle.com/database/free:latest
/opt/oracle/oradata位置。这两个选项的区别如下:
/opt/oracle/oradata位置挂载Podman卷,则该卷会预填充镜像中已存在的数据文件。此时,启动速度会非常快,类似于未挂载卷时启动镜像。这些数据文件存在于镜像中是为了实现数据库的快速启动。$ podman run -d --name <container_name> \
-v <volume_name>:/opt/oracle/oradata \
container-registry.oracle.com/database/free:latest
/opt/oracle/oradata位置挂载主机系统目录,会发生以下两种情况:
/opt/oracle/oradata处的文件,数据库启动速度会非常快。/opt/oracle/oradata处的数据文件会被覆盖,将开始新数据库的设置。全新数据库的设置需要相当长的时间(约10分钟)。$ podman run -d --name <container_name> \
-v <host_directory>:/opt/oracle/oradata \
container-registry.oracle.com/database/free:latest
[!NOTE]
清理已挂载的主机目录可通过进入目录位置并执行
rm -rf * .*完成。
如果未使用“自定义配置”部分中描述的-e选项提供密码,容器首次启动时会为数据库生成随机密码。要更改这些账户的密码,请使用podman exec命令运行容器中的setPassword.sh脚本。注意,运行脚本前容器必须处于运行状态。例如:
podman exec <container_name> ./setPassword.sh <new_password>
可以使用以下命令访问数据库告警日志,其中<container_name>是容器名称:
podman logs <container_name>
当Oracle AI Database指示容器已启动且STATUS字段显示(healthy)后,客户端应用程序即可连接到数据库。
从容器内连接
可以通过在容器内运行SQL*Plus命令连接到Oracle AI Database,使用以下命令之一:
podman exec -it <container_name> sqlplus sys/<password>@FREE as sysdba
podman exec -it <container_name> sqlplus system/<password>@FREE
podman exec -it <container_name> sqlplus pdbadmin/<password>@FREEPDB1
从容器外连接
默认情况下,Oracle AI Database暴露1521端口用于Oracle客户端连接(使用Oracle的SQLNet协议)。可以使用SQLPlus或任何Oracle AI Database客户端软件从容器外连接到数据库。
要从容器外连接,请按照“自定义配置”部分中的详细Podman运行命令启动容器时使用-P选项。通过运行以下命令发现映射的端口:
podman port <container_name>
要使用SQL*Plus从容器外连接,请运行以下命令:
# 以sysdba身份连接到CDB$ROOT级别的数据库:
sqlplus sys/<password>@//localhost:<mapped_port>/FREE as sysdba
# 以非sysdba身份连接到CDB$ROOT级别:
sqlplus system/<password>@//localhost:<mapped_port>/FREE
# 连接到FREE数据库中的默认可插拔数据库(PDB):
sqlplus pdbadmin/<password>@//localhost:<mapped_port>/FREEPDB1
如果按照“自定义配置”部分中“挂载Podman卷/主机目录以实现数据库持久化”所述,使用挂载到容器内/opt/oracle/oradata位置的主机系统目录启动数据库,则即使容器被销毁,数据文件也会保持持久化。可以通过重用主机系统目录启动另一个使用相同数据文件的容器。
要将主机系统上的此目录重用于数据卷,请运行以下命令:
podman run -d --name <container_name> -v \
<host_directory>:/opt/oracle/oradata \
container-registry.oracle.com/database/free:latest
容器镜像可以配置为在设置后和启动时运行脚本。目前支持.sh和.sql扩展名。
/opt/oracle/scripts/setup以包含此目录中的脚本。/opt/oracle/scripts/startup以包含此目录中的脚本。数据库设置或启动后,这些文件夹中的脚本将在容器内的数据库上运行。SQL脚本以SYSDBA身份运行,shell脚本以当前用户身份运行。
为确保脚本按正确顺序运行,Oracle建议为脚本添加数字前缀。例如:01_users.sql、02_permissions.sql等。
[!NOTE]
Free和Free Lite镜像均包含预构建数据库,因此设置脚本不会运行。如果提供主机挂载点(空目录),则会开始新数据库的设置,且设置脚本将运行。
以下示例将本地目录/home/oracle/myScripts挂载到/opt/oracle/scripts/startup,然后会在此目录中搜索自定义启动脚本...
来自真实用户的反馈,见证轩辕镜像的优质服务