本文介绍了在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 连接数据库进行数据分析。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐