如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
从https://github.com/oracle/adb-free/pkgs/container/adb-free%E4%B8%AD%EF%BC%8C%E9%80%89%E6%8B%A9%E6%95%B0%E6%8D%AE%E5%BA%93%E7%89%88%E6%9C%AC%E5%8F%8A%E5%AF%B9%E5%BA%94%E7%9A%84%E9%95%9C%E5%83%8F%E3%80%82%E6%88%91%E4%BB%AC%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E5%91%BD%E5%90%8D%E7%BA%A6%E5%AE%9A%EF%BC%9A
| 数据库版本 | 最新镜像标签 | 特定发布镜像标签 | 支持架构 |
|---|---|---|---|
| 26ai | latest-26ai | 26.2.4.2-26ai | linux/arm64 和 linux/amd64 |
| 23ai | latest-23ai | 25.9.3.2-23ai | linux/arm64 和 linux/amd64 |
| 19c | latest | 26.2.4.2 | linux/amd64 |
[!NOTE] ADBS-25.9.3.2-23ai 是最后一个 23ai 版本。我们现在仅发布 26ai 和 19c 的 adb-free 镜像。
[!NOTE] 通常,镜像除了发布版本标签外,还会有额外的"重要功能"标签。例如:
adb-free:select_ai_agent
Oracle Autonomous AI Database Free 容器需要 4 个 CPU 和 8 GiB 内存
请参考官方文档在Linux、Windows或Mac上安装 podman
容器需要Linux内核。运行以下命令启动podman虚拟机:
podman machine init
podman machine set --cpus 4 --memory 8192
podman machine start
[!NOTE] 26ai 镜像是多架构的,即原生支持 ARM64 和 AMD64 平台。 19c 镜像仅原生支持 linux/amd64 平台。要在 ARM 机器上运行 19c adb-free 容器,需要使用 colima 模拟。 有关设置 Colima 虚拟机的说明,请阅读FAQ
[!NOTE] 尽管说明中使用
podman,但镜像格式同时符合开放容器倡议 (OCI) 和 Docker 标准。 ADB 容器可与 OCI 和 Docker 容器运行时无缝协作。您也可以使用docker启动容器。
要启动用于ATP工作负载的 Oracle Autonomous AI Database Free 容器,请运行以下命令:
podman run -d \
-p 1521:1522 \
-p 1522:1522 \
-p 8443:8443 \
-p 27017:27017 \
-e WORKLOAD_TYPE=ATP \
-e WALLET_PASSWORD=*** \
-e ADMIN_PASSWORD=*** \
--cap-add SYS_ADMIN \
--device /dev/fuse \
--name adb-free \
container-registry.oracle.com/database/adb-free:latest-26ai
注意:对于 19c,请使用
container-registry.oracle.com/database/adb-free:latest
ADMIN_PASSWORD 指定密码WALLET_PASSWORD 生成下表解释传递给容器的环境变量:
| 环境变量 | 描述 |
|---|---|
| WORKLOAD_TYPE | 可以是 ATP(事务处理)或 ADW(数据仓库)。默认值为 ATP |
| DATABASE_NAME | 数据库名称只能包含字母数字字符。如果未提供,数据库将根据传递的工作负载类型命名为 MYATP 或 MYADW |
| ADMIN_PASSWORD | 管理员用户密码长度必须在 12 到 30 个字符之间,且必须包含至少一个大写字母、一个小写字母和一个数字。密码不能包含用户名 |
| WALLET_PASSWORD | ***密码长度至少为 8 个字符,且必须包含字母字符以及数字或特殊字符 |
| ENABLE_ARCHIVE_LOG | 用于启用数据库归档日志。默认值为 True。要关闭归档日志,请将值设置为 False |
注意:对于 OFS 挂载,容器应使用
SYS_ADMIN权限启动。此外,虚拟设备/dev/fuse必须可访问
请注意以下转发到容器进程的端口:
| 端口 | 描述 |
|---|---|
| 1521 | TLS |
| 1522 | mTLS |
| 8443 | ORDS / APEX 和 Database Actions 的 HTTPS 端口 |
| 27017 | Mongo API |
如果您位于企业代理之后,有两种方式配置数据库使用代理设置:
HTTP_PROXY 数据库属性。供 DBMS_CLOUD 等包使用:exec DBMS_CLOUD_CONTAINER_ADMIN.set_database_property('HTTP_PROXY', 'www-my-corp-proxy.com:80/');
UTL_HTTP.set_proxy 为通过 UTL_HTTP 发送的 HTTP 请求设置代理:exec UTL_HTTP.SET_PROXY('www-my-corp-proxy.com');
adb-cli 可用于在容器启动并运行后执行数据库操作。
要使用 adb-cli,您可以定义以下别名以方便使用:
alias adb-cli="podman exec adb-cli"
>> adb-cli --help
Usage: adb-cli [OPTIONS] COMMAND [ARGS]...
ADB-S Command Line Interface (CLI) to perform container-runtime database operations
Options:
-v, --version Show the version and exit.
--help Show this message and exit.
Commands:
add-database 添加数据库
change-password 修改密码
您可以使用 add-database 命令添加数据库:
adb-cli add-database --workload-type "ADW" --admin-password "Welcome_1234"
要修改管理员用户密码,请使用以下命令:
adb-cli change-password --database-name "MYADW" --old-password "Welcome_1234" --new-password "Welcome_12345"
要在容器重启和删除后持久化数据,应在 /u01/data 挂载卷,并按照跨容器迁移PDB数据的文档中提到的步骤操作:
podman run -d \
-p 1521:1522 \
-p 1522:1522 \
-p 8443:8443 \
-p 27017:27017 \
-e WORKLOAD_TYPE=ATP \
-e WALLET_PASSWORD=*** \
-e ADMIN_PASSWORD=*** \
--cap-add SYS_ADMIN \
--device /dev/fuse \
--name adb-free \
--volume adb_container_volume:/u01/data \
container-registry.oracle.com/database/adb-free:latest-26ai
容器主机名用于生成自签名SSL证书,以在8443端口提供HTTPS流量。可使用容器主机(或直接使用localhost)访问APEX和Database Actions:
| 应用程序 | URL |
|---|---|
| APEX | https://localhost:8443/ords/apex |
| Database Actions | https://localhost:8443/ords/sql-developer |
注意:对于使用
adb-cli add-database命令插入的其他数据库,请分别使用 URL 格式https://localhost:8443/ords/{database_name}/apex和https://localhost:8443/ords/{database_name}/sql-developer访问 APEX 和 Database Actions。
在容器中,TLS***生成于 /u01/app/oracle/wallets/tls_wallet 位置。
将***复制到主机:
podman cp adb-free:/u01/app/oracle/wallets/tls_wallet /scratch/tls_wallet
在此示例中,***被复制到 /scratch/tls_wallet 文件夹。
将 TNS_ADMIN 环境变量指向***目录:
export TNS_ADMIN=/scratch/tls_wallet
如果要连接到运行ADB free容器的远程主机,请将 $TNS_ADMIN/tnsnames.ora 中的 localhost 替换为远程主机的FQDN:
sed -i 's/localhost/my.host.com/g' $TNS_ADMIN/tnsnames.ora
与云中的Autonomous AI Database类似,可使用以下任一别名连接到ADB free容器。
MYATP TNS别名
对于mTLS,使用以下别名:
对于TLS,使用以下别名:
MYADW TNS别名
对于mTLS,使用以下别名:
对于TLS,使用以下别名:
TNS别名与其连接字符串的映射可在 $TNS_ADMIN/tnsnames.ora 文件中找到。
要无***连接,需要使用容器启动时生成的自签名证书更新客户端的信任库。
Linux系统信任库
从容器复制 /u01/app/oracle/wallets/tls_wallet/adb_container.cert 并更新系统信任库:
podman cp adb-free:/u01/app/oracle/wallets/tls_wallet/adb_container.cert adb_container.cert
sudo cp adb_container.cert /etc/pki/ca-trust/source/anchors
sudo update-ca-trust
MacOS系统信任库
对于MacOS,请参考支持指南将证书添加到钥匙串。
JDK信任库
要更新JDK信任库,可使用 keytool:
Linux示例:
sudo keytool -import -alias adb_container_certificate -keystore $JAVA_HOME/lib/security/cacerts -file adb_container.cert
MacOS示例:
sudo keytool -import -alias adb_container_certificate -file adb_container.cert -keystore /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/lib/security/cacerts
从容器复制***并压缩:
podman cp adb-free:/u01/app/oracle/wallets/tls_wallet /scratch/tls_wallet
zip -j /scratch/tls_wallet.zip /scratch/tls_wallet/*
压缩***后,打开SQLDeveloper并按照以下步骤操作:
在此示例中,我们使用别名 myatp_low 连接:
sqlplus admin/<password>@myatp_low
SQL*Plus: Release 21.0.0.0.0 - Production on Wed Jul 26 22:38:27 2023
Version 21.9.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Wed Jul 26 2023 16:36:16 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.20.0.1.0
SQL>
安装Oracle数据库的python-oracledb驱动:
python3 -m pip install oracledb
import oracledb
conn = oracledb.connect(
user="admin",
password="<password>",
dsn="myadw_medium",
config_dir="/scratch/tls_wallet",
wallet_location="/scratch/tls_wallet",
wallet_password="***"
)
cr = conn.cursor()
r = cr.execute("SELECT 1 FROM DUAL")
print(r.fetchall())
>> [(1,)]
以管理员身份连接:
sqlplus admin/<password>@myatp_medium
按如下方式创建用户:
CREATE USER APP_USER IDENTIFIED BY "<password>" QUOTA UNLIMITED ON DATA;
-- 添加角色
GRANT CONNECT TO APP_USER;
GRANT CONSOLE_DEVELOPER TO APP_USER;
GRANT DWROLE TO APP_USER;
GRANT RESOURCE TO APP_USER;
-- 启用REST
BEGIN
ORDS.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'APP_USER',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'app_user',
p_auto_rest_auth=> TRUE
);
commit;
END;
/
-- 配额
ALTER USER APP_USER QUOTA UNLIMITED ON DATA;
Oracle Estate Explorer 是一款工具,使客户能够以编程方式评估Oracle数据库组向Oracle Autonomous AI Database的迁移就绪性。OEE的输出提供测试数据库组的高级资产概述,根据其与ADB先决条件的对齐程度进行排名,并提供所需任何修复的分级相对工作量。OEE APEX应用已安装在adb-free镜像中,可供使用...
来自真实用户的反馈,见证轩辕镜像的优质服务