本文介绍了在Windows环境下搭建Oracle大数据开发基础环境的完整流程,分为4个阶段:1)切换到XEPDB1容器;
2)创建开发用户bigdata_dev并授权;
3)创建订单表并插入100万测试数据;
4)执行4个典型分析SQL验证环境。
关键步骤包括确认数据文件路径、创建表空间、配置用户权限,并通过PL/SQL批量生成测试数据。
完成所有步骤后,即可进行SQL优化、PL/SQL编程等大数据开发练习。
每个阶段都提供了验证标准,确保环境配置正确。
搭建大数据开发的基础环境
从“SQL Developer安装好了,Oracle 21c XE 数据库已连接”这个状态开始,以下是按正确顺序需要完成的全部操作,帮助你在 Windows 环境下搭建好大数据开发的基础环境。
整个流程分为4 个阶段,请按顺序执行:
📋 总览
| 阶段 | 目标 | 核心任务 | 关键验证点 |
|---|---|---|---|
| 阶段一 | 切换到正确的容器 | ALTER SESSION SET CONTAINER = XEPDB1 | SHOW CON_NAME显示XEPDB1 |
| 阶段二 | 创建开发用户 | 表空间 → 用户 → 授权 | bigdata_dev能登录 |
| 阶段三 | 导入测试数据 | 创建orders表,插入 100 万行数据 | SELECT COUNT(*)返回1000000 |
| 阶段四 | 验证分析查询 | 执行 4 个典型分析 SQL | 每个查询正常返回结果 |
🔧 阶段一:切换到正确的容器(PDB)
原因:Oracle 12c 及以上采用多租户架构,业务用户必须在PDB(可插拔数据库)中创建,而不是 CDB 根容器。
sql
-- 1. 查看当前容器(应该是 CDB$ROOT) SHOW CON_NAME; -- 2. 切换到 XE 版本自带的 PDB 容器 ALTER SESSION SET CONTAINER = XEPDB1; -- 3. 确认切换成功(应显示 XEPDB1) SHOW CON_NAME;
✅验证标准:SHOW CON_NAME显示XEPDB1
👤 阶段二:创建专属开发用户
原因:大数据开发不应使用system管理员账号,需要创建有独立权限的普通用户。
第 1 步:确认数据文件路径
sql
-- 查询现有数据文件路径,确定你的数据库文件存放在哪里 SELECT name FROM v$datafile;
记录下路径,例如:D:\APPDATA\DATABASE\ORADATA\XE\XEPDB1\SYSTEM01.DBF→ 目录是D:\APPDATA\DATABASE\ORADATA\XE\XEPDB1\
第 2 步:创建表空间
sql
-- 使用上一步查到的正确路径 CREATE TABLESPACE bigdata_ts DATAFILE 'D:\APPDATA\DATABASE\ORADATA\XE\XEPDB1\BIGDATA01.DBF' SIZE 500M AUTOEXTEND ON NEXT 100M;
第 3 步:创建用户
sql
CREATE USER bigdata_dev IDENTIFIED BY dev123 DEFAULT TABLESPACE bigdata_ts QUOTA UNLIMITED ON bigdata_ts;
第 4 步:授予权限
sql
GRANT CONNECT, RESOURCE, CREATE SESSION, CREATE TABLE TO bigdata_dev;
第 5 步:用新用户测试连接(重要!)
在 SQL Developer 中新建连接:
| 配置项 | 填写内容 |
|---|---|
| 用户名 | bigdata_dev |
| 密码 | dev123 |
| 主机名 | localhost |
| 端口 | 1521 |
| 服务名 | XEPDB1(⚠️ 不是XE) |
✅验证标准:点击“测试”显示“成功”
📊 阶段三:导入测试数据
原因:为了练习大数据分析,需要一张有足够数据量的业务表。
第 1 步:创建订单表
sql
DROP TABLE orders PURGE; -- 如果之前创建过,先删除 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) );
第 2 步:插入 100 万行测试数据
sql
-- 使用 PL/SQL 块生成数据(比 CONNECT BY 更稳定) BEGIN FOR i IN 1..1000000 LOOP INSERT INTO orders (order_id, customer_id, product_name, order_amount, order_date, status) 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 ); -- 每 1 万行提交一次 IF MOD(i, 10000) = 0 THEN COMMIT; END IF; END LOOP; COMMIT; END; /
第 3 步:验证数据
sql
-- 应该返回 1000000 SELECT COUNT(*) FROM orders; -- 查看前 10 行示例 SELECT * FROM orders WHERE ROWNUM <= 10;
✅验证标准:COUNT(*)返回1000000
📈 阶段四:执行分析查询验证
原因:确认环境可用于大数据分析场景。
依次执行以下 4 个 SQL:
查询 1:月度销售趋势
sql
SELECT TO_CHAR(order_date, 'YYYY-MM') AS month, COUNT(*) AS order_count, SUM(order_amount) AS total_amount, AVG(order_amount) AS avg_amount FROM orders GROUP BY TO_CHAR(order_date, 'YYYY-MM') ORDER BY month DESC;
查询 2:产品销售额 TOP 10
sql
SELECT product_name, COUNT(*) AS sales_count, SUM(order_amount) AS total_revenue FROM orders WHERE status = 'COMPLETED' GROUP BY product_name ORDER BY total_revenue DESC FETCH FIRST 10 ROWS ONLY;
查询 3:客户价值分层
sql
SELECT customer_id, COUNT(*) AS order_frequency, MAX(order_date) AS last_order_date, SUM(order_amount) AS total_spent, CASE WHEN SUM(order_amount) > 100000 THEN 'VIP' WHEN SUM(order_amount) > 50000 THEN 'Gold' WHEN SUM(order_amount) > 10000 THEN 'Silver' ELSE 'Bronze' END AS customer_tier FROM orders GROUP BY customer_id ORDER BY total_spent DESC FETCH FIRST 20 ROWS ONLY;
查询 4:订单状态占比
sql
SELECT status, COUNT(*) AS order_count, ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2) AS percentage, SUM(order_amount) AS total_amount FROM orders GROUP BY status ORDER BY order_count DESC;
✅验证标准:每个查询都正常返回结果,无报错
📋 完整操作清单(可打印对照)
| 步骤 | 操作 | 状态 |
|---|---|---|
| 1 | ALTER SESSION SET CONTAINER = XEPDB1 | ☐ |
| 2 | SELECT name FROM v$datafile确认路径 | ☐ |
| 3 | CREATE TABLESPACE bigdata_ts... | ☐ |
| 4 | CREATE USER bigdata_dev... | ☐ |
| 5 | GRANT CONNECT, RESOURCE... | ☐ |
| 6 | 用bigdata_dev新建连接测试 | ☐ |
| 7 | CREATE TABLE orders... | ☐ |
| 8 | 执行 PL/SQL 块插入 100 万行数据 | ☐ |
| 9 | SELECT COUNT(*) FROM orders验证 | ☐ |
| 10 | 执行 4 个分析查询验证 | ☐ |
完成以上 10 步后,你的 Oracle 21c XE 环境就完全准备好用于大数据开发练习了。
接下来可以学习 SQL 优化、PL/SQL 编程,或者用 Spark/Python 连接数据库进行数据分析。