SET_TABLE_STATS プロシージャは、テーブルレベルの基本統計情報を設定します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
DBMS_STATS.SET_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL,
avgrlen NUMBER DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE);
パラメータ説明
パラメータ |
説明 |
|---|---|
| ownname | ユーザー名。ユーザー名を NULL に設定した場合、デフォルトで現在ログインしているユーザー名が使用されます。 |
| tabname | テーブル名。 |
| partname | 統計情報を格納するテーブルのパーティション名です。テーブルがパーティション化されており、かつ partname が NULL の場合、統計情報はグローバルなテーブルレベルに保存されます。 |
| numrows | テーブルレベルの総行数。 |
| numblks | テーブルレベルで使用されているブロック数。 |
| avgrlen | 列レベルの平均長(バイト単位)。 |
| no_invalidate | 統計情報収集時にPlan Cacheをフラッシュするかどうかを指定します。TRUE に設定すると、統計情報収集時にPlan Cacheをフラッシュしません。 |
| force | ロック状態を無視して強制的に統計情報を収集するかどうかを指定します。デフォルトは FALSE です。TRUE に設定すると、統計情報がロックされていても収集されます。 |
例外状況
エラーコード |
説明 |
|---|---|
| OBE-20000 | オブジェクトが存在しないか、権限が不足しています。 |
| OBE-20001 | 無効または一貫性のない入力値です。 |
| OBE-20005 | このオブジェクトの統計情報がロックされています。 |
使用方法
このプロシージャを呼び出すには、テーブル所有者である必要があります。
SYSが所有するオブジェクトを使用する場合は、テーブル所有者またはSYSDBA権限が必要です。オプティマイザーは、キャッシュされたデータを用いてインデックスや統計テーブルへのアクセスにおけるキャッシュブロック数を推定します。操作の総コストには、キャッシュされていないブロックをディスクから読み取るI/Oコスト、バッファからキャッシュブロックを取得するCPUコスト、およびデータを処理するCPUコストが含まれます。
TRUEおよびFALSEを値とするパラメータについては、BEGIN ... ENDブロック内でこのプロシージャを実行する必要があります。
例
ユーザー testUser01 のテーブル tbl1 の総行数を1万行に設定します。
obclient> BEGIN
DBMS_STATS.SET_TABLE_STATS('testUser01', 'tbl1', numrows=>10000, force=>FALSE, no_invalidate=>FALSE);
END;
Query OK, 0 rows affected