LOCK_TABLE_STATS プロシージャは、テーブルの統計情報をロックするために使用されます。
構文
DBMS_STATS.LOCK_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
stattype VARCHAR2 DEFAULT 'ALL');
パラメータの説明
| パラメータ | 説明 |
|---|---|
| ownname | ユーザー名。ユーザー名をNULLに設定した場合、デフォルトで現在ログインしているユーザー名が使用されます。 |
| tabname | テーブル名。 |
| stattype | ロックのタイプ。一般的に以下の3種類のロックタイプが含まれます:
|
使用方法
このプロシージャを呼び出すには、テーブルの所有者である必要があります。
SYSが所有するオブジェクトについては、テーブルの所有者またはSYSDBA権限を持っている必要があります。テーブルの統計情報がロックされると、そのテーブルに依存するすべての統計情報もロックされます。これには、テーブルレベルの統計情報、列レベルの統計情報、ヒストグラム統計情報、およびすべてのインデックスに依存する統計情報が含まれます。
オブジェクトの統計情報がロックされている場合、
SET_*、DELETE_*、IMPORT_*、GATHER_*プロシージャを実行して個々のテーブル、インデックス、または列の統計情報を変更しようとするとエラーが発生します。EXPORT_*_STATSプロシージャを呼び出す際、ロックまたはアンロック状態はテーブルレベルの統計情報と一緒にエクスポートされません。UNLOCK_SCHEMA_STATSプロシージャとUNLOCK_TABLE_STATSプロシージャのいずれも、対応するパーティションの統計情報をアンロックすることはできません。LOCK_TABLE_STATSプロシージャを呼び出すと、テーブルレベルでロック位置が設定されます。この時点で、パーティションやインデックスなどの依存オブジェクトに関する統計情報を収集することはできません。また、テーブルレベルの統計情報がロックされている場合、その依存関係もロックされるため、パーティションの統計情報をロックするために明示的にLOCK_PARTITION_STATSプロシージャを呼び出す必要はありません。
例
ユーザー testUser01 の下にあるテーブル t1 のテーブルレベルの統計情報をロックします。
obclient> CALL DBMS_STATS.LOCK_TABLE_STATS ('testUser01', 't1');
Query OK, 0 rows affected