11.2.0.4
在SQL Reference里面描述direct insert 的限制:
The target table cannot have any triggers or referential integrity constraints
defined on it
在这里实验了一下:
create table t as select * from dba_objects where 1=2;
insert/*+APPEND*/ into scott.t select * from dba_objects;
在这里观察是否是direct insert:
select n.NAME, s.VALUE
from v$sesstat s, v$statname n
where n.STATISTIC# = s.STATISTIC#
and n.NAME in ('physical writes direct')
and s.SID = 40;
1 physical writes direct 2466
在表上添加外键
create table t_type as select distinct object_type from dba_objects;
alter table scott.t add constraint f FOREIGN key (object_type) references scott.t_type (object_type);
然后再执行,查询physical writes direct并没有变。
insert/*+APPEND*/ into scott.t select * from dba_objects;
在这里说明,如果表上有trigger或者外键,即使加了append也不会执行direct path insert