对于数据量不稳定的表,如夜间大批量delete或truncate后统计信息不准,重建表后,统计信息也一并删除了,
如何避免这种情况对相关表的执行计划发生影响,可以考虑锁定表的统计信息。
exec dbms_stats.lock_table_stats('username','tablename');
锁定后,在drop表后也会一样会删除统计信息。
在alter table t1 add ( col1 int)后,统计信息不变,与是否锁定也没关系。
在锁定后,如果再收集其统计信息,会报错:
ORA-20005: object statistics are locked (stattype = ALL)
解锁后可以再收集: exec dbms_stats.unlock_table_stats('username','tablename');