收集一些 Oracle 表的统计信息需要很长时间。这些表的记录数从 200 万条记录到 900 万条记录不等。这些表中的每一个都有大约 5-6 个索引。
甲骨文版本是
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
"CORE 10.2.0.1.0 Production"
TNS for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Productio
NLSRTL Version 10.2.0.1.0 - Production
收集统计数据语法是
dbms_stats.gather_table_stats('OWNER', 'TABLE_NAME', estimate_percent => 100, method_opt => 'for all columns size auto', cascade => true);
我们无法更改上述收集统计命令的参数,因为应用程序供应商坚持使用这些参数。
请让我知道我们是否可以做些什么来减少收集统计作业所花费的时间。我注意到 JOB 在运行时会导致应用程序性能下降一点,这是不可接受的。
我还注意到一些表在磁盘上占用了大量空间,但实际数据(通过估计记录数乘以平均行长度)要少得多。看起来表格需要压缩/缩小/高水位线重置等。
例如,某些表在磁盘上占用 9 GB,但实际数据显示为 1.2 GB。. . 碎片化浪费了近 70% 的空间。
ALTER TABLE Shrink 会减少收集表上的统计信息所花费的总时间吗?推荐吗?