DBMS_STATSシステムパッケージには、統計情報を削除するための4つの関連PROCEDUREが提供されています。具体的には以下の通りです:
DELETE_TABLE_STATS:テーブルレベルの統計情報を削除します。DELETE_COLUMN_STATS:列レベルの統計情報を削除します。DELETE_SCHEMA_STATS:スキーマ内のすべてのテーブルの統計情報を削除します。DELETE_INDEX_STATS:インデックスの統計情報を削除します。
# ユーザーTESTのテーブルT1のすべての統計情報を削除する
call dbms_stats.delete_table_stats('TEST', 'T1');
# ユーザーTESTのテーブルT1のC1列の統計情報を削除する
call dbms_stats.delete_column_stats('TEST', 'T1', 'C1');
# ユーザーTESTのすべてのテーブルの統計情報を削除する
call dbms_stats.delete_schema_stats('TEST');
# ユーザーTESTのインデックスIDXの統計情報を削除する
call dbms_stats.delete_schema_stats('TEST', 'IDX');
現在、DBMS_STATSシステムパッケージによる統計情報の設定は、テーブルレベルの行数/平均行長/マクロブロック数/マイクロブロック数、列レベルのNDV/NULL数/平均列長のみをサポートしており、ヒストグラムなどの他のプロパティについてはまだ設定できません。関連するPROCEDUREは3つあります。
SET_TABLE_STATS:テーブルレベルの統計情報を設定します。SET_COLUMN_STATS:列レベルの統計情報を設定します。SET_INDEX_STATS:インデックスの統計情報を設定します。
# ユーザーTESTのテーブルT1の総行数を1万行に設定する
call dbms_stats.set_table_stats('TEST', 'T1', numrows=>10000);
# ユーザーTESTのテーブルT1のC1列のNDVを10、NULL数を10に設定する
call dbms_stats.set_column_stats('TEST', 'T1', 'C1', distcnt=>10, nullcnt=>10);
# ユーザーTESTのインデックスIDXの総行数を1万行に設定する
call dbms_stats.set_table_stats('TEST', 'IDX', numrows=>10000);