本文详细介绍了Oracle21cXE开发环境的完整配置流程,包括五个关键阶段:
- 准备工作确认环境信息;
- 连接数据库并创建表空间和用户;
- 导入100万行测试数据;
- 安装CO现代业务示例模式;
- 安装SCOTT经典教学示例。
每个步骤都提供了具体的SQL命令和验证方法,并标注了常见错误及解决方法。
最终在SQLDeveloper中配置了三个连接:大数据开发(BIGDATA_DEV)、CO示例和SCOTT教学,分别用于不同场景。
文档特别强调了路径设置、权限分配等关键细节,为开发者提供了从零开始搭建Oracle开发环境的完整指南。
📋 完整操作流程:从零配置 Oracle 21c XE 开发环境
第一阶段:准备工作
1. 确认环境信息
Oracle 21c XE 已安装
PDB(可插拔数据库)名称:
XEPDB1SYSTEM 用户密码:安装时设置的密码
2. 打开终端(命令提示符)
按
Win + R,输入cmd,回车注意:不是在 SQL Developer 的编辑器中,而是在 Windows 的命令提示符中操作
第二阶段:连接数据库并创建表空间和用户
3. 用 SYSTEM 连接到 PDB
cmd
sqlplus system@localhost:1521/XEPDB1
输入 SYSTEM 密码,看到SQL>提示符表示成功。
4. 创建表空间(用于大数据开发用户)
sql
CREATE TABLESPACE bigdata_ts DATAFILE 'D:\APPDATA\DATABASE\ORADATA\XE\XEPDB1\bigdata01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M;
注意:路径需根据实际查询结果调整。可通过
SELECT name FROM v$datafile;查看正确路径。
5. 创建 BIGDATA_DEV 用户并授权
sql
CREATE USER bigdata_dev IDENTIFIED BY dev123 DEFAULT TABLESPACE bigdata_ts QUOTA UNLIMITED ON bigdata_ts; GRANT CONNECT, RESOURCE, CREATE SESSION, CREATE TABLE TO bigdata_dev;
6. 验证 BIGDATA_DEV 连接
cmd
sqlplus bigdata_dev/dev123@localhost:1521/XEPDB1
第三阶段:导入测试数据(100万行)
7. 在 BIGDATA_DEV 用户下创建 ORDERS 表并插入数据
sql
CREATE TABLE orders ( order_id NUMBER PRIMARY KEY, customer_id NUMBER, product_name VARCHAR2(100), order_amount NUMBER(10,2), order_date DATE, status VARCHAR2(20) ); BEGIN FOR i IN 1..1000000 LOOP INSERT INTO orders VALUES ( i, TRUNC(DBMS_RANDOM.VALUE(1, 10001)), 'Product_' || TRUNC(DBMS_RANDOM.VALUE(1, 501)), ROUND(DBMS_RANDOM.VALUE(10, 5001), 2), SYSDATE - TRUNC(DBMS_RANDOM.VALUE(1, 366)), CASE TRUNC(DBMS_RANDOM.VALUE(1, 4)) WHEN 1 THEN 'COMPLETED' WHEN 2 THEN 'PENDING' ELSE 'CANCELLED' END ); IF MOD(i, 10000) = 0 THEN COMMIT; END IF; END LOOP; COMMIT; END; /
8. 验证数据
sql
SELECT COUNT(*) FROM orders; -- 应返回 1000000
第四阶段:安装 CO 示例模式(现代业务模型)
9. 下载并解压示例脚本
从 GitHub 下载:
https://github.com/oracle-samples/db-sample-schemas/releases/latest解压到纯英文路径,如
D:\sample\db-sample-schemas-23.3
10. 安装 CO 模式
cmd
sqlplus system@localhost:1521/XEPDB1
sql
CREATE TABLESPACE co_data DATAFILE 'D:\APPDATA\DATABASE\ORADATA\XE\XEPDB1\co_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M;
切换到脚本目录(在 SQL*Plus 中):
sql
host cd /d D:\sample\db-sample-schemas-23.3\customer_orders @co_install.sql
按提示输入:
CO 用户密码:
co123默认表空间:
co_data临时表空间:
TEMP
11. 验证 CO 模式
cmd
sqlplus co/co123@localhost:1521/XEPDB1
sql
SELECT table_name FROM user_tables; -- 应显示 7 张表
第五阶段:安装 SCOTT 教学示例(经典 EMP/DEPT)
12. 手动创建 SCOTT 用户并导入数据
cmd
sqlplus system@localhost:1521/XEPDB1
sql
-- 删除已存在的 SCOTT 用户(如果有) DROP USER scott CASCADE; -- 创建 SCOTT 用户 CREATE USER scott IDENTIFIED BY tiger; GRANT CONNECT, RESOURCE, CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE TO scott; ALTER USER scott ACCOUNT UNLOCK; -- 退出并重新用 SCOTT 登录 EXIT
cmd
sqlplus scott/tiger@localhost:1521/XEPDB1
13. 创建表和插入数据
sql
CREATE TABLE DEPT ( DEPTNO NUMBER(2) PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13) ); CREATE TABLE EMP ( EMPNO NUMBER(4) PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) REFERENCES DEPT(DEPTNO) ); -- 插入 DEPT 数据 INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK'); INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS'); INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO'); INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON'); -- 插入 EMP 数据 INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, TO_DATE('1980-12-17', 'YYYY-MM-DD'), 800, NULL, 20); INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('1981-02-20', 'YYYY-MM-DD'), 1600, 300, 30); INSERT INTO EMP VALUES (7521, 'WARD', 'SALESMAN', 7698, TO_DATE('1981-02-22', 'YYYY-MM-DD'), 1250, 500, 30); INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER', 7839, TO_DATE('1981-04-02', 'YYYY-MM-DD'), 2975, NULL, 20); INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698, TO_DATE('1981-09-28', 'YYYY-MM-DD'), 1250, 1400, 30); INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839, TO_DATE('1981-05-01', 'YYYY-MM-DD'), 2850, NULL, 30); INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839, TO_DATE('1981-06-09', 'YYYY-MM-DD'), 2450, NULL, 10); INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566, TO_DATE('1987-07-13', 'YYYY-MM-DD'), 3000, NULL, 20); INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL, TO_DATE('1981-11-17', 'YYYY-MM-DD'), 5000, NULL, 10); INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698, TO_DATE('1981-09-08', 'YYYY-MM-DD'), 1500, 0, 30); INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788, TO_DATE('1987-07-13', 'YYYY-MM-DD'), 1100, NULL, 20); INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698, TO_DATE('1981-12-03', 'YYYY-MM-DD'), 950, NULL, 30); INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566, TO_DATE('1981-12-03', 'YYYY-MM-DD'), 3000, NULL, 20); INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782, TO_DATE('1982-01-23', 'YYYY-MM-DD'), 1300, NULL, 10); -- 创建 SALGRADE 表 CREATE TABLE SALGRADE (GRADE NUMBER, LOSAL NUMBER, HISAL NUMBER); INSERT INTO SALGRADE VALUES (1, 700, 1200); INSERT INTO SALGRADE VALUES (2, 1201, 1400); INSERT INTO SALGRADE VALUES (3, 1401, 2000); INSERT INTO SALGRADE VALUES (4, 2001, 3000); INSERT INTO SALGRADE VALUES (5, 3001, 9999); -- 创建 BONUS 表 CREATE TABLE BONUS (ENAME VARCHAR2(10), JOB VARCHAR2(9), SAL NUMBER, COMM NUMBER); COMMIT;14. 验证 SCOTT 用户
sql
SELECT COUNT(*) FROM EMP; -- 应返回 14 SELECT COUNT(*) FROM DEPT; -- 应返回 4
第六阶段:在 SQL Developer 中配置连接
15.新建三个连接
| 连接名 | 用户名 | 密码 | 服务名 |
|---|---|---|---|
大数据开发 | bigdata_dev | dev123 | XEPDB1 |
CO示例 | co | co123 | XEPDB1 |
SCOTT教学 | scott | tiger | XEPDB1 |
📊 最终环境总览
| 用户 | 表/数据量 | 用途 |
|---|---|---|
BIGDATA_DEV | ORDERS(100万行) | 大数据量性能测试 |
CO | 7张关联表(数千行) | 现代业务模型练习 |
SCOTT | EMP(14行)、DEPT(4行)等 | 跟着教学视频练习 |
💡 关键避坑点
| 问题 | 原因 | 解决方法 |
|---|---|---|
ORA-65096 | 在 CDB 中创建普通用户 | 切换到 PDB:ALTER SESSION SET CONTAINER = XEPDB1 |
ORA-00959表空间不存在 | 数据文件路径错误 | 先用SELECT name FROM v$datafile;确认路径 |
ORA-00942表不存在 | CONNECT BY权限问题 | 改用 PL/SQL 块插入数据 |
SP2-0310无法打开文件 | 在 Windows 命令行而不是 SQL*Plus 中执行 | 确保提示符是SQL> |
ORA-01017密码无效 | SCOTT 用户未创建或密码错误 | DROP USER scott CASCADE;后重建 |
这份记录涵盖了从零开始配置 Oracle 21c XE 大数据开发环境的完整流程。