ORACLE锁定某些表,不收集统计信息
Posted cl-learning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]
以上是关于ORACLE锁定某些表,不收集统计信息的主要内容,如果未能解决你的问题,请参考以下文章