【ORACLE】锁定某些表,不收集统计信息

Oracle 11g Performance Tuning Guide 文档中,关于管理优化器统计信息,介绍了通过Locking Statistics for a Table or Schema,可以锁定那些不需要频繁收集统计信息的对象,

当然,如果需要重新收集这些对象的统计信息, 需要先解除锁定。

为了确保SQL执行效率,建议在确认执行计划正确性时,使用HINT指定使用合适的索引方式。

 使用DBMS_STATS.LOCK_TABLE_STATS锁定相关统计信息,语句为: EXECUTE DBMS_STATS.LOCK_TABLE_STATS ('owner name', 'table name');

查询锁定状态:SELECT table_name, stattype_locked FROM dba_tab_statistics where owner in ('table_owner1', 'table_owner2') order by 2;

解锁表的统计信息: EXECUTE DBMS_STATS.UNLOCK_TABLE_STATS ('owner name','table name');

当锁定表的统计信息后,这个表相关的对象的统计信息也被锁定,比如列信息、直方图、索引的统计信息。

在锁定前,请选择在适当的时间对表的统计信息进行收集,并确认当前的统计信息是合适的。

执行以上调整时,强烈建议严格测试和实时监控。

更多DBMS_STATS.LOCK_TABLE_STATS信息可以参考:

Preserving Statistics using DBMS_STATS.LOCK_TABLE_STATS [ID 283890.1]

FAQ: Automatic Statistics Collection Jobs (10g and 11g) [ID 1233203.1]

猜你喜欢

转载自www.cnblogs.com/CL-learning/p/12793928.html