DELETE_INDEX_STATS プロシージャは、インデックス関連の統計情報を削除するために使用されます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供します。
構文
DBMS_STATS.DELETE_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE,
tabname VARCHAR2 DEFAULT NULL);
パラメータ説明
パラメータ |
説明 |
|---|---|
| ownname | ユーザー名。ユーザー名が NULL に設定されている場合、現在ログインしているユーザー名がデフォルトで使用されます。 |
| indname | インデックス名。 |
| partname | パーティション名。 |
| cascade_parts | インデックスがパーティション化されており、かつ partname が NULL の場合、このパラメータを TRUE に設定すると、すべての基盤パーティションからそのインデックスの統計情報を削除します。デフォルトは TRUE です。 |
| no_invalidate | 統計情報収集時にPlan Cacheをフラッシュするかどうか。TRUE に設定すると、統計情報収集時にPlan Cacheをフラッシュしません。 |
| force | 強制的に削除し、ロック状態を無視するかどうか。デフォルトは FALSE です。TRUE に設定すると、インデックス統計情報がロックされていても削除されます。 |
| tabname | テーブル名。 |
例外
エラーコード |
説明 |
|---|---|
| OBE-20000 | 対象が存在しないか、権限が不足しています。 |
| OBE-20005 | 対象の統計情報がロックされています。 |
使用方法
このプロシージャを呼び出すには、テーブル所有者である必要があります。SYS テナント内のオブジェクトに対しては、テーブル所有者または SYSDBA 権限が必要です。
例
ユーザー testUser01 のテーブル tbl1 のインデックス idx1 のすべての統計情報を削除します。
obclient> CALL DBMS_STATS.DELETE_INDEX_STATS('testUser01', 'idx1', 'tbl1');
Query OK, 0 rows affected
説明
OceanBaseデータベースのOracleモードでは、インデックスは現在のユーザーに対して一意であるため、tabnameを指定する必要はありません。しかし、MySQLモードではインデックスが現在のユーザーに対して一意ではないため、テーブル名を明示的に指定する必要があります。