我们正在研究一些基于Open Jpa 2.2与Oracle相交的遗留代码。该代码自动发出如下语句:
analyze table x compute statitics
我们希望避免这种情况,因为我们不希望发生这种情况。这可能吗?如果是,怎么办?
最佳答案
DBMS_STATS.LOCK_TABLE_STATS可以防止收集统计信息。
--Create sample table.
create table x(a number);
--To gather stats: unlock stats, gather stats, then lock stats.
begin
dbms_stats.unlock_table_stats(user, 'X');
dbms_stats.gather_table_stats(user, 'X');
dbms_stats.lock_table_stats(user, 'X');
end;
/
--Any session that tries to gather stats without unlocking gets an exception.
analyze table x compute statistics;
ORA-38029: object statistics are locked
更新
这是一个JDBC错误:
Bug 4999817 : WHEN THE LAST FLAG TO GETINDEXINFO() IS TRUE, IT SHOULD NOT ANALYZE THE TABLE.
它已在11g中修复,并且有针对10g的补丁程序。您需要一个Oracle支持帐户来阅读该bug的全部详细信息,但是您已经了解了其中的大部分内容。