本文详细介绍了Oracle21cXE开发环境的完整配置流程,包括五个关键阶段:
- 准备工作确认环境信息;
- 连接数据库并创建表空间和用户;
- 导入100万行测试数据;
- 安装CO现代业务示例模式;
- 安装SCOTT经典教学示例。
每个步骤都提供了具体的SQL命令和验证方法,并标注了常见错误及解决方法。
最终在SQLDeveloper中配置了三个连接:大数据开发(BIGDATA_DEV)、CO示例和SCOTT教学,分别用于不同场景。
文档特别强调了路径设置、权限分配等关键细节,为开发者提供了从零开始搭建Oracle开发环境的完整指南。
📋 完整操作流程:从零配置 Oracle 21c XE 开发环境
第一阶段:准备工作
1. 确认环境信息
-
Oracle 21c XE 已安装
-
PDB(可插拔数据库)名称:
XEPDB1 -
SYSTEM 用户密码:安装时设置的密码
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 大数据开发环境的完整流程。