
caixb/oracleXE (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;
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;
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';
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;
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;
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;
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;
授予容器创建文件的权限:
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;




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务