
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
XE (Express Edition) 是 Oracle 10g/11g 的免费简化版,XE 版本有内存和使用限制,主要用于开发和测试环境。
bashdocker pull caixb/oracle:11.2.0.2.0
bashdocker run -d --name oracle-server-11.2.0.2.0 -p 22:22 -p 1521:1521 caixb/oracle:11.2.0.2.0
bashhostname: localhost or docker machine ip port: 1521 sid: xe username: system password: oracle Password for SYS & SYSTEM is oracle Password for fareuser, searchuser, bookinguser, checkinuser is rohit123
bash$ ssh root@<docker_machine_ip> -p 22
📑 password: admin
bash# 缺省命令,根据提示输入 sqlplus # 或 sqlplus system/oracle@localhost:1521
若出现下述提示信息,则修改密码。
ERROR: ORA-28002: the password will expire within 7 days
sqlALTER USER system IDENTIFIED BY CjaPmyzu; ALTER USER sys IDENTIFIED BY CjaPmyzu;
删除 fareuser, searchuser, bookinguser, checkinuser 四个用户。
sql-- 删除用户及其所有对象(CASCADE选项会删除用户的所有对象) DROP USER fareuser CASCADE; DROP USER searchuser CASCADE; DROP USER bookinguser CASCADE; DROP USER checkinuser CASCADE;
sql-- 检查是否还有残留的表空间文件(如果需要完全清理) SELECT file_name, tablespace_name, bytes/1024/1024 as size_mb FROM dba_data_files WHERE tablespace_name LIKE '%FARE%' OR tablespace_name LIKE '%SEARCH%' OR tablespace_name LIKE '%BOOK%' OR tablespace_name LIKE '%CHECK%';
sql-- 如果需要删除相关表空间 DROP TABLESPACE TBS_CHECKINUSER INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE TBS_SEARCHUSER INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE TBS_FAREUSER INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE TBS_BOOKINGUSER INCLUDING CONTENTS AND DATAFILES;
sqlSELECT username, account_status FROM dba_users WHERE username IN ('FAREUSER', 'SEARCHUSER', 'BOOKINGUSER', 'CHECKINUSER');
Oracle Instant Client 软件登录 Oracle 官网下载 Oracle Instant Client,下载地址:[***]
在解压缩后的文件夹下创建 network 目录,新建一个文件 tnsnames.ora,内容如下。
格式:
bash# 数据库1 别名1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 主机1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 服务名1) ) ) # 数据库2 别名2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 主机2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 服务名2) ) )
案例:
bashdev=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.127.29)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl))) test=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)))
说明:
dev为服务别名,企业版的 Oracle 数据库产品的服务一般为orcl,而免费版的服务别名一般为XE127.0.0.1为 ip 地址1521为服务的端口
仅针对 Window 系统,按住 Win + R 键,输入 sysdm.cpl,选择 高级 ➡️ 系统变量,添加以下系统变量。
bashTNS_ADMIN:值为 tnsnames.ora 文件所在目录
PL/SQL Developer 软件首次打开会弹出小窗口让你填连接信息,直接 ✖️ 掉,会以 未登录 状态进入软件,在工具栏中找到 首选项。
找到 连接 菜单,填写 Oracle主目录,输入你的 Oracle Instant Client 目录全路径,比如:D:\protable\oracle_instant_client_11.2.0.4.0
同样的,填写 OCI 库,输入你的 oci 库文件全路径,比如:D:\protable\oracle_instant_client_11.2.0.4.0\oci.dll
保存,关闭 PL/SQL Developer 软件,重启打开,主机名就会出现在PL/SQL Developer的列表里,输入用户名密码,就可以登录远程oracle 数据库。
PL/SQL Developer 查询数据出现中文乱码问题sqlselect userenv('language') from dual;
查询的结果:AMERICAN_AMERICA.ZHS16GBK,则配置系统环境变量。
bashNLS_LANG: AMERICAN_AMERICA.ZHS16GBK
bash-- 使用 SYSTEM 或 SYS 用户连接 sqlplus system/oracle@localhost:1521/xe -- 或者使用 SYS 用户(需要以 SYSDBA 身份连接) sqlplus sys/oracle@localhost:1521/xe as sysdba -- 或者缺省,本地连接(推荐,权限更高) sqlplus sys/password as sysdba
sql-- 创建最简单的用户 CREATE USER dev_user IDENTIFIED BY dev_password; -- 创建用户并指定默认表空间 CREATE USER app_user IDENTIFIED BY app_password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; -- 创建用户并设置配额 CREATE USER report_user IDENTIFIED BY report_password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 100M ON users;
sql-- 完整用户创建示例 CREATE USER airline_app IDENTIFIED BY "Airline@2025" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 500M ON users QUOTA 100M ON temp PROFILE default ACCOUNT UNLOCK PASSWORD EXPIRE; -- 立即解锁账户(如果创建时锁定了) ALTER USER airline_app ACCOUNT UNLOCK;
6.4.1.基本权限授予
sql-- 授予连接权限 GRANT CREATE SESSION TO airline_app; -- 授予资源权限(创建表、序列等) GRANT CONNECT, RESOURCE TO airline_app; -- 授予特定对象权限 GRANT SELECT, INSERT, UPDATE, DELETE ON system.customers TO airline_app; -- 授予系统权限 GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO airline_app;
6.4.2.角色权限管理
sql-- 创建自定义角色 CREATE ROLE airline_developer; CREATE ROLE airline_readonly; -- 为角色授予权限 GRANT SELECT ANY TABLE, CREATE SESSION TO airline_readonly; GRANT CONNECT, RESOURCE, CREATE VIEW TO airline_developer; -- 将角色授予用户 GRANT airline_developer TO airline_app; -- 查看用户权限 SELECT * FROM user_role_privs WHERE username = 'AIRLINE_APP'; SELECT * FROM user_sys_privs WHERE username = 'AIRLINE_APP';
6.5.1.创建用户
sql-- 创建开发用户 CREATE USER JSGBJD IDENTIFIED BY "gbjd123" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 500M ON users PROFILE default ACCOUNT UNLOCK PASSWORD EXPIRE; -- 立即解锁并设置密码(如果创建时锁定了) ALTER USER JSGBJD ACCOUNT UNLOCK;
6.5.2.创建开发角色
sql-- 创建开发角色 CREATE ROLE dev_role; -- 授予基本的会话权限 GRANT CREATE SESSION TO dev_role; -- 授予对象创建权限 GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE, CREATE TRIGGER, CREATE TYPE, CREATE SYNONYM TO dev_role; -- 授予对象管理权限 GRANT ALTER ANY TABLE, DROP ANY TABLE TO dev_role; GRANT ALTER ANY SEQUENCE, DROP ANY SEQUENCE TO dev_role; GRANT ALTER ANY PROCEDURE, DROP ANY PROCEDURE TO dev_role; -- 授予数据操作权限 GRANT SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO dev_role; -- 授予调试和性能监控权限 GRANT DEBUG CONNECT SESSION, DEBUG ANY PROCEDURE TO dev_role; GRANT SELECT ANY DICTIONARY TO dev_role; -- 授予索引和约束权限 GRANT CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX TO dev_role;
6.5.3.授予特定开发工具需要的权限
sql-- 为常见开发工具授予权限 GRANT UNLIMITED TABLESPACE TO dev_role; -- 授予执行 DBMS 包的权限(需要 sysdba 权限执行) GRANT EXECUTE ON DBMS_LOCK TO dev_role; GRANT EXECUTE ON DBMS_OUTPUT TO dev_role; GRANT EXECUTE ON DBMS_SQL TO dev_role; GRANT EXECUTE ON DBMS_UTILITY TO dev_role; GRANT EXECUTE ON UTL_FILE TO dev_role; -- 授予统计信息权限(用于性能调优) GRANT ANALYZE ANY TO dev_role; -- 授予物化视图权限(如果使用) GRANT CREATE MATERIALIZED VIEW, ALTER ANY MATERIALIZED VIEW, DROP ANY MATERIALIZED VIEW TO dev_role;
6.5.4.将角色授予开发用户
sql-- 将开发角色授予用户 GRANT dev_role TO JSGBJD; -- 授予 CONNECT 角色(包含基本权限) GRANT CONNECT TO JSGBJD; -- 授予 RESOURCE 角色(包含资源创建权限) GRANT RESOURCE TO JSGBJD; -- 设置默认角色 ALTER USER JSGBJD DEFAULT ROLE dev_role, CONNECT, RESOURCE;
6.5.5.创建开发专用的表空间(可选)
授予容器创建文件的权限:
bashchmod -R 777 /opt/oracle/oradata/XE/
sql-- 为开发环境创建专用表空间 CREATE TABLESPACE dev_data DATAFILE '/opt/oracle/oradata/XE/dev_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 2G; CREATE TEMPORARY TABLESPACE dev_temp TEMPFILE '/opt/oracle/oradata/XE/dev_temp01.dbf' SIZE 200M AUTOEXTEND ON NEXT 50M MAXSIZE 1G; -- 修改用户使用开发表空间 ALTER USER JSGBJD DEFAULT TABLESPACE dev_data TEMPORARY TABLESPACE dev_temp QUOTA UNLIMITED ON dev_data;
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 caixb/oracle 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: