返回数说广场
1
以下哪些操作会导致随后执行select count(object_id) from demo.t1; 时会发生硬解析
comment on table demo.t1 is '';-----------
truncate table demo.t1;----------
alter table demo.t1 modify(owner varchar2(20));-----------
exec dbms_stats.gather_table_stats('DEMO','T1',no_invalidate=>false);-----------
delete from demo.t1;
alter system set deferred_segment_creation=false;---------
答案解析
1、收集统计信息会导致游标失效,但可能不会立即失效。而收集统计信息时,加上on_invalidate=>false的选项,会立即失效相关游标。
2、目标表上的DDL操作,也会导致游标立即失效。所以,alter table demo.t1 modify(owner varchar2(20));comment on table demo.t1 is '';truncate table demo.t1;都是DDL操作,而且都是对T1表上的DDL操作。
3、alter system set deferred_segment_creation=false;是修改系统参数,这会导致优化器的工作环境发生改变。当再次执行相关SQL时,会因为OPTIMIZER_MISMATCH的原因,导致原子游标不能共享,从而发生硬解析,重新生成相关执行计划。
4、delete from demo.t1;是DML操作,不会导致后续再次执行目标SQL时,发生硬解析的行为。
0
1 203
分享
评论
热门数说


