SQL> CREATE TABLESPACE sf1 DATAFILE 'sf1.dbf' SIZE 40M ONLINE;
Tablespace created.
SQL> CREATE TABLESPACE sf2 DATAFILE 'sf2.dbf' SIZE 40M ONLINE;
Tablespace created.
SQL> CREATE TABLESPACE sf3 DATAFILE 'sf3.dbf' SIZE 40M ONLINE;
Tablespace created
SQL> CREATE TABLE part_sales_tab_mv(time_id, cust_id, sum_dollar_sales, sum_unit_sale)
2 PARALLEL PARTITION BY RANGE (time_id)
3 (PARTITION month1
4 VALUES LESS THAN (TO_DATE('31-12-1998', 'DD-MM-YYYY'))
5 PCTFREE 0 PCTUSED 99
6 STORAGE (INITIAL 64k NEXT 16k PCTINCREASE 0)
7 TABLESPACE sf1,
8 PARTITION month2
9 VALUES LESS THAN (TO_DATE('31-12-1999', 'DD-MM-YYYY'))
10 PCTFREE 0 PCTUSED 99
11 STORAGE (INITIAL 64k NEXT 16k PCTINCREASE 0)
12 TABLESPACE sf2,
13 PARTITION month3
14 VALUES LESS THAN (TO_DATE('31-12-2000', 'DD-MM-YYYY'))
15 PCTFREE 0 PCTUSED 99
16 STORAGE (INITIAL 64k NEXT 16k PCTINCREASE 0)
17 TABLESPACE sf3) AS
18 SELECT s.time_id, s.cust_id, SUM(s.amount_sold) AS sum_dollar_sales
19 SUM(s.quantity_sold) AS sum_unit_sales
20 FROM sales s GROUP BY s.time_id, s.cust_id;
CREATE TABLE part_sales_tab_mv(time_id, cust_id, sum_dollar_sales, sum_unit_
sale)
第1行的错误:ORA-12801:在并行查询服务器P000 ORA-14400中发出错误信号:插入的分区键未映射到任何分区
我正在oracle 10g上的sh schema的sales表上执行这个查询 . plz帮我解决错误 . 查询的问题如下:
按照指示对预构建的表part_sales_tab_mv进行分区:
-
创建一个包含三个月分区的表part_sales_tab_mv
-
注册物化视图以使用预构建表 . 此物化视图必须符合查询重写的条件
1 回答
您正在创建三个分区:
month1
包括截至1998-12-30 23:59:59的任何日期month2
包括1998-12-31 00:00:00和1999-12-30 23:59:59之间的任何日期month3
包括1999-12-31 00:00:00和2000-12-30 23:59:59之间的任何日期你在评论中说你有1998年1月到2001年12月的数据 . 这个数据跨越四年,你有三年的分区(差不多,因为你的界限已经过了一天);所以从2001年,或者实际上从2000年到12月31日,数据无处可去 . 这就是错误告诉你的 .
从第一个要求看,您需要一个区间范围分区表,其中每个分区覆盖三个月;不是三个分区,每个分区必须覆盖16个月以适应所有数据 . 或者16个固定分区,每个三个月 - 一个间隔范围稍后会更灵活,但您的导师可能期望固定分区 .