一部の 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);
上記の collect stats コマンドのパラメーターを変更することはできません。これは、アプリケーション ベンダーがこれらのパラメーターを使用することを主張しているためです。
Gather Statistics JOB にかかる時間を短縮するために何かできることがあれば教えてください。JOB を実行すると、アプリのパフォーマンスが少し低下することに気付きました。これは受け入れられません。
また、一部のテーブルがディスク上で多くのスペースを占有していることにも気付きましたが、実際のデータは (レコード数に平均行長を掛けて見積もることにより) はるかに少なくなります。テーブルを圧縮/縮小/ハイ ウォーター マークのリセットなどを行う必要があるようです。
たとえば、一部のテーブルはディスク上で 9 GB を占有しますが、実際のデータは 1.2 GB と表示されます。. . フラグメンテーションでほぼ 70% のスペースが浪費されます。
ALTER TABLE Shrink を使用すると、テーブルの統計を収集するのにかかる全体の時間が短縮されますか? おすすめですか?