oracle之具有引用分区的直接路径插入

不点 阅读:15 2024-11-01 17:39:52 评论:0

如何使用直接路径插入将数据快速加载到具有引用分区的表中?直接路径插入不适用于启用的外键,并且不能禁用引用分区表的外键。

SQL> create table parent_table(a number primary key) 
  2  partition by range(a) (partition p1 values less than (1)); 
 
Table created. 
 
SQL> create table child_table(a number not null 
  2     ,constraint child_table_fk foreign key (a) references parent_table(a)) 
  3  partition by reference (child_table_fk); 
 
Table created. 
 
SQL> alter table child_table disable constraint child_table_fk; 
alter table child_table disable constraint child_table_fk 
* 
ERROR at line 1: 
ORA-14650: operation not supported for reference-partitioned tables 

请您参考如下方法:

不需要禁用外键。即使 the documentation,直接路径插入也适用于引用分区暗示它不应该。

下面的 LOAD AS SELECT 操作演示了使用直接路径插入:

explain plan for insert /*+ append */ into child_table select 1 from dual; 
 
select * from table(dbms_xplan.display(format => 'basic')); 
 
Plan hash value: 2781518217 
 
-------------------------------------------------------- 
| Id  | Operation                        | Name        | 
-------------------------------------------------------- 
|   0 | INSERT STATEMENT                 |             | 
|   1 |  LOAD AS SELECT                  | CHILD_TABLE | 
|   2 |   OPTIMIZER STATISTICS GATHERING |             | 
|   3 |    FAST DUAL                     |             | 
-------------------------------------------------------- 

如果直接路径插入不适用于引用分区,那是因为许多其他限制之一,例如触发器、不同的外键、可延迟约束等。


标签:oracle
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号