DBMS_STATSパッケージを使用すると、データベース・オブジェクト用に収集したオプティマイザの統計情報を表示および変更できます。
|
関連項目: 『Oracle Databaseパフォーマンス・チューニング・ガイド』 |
この章では、次の項目について説明します。
概要
タイプ
定数
使用上の注意
推奨されないサブプログラム
例
この項では、DBMS_STATSパッケージの使用に関連する項目について説明します。
Oracle RDBMSでは、パフォーマンス向上のために使用できる様々な統計情報を収集できます。このパッケージは、オプティマイザ統計情報にのみ関連しています。Oracleでは、これらの統計情報の自動収集がデフォルトに設定されているため、このパッケージは特別な場合にのみ使用されます。
表示または変更対象の統計情報は、この目的のためにユーザーのスキーマに作成したディクショナリや表に常駐させることができます。また、このパッケージを使用して、表およびドメイン索引に関するユーザー定義の統計情報を収集および管理できます。
たとえば、関連性が定義されている列に対してDELETE_COLUMN_STATSプロシージャが起動されると、標準的な統計情報に加え、その列にあるユーザー定義の統計情報も削除されます。
コストベースのオプティマイザに影響を与える統計情報は、ディクショナリに格納されている統計情報のみです。また、DBMS_STATSを使用して、並列的に統計情報を収集できます。
|
関連項目: オプティマイザ統計情報の管理の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
最小値と最大値およびヒストグラム終点のタイプは、次のとおりです。
TYPE numarray IS VARRAY(256) OF NUMBER; TYPE datearray IS VARRAY(256) OF DATE; TYPE chararray IS VARRAY(256) OF VARCHAR2(4000); TYPE rawarray IS VARRAY(256) OF RAW(2000); TYPE fltarray IS VARRAY(256) OF BINARY_FLOAT; TYPE dblarray IS VARRAY(256) OF BINARY_DOUBLE; TYPE StatRec IS RECORD ( epc NUMBER, minval RAW(2000), maxval RAW(2000), bkvals NUMARRAY, novals NUMARRAY);
失効した表のリストのタイプは、次のとおりです。
TYPE ObjectElem IS RECORD ( ownname VARCHAR2(30), -- owner objtype VARCHAR2(6), -- 'TABLE' or 'INDEX' objname VARCHAR2(30), -- table/index partname VARCHAR2(30), -- partition subpartname VARCHAR2(30), -- subpartition confidence NUMBER); -- not used type ObjectTab is TABLE of ObjectElem;
自動サンプル・サイズのアルゴリズムを使用することを示すために、次の定数が使用されます。
AUTO_SAMPLE_SIZE CONSTANT NUMBER;
システムにおける初期化パラメータに基づいてデフォルトの並列度を判別するために、次の定数が使用されます。
DEFAULT_DEGREE CONSTANT NUMBER;
Oracleでは次の定数を使用すると、オブジェクトのサイズ、CPU数および初期化パラメータを基に並列度を選択できます。
AUTO_DEGREE CONSTANT NUMBER;
次の定数を使用すると、索引の統計情報を収集するかどうかを選択できます。
AUTO_CASCADE CONSTANT BOOLEAN;
次の定数を使用すると、依存カーソルを無効化する時機を決定できます。
AUTO_INVALIDATE CONSTANT BOOLEAN
DBMS_STATSサブプログラムでは、次に示す一般的な操作を実行します。
ほとんどのDBMS_STATSプロシージャには、statown、stattabおよびstatidの3つのパラメータが含まれています。これらのパラメータによって、ユーザーはオプティマイザに影響を与えない自分自身の表(ディクショナリ外)に統計情報を格納できます。したがって、ユーザーは統計情報のセットをメンテナンスおよび試用することができます。
stattabパラメータで、統計情報を保持する表の名前を指定します。この表は、(statownパラメータが指定されていないかぎり)統計情報が収集されるオブジェクトと同じスキーマ内に常駐しているとみなされます。異なるstattab識別子で複数の表を作成し、統計情報セットを別々に保持できます。
さらに、statidパラメータを使用して1つのstattab内で複数の統計情報セットをメンテナンスできるため、ユーザーのスキーマが混乱するのを回避できます。
SETおよびGETプロシージャについて、stattabが準備されていない場合(つまり、NULLの場合)、操作はディクショナリにある統計情報に対して直接行われます。したがって、ディクショナリを直接変更する場合は、統計表の作成は不要です。ただし、stattabがNULLでない場合、SETまたはGET操作は、指定したユーザー統計表に対して行われ、ディクショナリに対しては行われません。
SET_PARAMプロシージャを使用して、DBMS_STATSプロシージャのいくつかのパラメータのデフォルト値を変更できます。
このパッケージのほとんどのプロシージャは、現行のトランザクションをコミットし、操作を実行してから再度コミットします。
ほとんどのプロシージャには、統計情報のすべてのロックを無効にできるforceパラメータがあります。ディクショナリの統計情報が変更されると、古いバージョンの統計情報が将来のリストアに備えて自動的に保存されます。
オプティマイザ統計情報の収集
次のサブプログラムを使用して、特定のクラスのオプティマイザ統計情報を収集し、ANALYZEコマンドの潜在的なパフォーマンスを向上させます。
GATHER_*プロシージャは、列およびドメイン索引に関するユーザー定義の統計情報も収集します。
statown、stattabおよびstatidの各パラメータは、パッケージに対して、新規の統計情報を収集する前に、指定した表内の現行の統計情報をバックアップするように指示します。
関連オブジェクトに十分な統計情報がある場合、導出オブジェクトの統計情報を生成するために、Oracleは次のプロシージャも提供します。
統計情報の設定または取得
次のサブプログラムを使用して、個別の列、索引および表に関連する統計情報を格納および取り出します。
ユーザー定義の統計情報を設定する特別バージョンのSET_*_STATSプロシージャでは、次の情報(提供された場合)がディレクトリまたは外部統計表に格納されます。
ユーザー定義の統計情報(extstats)
統計タイプのスキーマ名(statsschema)
統計タイプ名(statsname)
ユーザー定義の統計情報と対応する統計タイプは、USTATS$ディクショナリ表に挿入されます。ユーザー定義の統計情報は、統計タイプ名の指定なしに指定できます。
特別バージョンのGET_*_STATSプロシージャは、ユーザー定義の統計情報および統計タイプの所有者と名前を、指定したスキーマ・オブジェクトに対応するOUT引数として戻します。ユーザー定義の統計情報が収集されていない場合は、NULL値が戻ります。
統計情報の削除
DELETE_*プロシージャは、ユーザー定義の統計情報と、指定したスキーマ・オブジェクトに関する標準的な統計情報の両方を削除します。
統計情報の転送
次のプロシージャを使用して、ユーザー統計表を作成および削除します。
次のプロシージャを使用して、統計情報を転送します。
ディクショナリからユーザー統計表への転送(EXPORT_*)
ユーザー統計表からディクショナリへの転送(IMPORT_*)
統計情報のロックまたはロック解除
オブジェクトの統計情報をロックおよびロック解除するには、次のプロシージャを使用します。
LOCK_*プロシージャは、統計情報の現在のセットをアクセス制限するか、統計情報を空(未収集)のままにします。表の統計情報がロックされている場合、表統計情報、列統計情報、ヒストグラムおよび統計情報など、すべての依存索引に関する情報も含めて、表に依存するすべての統計情報はロックされているとみなされます。
統計履歴のリストアおよびパージ
指定したタイムスタンプの統計情報をリストアするには、次のプロシージャを使用します。これは、新しく収集された統計情報によって準最適な実行計画がいくつか実現される場合や、管理者の要望により統計情報を以前のセットに戻す必要がある場合に有効です。
ディクショナリの統計情報が変更されると、古いバージョンの統計情報が将来のリストアに備えて自動的に保存されます。古い統計情報は、統計履歴のリテンション設定とシステムで実行された最新の統計情報収集の時間に基づいて、一定の周期で自動的にパージされます。ALTER_STATS_HISTORY_RETENTIONプロシージャを使用して、リテンションを設定できます。
この他、DBMS_STATSプロシージャで統計情報のリストアに関連するものには、次のものがあります。
PURGE_STATSプロシージャ: このプロシージャでは、タイムスタンプに関係なく古いバージョンを手動でパージできます。
GET_STATS_HISTORY_RETENTIONファンクション: このファンクションは、現在の統計履歴のリテンション値を取得します。
GET_STATS_HISTORY_AVAILABILITYファンクション: このファンクションは、統計履歴を使用できる最も古いタイムスタンプを取得します。ユーザーが統計情報をリストアする場合、最も古いタイムスタンプよりさらに前のタイムスタンプにはできません。
RESTORE_*操作は、ユーザー定義の統計情報ではサポートされていません。
ユーザー定義の統計情報
DBMS_STATSパッケージは、ユーザー定義の統計情報に関する操作をサポートしています。ドメイン索引または列が(associateを使用して)統計タイプに関連付けられている場合は、索引または列に関する操作によって、ユーザー定義の統計情報が操作されます。たとえば、GET_INDEX_STATSプロシージャを使用して(統計タイプに関連付けられている)ドメイン索引の統計情報を収集すると、関連付けられている統計タイプに対応するユーザー定義の統計情報収集メソッドが起動されます。同様に、削除、転送、インポートおよびエクスポートの各操作によって、ユーザー定義の統計情報が操作されます。
ユーザー定義の統計情報に対するSET_*およびGET_*操作も、列および索引に対する特別バージョンのSETおよびGETインタフェースを使用してサポートされます。
EXPORT_*、IMPORT_*およびRESTORE_*操作は、ユーザー定義の統計情報ではサポートされていません。
次のサブプログラムは、リリース10g では廃止されました。
以前のリリースでは、これらのサブプログラムを使用して動作を監視するDMLを変更できました。現在、こうした操作はOracleで自動的に行われるため、これらのサブプログラムを実行できません。
元の統計情報の保存と新規統計情報の収集
employees表から最後に統計情報が収集された後、数多くの変更が加えられたと想定します。コストベースのオプティマイザが最適プランを選択するために、統計情報を再度収集する必要があります。しかし、ユーザーは、現行のプランが許容されると、新規の統計情報によってオプティマイザが誤ったプランを選択することを懸念しています。ユーザーは、次のように指定できます。
BEGIN
DBMS_STATS.CREATE_STAT_TABLE ('hr', 'savestats');
DBMS_STATS.GATHER_TABLE_STATS ('hr', 'employees', stattab => 'savestats');
END;
この操作は、新規の統計情報をemployees表に収集しますが、最初に、元の統計情報をユーザー統計表hr.savestatsに保存します。
ユーザーが、新規統計情報によってオプティマイザが誤ったプランを生成すると考えている場合は、元の統計情報を次のようにリストアできます。
BEGIN
DBMS_STATS.DELETE_TABLE_STATS ('hr', 'employees');
DBMS_STATS.IMPORT_TABLE_STATS ('hr', 'employees', stattab => 'savestats');
END;
日中のシステム統計情報の収集
昼間OLTPトランザクションを処理するデータベース・アプリケーションを実行し、夜間にレポートを実行すると想定します。
昼間のシステムの統計情報を収集するには、720分間情報を収集します。収集した統計情報をMYSTATS表に格納します。
BEGIN
DBMS_STATS.GATHER_SYSTEM_STATS (
interval => 720,
stattab => 'mystats',
statid => 'OLTP');
END;
夜間のシステムの統計情報を収集するには、720分間情報を収集します。収集した統計情報をMYSTATS表に格納します。
BEGIN
DBMS_STATS.GATHER_SYSTEM_STATS (
interval => 720,
stattab => 'mystats',
statid => 'OLAP');
END;
収集した統計情報を使用して、ディクショナリを更新します。
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT (:jobno, 'DBMS_STATS.IMPORT_SYSTEM_STATS
(''mystats'',''OLTP'');'
sysdate, 'sysdate + 1');
COMMIT;
END;
BEGIN
DBMS_JOB.SUBMIT (:jobno, 'DBMS_STATS.IMPORT_SYSTEM_STATS
(''mystats'',''OLAP'');'
sysdate + 0.5, 'sysdate + 1');
COMMIT;
END;
表103-1 DBMS_STATSパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
ALTER_DATABASE_TAB_MONITORINGプロシージャ |
データベースにおけるすべての表の機能を監視するDMLを使用可能または使用禁止にします。ただし、スナップショット・ログおよび表では監視がサポートされていないため対象外です(「推奨されないサブプログラム」を参照)。 |
|
ALTER_SCHEMA_TAB_MONITORINGプロシージャ |
スキーマにおけるすべての表の機能を監視するDMLを使用可能または使用禁止にします。ただし、スナップショット・ログおよび表では監視がサポートされていないため対象外です(「推奨されないサブプログラム」を参照)。 |
|
ALTER_STATS_HISTORY_RETENTIONプロシージャ |
統計履歴のリテンション値を変更します。 |
|
|
最大値または最小値の内部表記を、データ型固有の値に変換します。 |
|
CONVERT_RAW_VALUE_NVARCHARプロシージャ |
最大値または最小値の内部表記を、データ型固有の値に変換します。 |
|
|
最大値または最小値の内部表記を、データ型固有の値に変換します。 |
|
|
統計情報を保持できるownnameのスキーマに |
|
|
列に関連する統計情報を削除します。 |
|
|
データベース全体に関する統計情報を削除します。 |
|
|
すべてのディクショナリのスキーマ(' |
|
DELETE_FIXED_OBJECTS_STATSプロシージャ |
すべての固定表の統計情報を削除します。 |
|
|
索引に関連する統計情報を削除します。 |
|
|
スキーマに関連する統計情報を削除します。 |
|
|
システムの統計情報を削除します。 |
|
|
表に関連する統計情報を削除します。 |
|
|
|
|
|
特定の列に関する統計情報を取り出し、 |
|
|
データベース内のすべてのオブジェクトに関する統計情報を取り出し、 |
|
|
すべてのディクショナリのスキーマ(' |
|
EXPORT_FIXED_OBJECTS_STATSプロシージャ |
固定表に関する統計情報を取り出し、 |
|
|
特定の索引に関する統計情報を取り出し、 |
|
|
ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報を取り出し、 |
|
|
システムの統計情報を取り出し、ユーザー統計表に格納します。 |
|
|
特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。 |
|
FLUSH_DATABASE_MONITORING_INFOプロシージャ |
メモリー内のすべての表の監視情報をディクショナリにフラッシュします。 |
|
|
データベース内のすべてのオブジェクトに関する統計情報を収集します。 |
|
|
ディクショナリのスキーマ(' |
|
GATHER_FIXED_OBJECTS_STATSプロシージャ |
固定オブジェクトの統計情報を収集します。 |
|
|
索引の統計情報を収集します。 |
|
|
スキーマ内のすべてのオブジェクトに関する統計情報を収集します。 |
|
|
システムの統計情報を収集します。 |
|
|
表と列(および索引)の統計情報を収集します。 |
|
|
関連するオブジェクトに関して以前に収集した統計情報から、オブジェクトの統計情報を生成します。 |
|
|
列に関連するすべての情報を取得します。 |
|
|
索引に関連するすべての情報を取得します。 |
|
|
|
|
GET_STATS_HISTORY_AVAILABILITYファンクション |
統計履歴を使用できる最も古いタイムスタンプを取得します。 |
|
GET_STATS_HISTORY_RETENTIONファンクション |
現在のリテンション値を戻します。 |
|
|
stattab(stattabが |
|
|
表に関連するすべての情報を取得します。 |
|
|
|
|
|
データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。 |
|
|
すべてのディクショナリのスキーマ(' |
|
IMPORT_FIXED_OBJECTS_STATSプロシージャ |
|
|
|
|
|
|
|
|
|
ユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。 |
|
|
|
|
|
スキーマのすべての表の統計情報をロックします。 |
|
|
表の統計情報をロックします。 |
|
|
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ型固有の値を、SET_COLUMN_STATSプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
PREPARE_COLUMN_VALUES_NVARCHAR2プロシージャ |
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ型固有の値を、SET_COLUMN_STATSプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
PREPARE_COLUMN_VALUES_ROWIDプロシージャ |
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ型固有の値を、SET_COLUMN_STATSプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
|
ディクショナリに保存されている統計情報の古いバージョンをパージします。 |
|
|
すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。 |
|
|
データベースのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
RESTORE_DICTIONARY_STATSプロシージャ |
すべてのディクショナリ表(' |
|
RESTORE_FIXED_OBJECTS_STATSプロシージャ |
すべての固定表の統計情報を、指定したタイムスタンプでリストアします。 |
|
|
スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
|
スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
|
指定したタイムスタンプ(as_of_timestamp)で、表の統計情報、および関連する索引と列の統計情報をリストアします。 |
|
|
列に関連する情報を設定します。 |
|
|
索引に関連する情報を設定します。 |
|
|
|
|
|
システムの統計情報を設定します。 |
|
|
表に関連する情報を設定します。 |
|
|
スキーマ内にあるすべての表の統計情報をロック解除します。 |
|
|
表の統計情報をロック解除します。 |
|
|
古い表のユーザー統計情報をアップグレードします。 |
このプロシージャは、スキーマにおけるすべての表の機能を監視するDMLを使用可能または使用禁止にします。ただし、スナップショット・ログおよび表では監視がサポートされていないので対象外です。このプロシージャは、ALTER TABLE...MONITORING(またはNOMONITORING)を個別に発行するのと同等です。
構文
DBMS_STATS.ALTER_DATABASE_TAB_MONITORING ( monitoring BOOLEAN DEFAULT TRUE, sysobjs BOOLEAN DEFAULT FALSE);
パラメータ
表103-2 ALTER_DATABASE_TAB_MONITORINGプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
TRUEの場合は監視を使用可能にし、FALSEの場合は監視を使用禁止にします。 |
|
|
TRUEの場合、ディクショナリ・オブジェクトの監視を変更します。 |
例外
ORA-20000: 権限が不十分です。
このプロシージャは、スキーマにおけるすべての表の機能を監視するDMLを使用可能または使用禁止にします。ただし、スナップショット・ログおよび表では監視がサポートされていないので対象外です。このプロシージャは、ALTER TABLE...MONITORING(またはNOMONITORING)を個別に発行するのと同等です。
構文
DBMS_STATS.ALTER_SCHEMA_TAB_MONITORING ( ownname VARCHAR2 DEFAULT NULL, monitoring BOOLEAN DEFAULT TRUE);
パラメータ
表103-3 ALTER_SCHEMA_TAB_MONITORINGプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前( |
|
|
|
使用上の注意
GATHER_DATABASE_STATSまたはGATHER_SCHEMA_STATSをGATHER AUTOまたはGATHER STALEオプションとともに使用する場合は、監視機能を使用可能にしてください。
例外
ORA-20000: 権限が不十分です。
このプロシージャは、統計履歴のリテンション値を変更します。統計履歴リテンションは、自動パージおよびPURGE_STATSプロシージャで使用します。
構文
DBMS_STATS.ALTER_STATS_HISTORY_RETENTION ( retention IN NUMBER);
パラメータ
表103-4 ALTER_STATS_HISTORY_RETENTIONプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リテンション期間を日数で指定します。少なくとも指定された期間は、統計履歴が保持されます。有効範囲は1から365000です。また、次の値を特定の目的に使用できます。
|
使用上の注意
このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
例外
ORA-20000: 権限が不十分です。
このプロシージャは、最大値または最小値の内部表記をデータ型固有の値に変換します。GET_COLUMN_STATSまたはPREPARE_COLUMN_VALUESで入力されたStatRec構造のminvalフィールドとmaxvalフィールドの値が、有効な入力値です。
構文
DBMS_STATS.CONVERT_RAW_VALUE ( rawval RAW, resval OUT BINARY_FLOAT); DBMS_STATS.CONVERT_RAW_VALUE ( rawval RAW, resval OUT BINARY_DOUBLE); DBMS_STATS.CONVERT_RAW_VALUE ( rawval RAW, resval OUT DATE); DBMS_STATS.CONVERT_RAW_VALUE ( rawval RAW, resval OUT NUMBER); DBMS_STATS.CONVERT_RAW_VALUE ( rawval RAW, resval OUT VARCHAR2);
プラグマ
pragma restrict_references(convert_raw_value, WNDS, RNDS, WNPS, RNPS);
パラメータ
表103-5 CONVERT_RAW_VALUEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列最大または列最小のデータ型固有の出力パラメータのRAW型表記。 |
|
|
変換済の型固有の値。 |
このプロシージャは、最大値または最小値の内部表記をデータ型固有の値に変換します。GET_COLUMN_STATSまたはPREPARE_COLUMN_VALUESで入力されたStatRec構造のminvalフィールドとmaxvalフィールドの値が、有効な入力値です。
構文
DBMS_STATS.CONVERT_RAW_VALUE_NVARCHAR ( rawval RAW, resval OUT NVARCHAR2);
プラグマ
pragma restrict_references(convert_raw_value_nvarchar, WNDS, RNDS, WNPS, RNPS);
パラメータ
表103-6 CONVERT_RAW_VALUE_NVARCHARプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列最大または列最小のデータ型固有の出力パラメータのRAW型表記。 |
|
|
変換済の型固有の値。 |
このプロシージャは、最大値または最小値の内部表記をデータ型固有の値に変換します。GET_COLUMN_STATSまたはPREPARE_COLUMN_VALUESで入力されたStatRec構造のminvalフィールドとmaxvalフィールドの値が、有効な入力値です。
構文
DBMS_STATS.CONVERT_RAW_VALUE_ROWID ( rawval RAW, resval OUT ROWID);
プラグマ
pragma restrict_references(convert_raw_value_rowid, WNDS, RNDS, WNPS, RNPS);
パラメータ
表103-7 CONVERT_RAW_VALUE_ROWIDプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列最大または列最小のデータ型固有の出力パラメータのRAW型表記。 |
|
|
変換済の型固有の値。 |
このプロシージャは、統計情報を保持できるownnameのスキーマにあるstattabの名前で表を作成します。この表は、このパッケージのプロシージャを介して単独にアクセスされるため、この表を構成する列と型は互いに関係がありません。
構文
DBMS_STATS.CREATE_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2, tblspace VARCHAR2 DEFAULT NULL);
パラメータ
表103-8 CREATE_STAT_TABLEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
作成する表の名前。ユーザーがディクショナリ統計情報を直接変更しない場合、この値は、 |
|
|
統計表を作成する表領域。このパラメータを指定しないと、統計表はユーザーのデフォルトの表領域に作成されます。 |
例外
ORA-20000: 表がすでに存在するか、権限が不十分です。
ORA-20001: 表領域が存在しません
このプロシージャは、列に関連する統計情報を削除します。
構文
DBMS_STATS.DELETE_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-9 DELETE_COLUMN_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
列の名前。 |
|
|
統計情報を削除する表パーティションの名前。表がパーティション化されていて、 |
|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
表がパーティション化されていて、 |
|
|
|
|
|
|
|
|
この引数の値が |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、データベース内のすべての表に関する統計情報を削除します。
構文
DBMS_STATS.DELETE_DATABASE_STATS (
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-10 DELETE_DATABASE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
この引数の値が |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を削除します。
構文
DBMS_STATS.DELETE_DICTIONARY_STATS (
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-11 DELETE_DICTIONARY_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
この引数の値が |
使用上の注意
このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、すべての固定表の統計情報を削除します。
構文
DBMS_STATS.DELETE_FIXED_OBJECTS_STATS (
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-12 DELETE_FIXED_OBJECTS_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
現在の統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
stattab内の統計情報を関連付ける識別子(オプション)。これは、 |
|
|
|
|
|
|
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。
例外
ORA-20000: 権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、索引に関連する統計情報を削除します。
構文
DBMS_STATS.DELETE_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-13 DELETE_INDEX_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
索引の名前。 |
|
|
統計情報を削除する索引パーティションの名前。索引がパーティション化されていて、 |
|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
索引がパーティション化されていて、 |
|
|
|
|
|
|
|
|
この引数の値が |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、スキーマ全体の統計情報を削除します。
構文
DBMS_STATS.DELETE_SCHEMA_STATS (
ownname VARCHAR2,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-14 DELETE_SCHEMA_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
この引数の値が |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、ワークロードの統計情報('INTERVAL'か、'START'と'STOP'の両方のオプションを使用して収集)を削除します。stattabが指定されていない場合は、デフォルトのnoworkloadの統計情報('NOWORKLOAD'オプションを使用して収集)にリセットします。stattabが指定されている場合、サブプログラムは、関連するstatidとともにすべてのシステム統計情報をstattabから削除します。
構文
DBMS_STATS.DELETE_SYSTEM_STATS ( stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-15 DELETE_SYSTEM_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報が保存されるユーザー統計表の識別子。 |
|
|
stattabに保存された統計情報に関連付けられた、オプションの識別子。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、表に関連する統計情報を削除します。
構文
DBMS_STATS.DELETE_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
cascade_columns BOOLEAN DEFAULT TRUE,
cascade_indexes BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-16 DELETE_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
統計情報を取得する表パーティションの名前。表がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
表がパーティション化されていて、 |
|
|
基礎となるすべての列について、 |
|
|
基礎となるすべての索引について、 |
|
|
|
|
|
|
|
|
この引数の値が |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、ユーザー統計表を削除します。
構文
DBMS_STATS.DROP_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2);
パラメータ
例外
ORA-20000: 表が存在しないか、権限が不十分です。
このプロシージャは、特定の列に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-18 EXPORT_COLUMN_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
列の名前。 |
|
|
表パーティション名。表がパーティション化されていて、 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報を取り出し、statown.stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_DATABASE_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-19 EXPORT_DATABASE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_DICTIONARY_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-20 EXPORT_DICTIONARY_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBAか、ANALYZE ANY DICTIONARYとANALYZE ANYのシステム権限が必要です。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、固定表に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_FIXED_OBJECTS_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-21 EXPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、特定の索引に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-22 EXPORT_INDEX_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
索引の名前。 |
|
|
索引パーティション名。索引がパーティション化されていて、 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_SCHEMA_STATS ( ownname VARCHAR2, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-23 EXPORT_SCHEMA_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、システムの統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-24 EXPORT_SYSTEM_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を格納する場所を記述したユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003: システムの統計情報をエクスポートできません。
このプロシージャは、特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。cascadeを使用すると、指定した表に関連付けられている索引および列統計情報もすべてエクスポートされます。
構文
DBMS_STATS.EXPORT_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, cascade BOOLEAN DEFAULT TRUE, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-25 EXPORT_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
表の名前。 |
|
|
表パーティション名。表がパーティション化されていて、 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
TRUEの場合は、この表の列と索引の統計情報もまたエクスポートされます。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
このプロシージャは、メモリー内のすべての表の監視情報をディクショナリにフラッシュします。*_TAB_MODIFICATIONS、*_TAB_STATISTICSおよび*_IND_STATISTICSビュー内の対応するエントリは、Oracleデータベースによる定期的なフラッシュを待たずに、ただちに更新されます。こうしたビューで最新の情報が必要な場合は、このプロシージャが有効です。GATHER_*_STATSプロシージャの内部処理で監視情報は自動的にフラッシュされるため、統計情報の収集前にこのプロシージャを実行する必要はありません。
構文
DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
例外
ORA-20000: 権限が不十分です。
このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報を収集します。
構文
DBMS_STATS.GATHER_DATABASE_STATS (
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
gather_sys BOOLEAN DEFAULT TRUE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')));
DBMS_STATS.GATHER_DATABASE_STATS (
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
statown VARCHAR2 DEFAULT NULL,
gather_sys BOOLEAN DEFAULT TRUE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')));
パラメータ
表103-26 GATHER_DATABASE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
推定する行のパーセント( |
|
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
|
次を受け入れます。
size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。 - integer: ヒストグラム・バケット数。 1から254の範囲です。- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
|
並列度。 |
|
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
|
|
|
索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、データベース内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 統計表は、分析するオブジェクトと同じスキーマに常駐するとみなされるので、各スキーマにこのオプションを使用するための表が1つ必要です。 |
|
|
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
|
|
|
|
使用上の注意
外部表に関する統計情報は、このプロシージャでは収集されません。
例外
ORA-20000: 権限が不十分です。
ORA-20001: 入力値が無効です。
このプロシージャは、ディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を収集します。
構文
DBMS_STATS.GATHER_DICTIONARY_STATS (
comp_id VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER AUTO',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')));
DBMS_STATS.GATHER_DICTIONARY_STATS (
comp_id VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT
to_estimate_percent_type(GET_PARAM('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT GET_PARAM('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(GET_PARAM('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(GET_PARAM('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER AUTO',
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT
to_no_invalidate_type(get_param('NO_INVALIDATE')));
パラメータ
表103-27 GATHER_DICTIONARY_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析するスキーマのコンポーネントID( |
|
|
推定する行のパーセント( |
|
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。 |
|
|
次を受け入れます。
size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。 - integer: ヒストグラム・バケット数。 1から254の範囲です。- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
|
並列度。 |
|
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
|
|
|
索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
例外
ORA-20000: 索引が存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、すべての固定オブジェクト(動的パフォーマンス表)に関する統計情報を収集します。
構文
DBMS_STATS.GATHER_FIXED_OBJECTS_STATS (
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')));
パラメータ
表103-28 GATHER_FIXED_OBJECTS_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。
例外
ORA-20000: 権限が不十分です。
ORA-20001: 入力値が無効です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、索引の統計情報を収集します。このプロシージャは、可能なかぎり多くの作業をパラレル化します。個々のパラメータで説明するように、いくつかの制限があります。この操作では、クラスタ索引、ドメイン索引、ビットマップ・ジョイン・インデックスなど、特定タイプの索引でのパラレル化は行いません。granularity引数およびno_invalidate引数は、これらのタイプの索引とは関係がありません。
構文
DBMS_STATS.GATHER_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(GET_PARAM('ESTIMATE_PERCENT')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-29 GATHER_INDEX_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析する索引のスキーマ。 |
|
|
索引の名前。 |
|
|
パーティションの名前。 |
|
|
推定する行のパーセント( |
|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
並列度。 |
|
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
|
|
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
例外
ORA-20000: 索引が存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です。
このプロシージャは、スキーマ内のすべてのオブジェクトに関する統計情報を収集します。
構文
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE'),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-30 GATHER_SCHEMA_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析するスキーマ( |
|
|
推定する行のパーセント( |
|
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
|
次を受け入れます。
size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。 - integer: ヒストグラム・バケット数。 1から254の範囲です。- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
|
並列度。 |
|
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
|
|
|
索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
使用上の注意
auto_sample_size定数を使用すると、DBMS_STATS.GATHER_SCHEMA_STATSは、パーティション化された複数の表に対してそれぞれ異なるサンプリング・レートを生成します。DBMS_STATSでは、各種の統計用に適切なサンプル・サイズを決定します。このサイズは、表または列ごとに(パーティション化されていればパーティションごとにも)異なります。約5000行を取得するサンプリング・レートから開始して、統計用の方程式に基づいて結果を調べます。満足できる結果が得られなかった場合は、サンプリング・レートを増やしてこのプロセスを繰り返します。
通常は、個別値の数を列に取得する統計では、他の場合よりもサンプリング・レートを高く設定する必要があります。これは特に、個別値の発生回数が少ない場合に当てはまります。
サンプリングのパーセント指定に特定の値を使用できますが、次の場合は、DBMS_STATSでその値が有効ではなくなります。
結果が2500行未満の場合(サンプルとしてはデータ量が非常に少ない)。
指定のパーセントが特定のパーセントを超えた場合。
外部表に関する統計情報は、このプロシージャでは収集されません。
例外
ORA-20000: スキーマが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です。
このプロシージャは、システムの統計情報を収集します。
構文
DBMS_STATS.GATHER_SYSTEM_STATS ( gathering_mode VARCHAR2 DEFAULT 'NOWORKLOAD', interval INTEGER DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-31 GATHER_SYSTEM_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モードの値は、次のとおりです。
|
|
|
統計情報を収集する時間(分単位)。このパラメータが適用されるのは、 |
|
|
統計情報が保存されるユーザー統計表の識別子。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003: システムの統計情報を収集できません。
ORA-20004: INTERVALモードでエラーが発生しました。システム・パラメータjob_queue_processes>0である必要があります。
このプロシージャは、表と列(および索引)の統計情報を収集します。このプロシージャは、可能なかぎり多くの作業をパラレル化しますが、個々のパラメータで説明するように、いくつかの制限があります。
構文
DBMS_STATS.GATHER_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-32 GATHER_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
分析する表のスキーマ。 |
|
|
表の名前。 |
|
|
パーティションの名前。 |
|
|
推定する行のパーセント( |
|
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
|
次を受け入れます。
size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。 - integer: ヒストグラム・バケット数。 1から254の範囲です。- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
|
並列度。 |
|
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
|
|
|
表の索引について統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
ロックされている場合でも、表の統計情報を収集します。 |
使用上の注意
分析する表に対するSELECT権限がユーザーにない場合、この操作はパラレル化しません。
例外
ORA-20000: 表が存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です。
このプロシージャは、関連するオブジェクトで以前に収集した統計情報から、オブジェクトの統計情報を生成します。現在サポートされているオブジェクトは、Bツリー索引とビットマップ索引です。
構文
DBMS_STATS.GENERATE_STATS ( ownname VARCHAR2, objname VARCHAR2, organized NUMBER DEFAULT 7);
パラメータ
表103-33 GENERATE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
オブジェクトのスキーマ。 |
|
|
オブジェクトの名前。 |
|
|
索引とその基礎となる表の間で関連付けられた順位付けの量。複雑に編成されている索引には、ディスク上の連続行を参照する連続索引キーがその表(同じブロック)に対してあります。複雑に編成されていない索引には、ディスク上の異なる表ブロックを参照する連続キーがあります。 このパラメータは、Bツリー索引に対してのみ使用します。数値は、0から10の範囲で使用でき、0(ゼロ)は完全に編成された索引、10は完全に編成解除された索引を示します。 |
使用上の注意
完全に移入されたスキーマについては、より正確な統計情報が必要な場合は、GATHERプロシージャをかわりに使用する必要があります。
例外
ORA-20000: サポートされていないオブジェクト・タイプで、オブジェクトは存在しません。
ORA-20001: 無効なオプションまたは無効な統計情報です。
このプロシージャは、列に関連するすべての情報を取得します。ユーザー定義の統計情報を処理するこのプロシージャのフォームでは、戻される統計情報のタイプは、ユーザー定義の統計情報に加え、格納されるタイプでもあります。
構文
DBMS_STATS.GET_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, distcnt OUT NUMBER, density OUT NUMBER, nullcnt OUT NUMBER, srec OUT StatRec, avgclen OUT NUMBER, statown VARCHAR2 DEFAULT NULL);
ユーザー定義統計情報には、次の構文を使用します。
DBMS_STATS.GET_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, ext_stats OUT RAW, stattypown OUT VARCHAR2 DEFAULT NULL, stattypname OUT VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-34 GET_COLUMN_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
列の名前。 |
|
|
統計情報を取得する表パーティションの名前。表がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
ユーザー定義の統計情報。 |
|
|
統計タイプのスキーマ。 |
|
|
統計タイプの名前。 |
|
|
個別値の数。 |
|
|
列密度。 |
|
|
|
|
|
列最大、列最小およびヒストグラム値の内部表記を保持する構造。 |
|
|
列の平均長(バイト単位)。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。
このプロシージャは、索引に関連するすべての情報を取得します。ユーザー定義の統計情報を処理するこのプロシージャのフォームでは、戻される統計情報のタイプは、ユーザー定義の統計情報に加え、格納されるタイプでもあります。
構文
DBMS_STATS.GET_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, numrows OUT NUMBER, numlblks OUT NUMBER, numdist OUT NUMBER, avglblk OUT NUMBER, avgdblk OUT NUMBER, clstfct OUT NUMBER, indlevel OUT NUMBER, statown VARCHAR2 DEFAULT NULL, cachedblk OUT NUMBER, cachehit OUT NUMBER); DBMS_STATS.GET_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, numrows OUT NUMBER, numlblks OUT NUMBER, numdist OUT NUMBER, avglblk OUT NUMBER, avgdblk OUT NUMBER, clstfct OUT NUMBER, indlevel OUT NUMBER, statown VARCHAR2 DEFAULT NULL, guessq OUT NUMBER, cachedblk OUT NUMBER, cachehit OUT NUMBER);
ユーザー定義統計情報には、次の構文を使用します。
DBMS_STATS.GET_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, ext_stats OUT RAW, stattypown OUT VARCHAR2 DEFAULT NULL, stattypname OUT VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, cachedblk OUT NUMBER, cachehit OUT NUMBER);
パラメータ
表103-35 GET_INDEX_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
索引の名前。 |
|
|
統計情報を取得する索引パーティションの名前。索引がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
ユーザー定義の統計情報。 |
|
|
統計タイプのスキーマ。 |
|
|
統計タイプの名前。 |
|
|
索引(パーティション)内の行数。 |
|
|
索引(パーティション)内のリーフ・ブロックの数。 |
|
|
索引(パーティション)内の個別キーの数。 |
|
|
この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。 |
|
|
この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。 |
|
|
索引(パーティション)のクラスタ化要因。 |
|
|
索引(パーティション)の高さ。 |
|
|
|
|
|
索引の推測品質(パーティション)。 |
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
使用上の注意
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblkおよびcachehitを維持します。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、このワークロードに統計情報が適合するように調整します。他のマイナーなワークロードは無視されます。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
例外
ORA-20000: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。
このファンクションは、DBMS_STATSプロシージャのパラメータのデフォルト値を戻します。
構文
DBMS_STATS.GET_PARAM ( pname IN VARCHAR2) RETURN VARCHAR2;
パラメータ
例外
ORA-20001: 入力値が無効です
このファンクションは、統計履歴を使用できる最も古いタイムスタンプを戻します。ユーザーは、この値よりも古いタイムスタンプで統計情報をリストアできません。
構文
DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY RETURN TIMESTAMP WITH TIMEZONE;
このファンクションは、現在のリテンション値を戻します。
構文
DBMS_STATS.GET_STATS_HISTORY_RETENTION RETURN NUMBER;
このプロシージャは、stattab(stattabがNULLの場合はディクショナリ)からシステムの統計情報を取得します。
構文
DBMS_STATS.GET_SYSTEM_STATS ( status OUT VARCHAR2, dstart OUT DATE, dstop OUT DATE, pname VARCHAR2, pvalue OUT NUMBER, stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表103-37 GET_SYSTEM_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
出力は次のいずれかです。
|
|
|
統計情報の収集が開始された日付。
|
|
|
統計情報の収集が停止された日付。
|
|
|
取得するパラメータ名。次の値の1つが入ります。
|
|
|
取得するパラメータ値。 |
|
|
統計情報を取得するユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから取得されます。 |
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003: システムの統計情報を収集できません。
ORA-20004: パラメータが存在しません。
このプロシージャは、表に関連するすべての情報を取得します。
構文
DBMS_STATS.GET_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, numrows OUT NUMBER, numblks OUT NUMBER, avgrlen OUT NUMBER, statown VARCHAR2 DEFAULT NULL, cachedblk OUT NUMBER, cachehit OUT NUMBER);
パラメータ
表103-38 GET_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
統計情報を取得する表パーティションの名前。表がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
表(パーティション)内の行数。 |
|
|
表(パーティション)が占有するブロックの数。 |
|
|
表(パーティション)の行の平均長。 |
|
|
|
|
|
|
|
|
使用上の注意
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblkおよびcachehitを維持します。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、このワークロードに統計情報が適合するように調整します。他のマイナーなワークロードは無視されます。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
例外
ORA-20000: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。
このプロシージャは、stattabで識別されるユーザー統計表から特定の列に関する統計情報を取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-39 IMPORT_COLUMN_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
列の名前。 |
|
|
表のパーティションの名前。表がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_DATABASE_STATS (
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-40 IMPORT_DATABASE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
オブジェクト(表)のレベルでロックされている統計情報を上書きします。
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
このプロシージャは、すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_DICTIONARY_STATS (
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-41 IMPORT_DICTIONARY_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
オブジェクト(表)のレベルで統計情報のロックを無視します。
|
使用上の注意
このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、固定表に関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_FIXED_OBJECTS_STATS (
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-42 IMPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
統計情報のロックを無視します。
|
使用上の注意
このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
このプロシージャは、stattabで識別されるユーザー統計表から特定の索引に関する統計情報を取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-43 IMPORT_INDEX_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
索引の名前。 |
|
|
索引パーティション名。索引がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
索引の統計情報がロックされていても、統計情報をインポートします。 |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_SCHEMA_STATS (
ownname VARCHAR2,
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULTto_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-44 IMPORT_SCHEMA_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
|
|
|
オブジェクト(表)のレベルでロックされている統計情報を上書きします。
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
このプロシージャは、stattabで識別されるユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表103-45 IMPORT_SYSTEM_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報を取り出すユーザー統計表の識別子。 |
|
|
stattabから取り出された統計情報に関連付けられた、オプションの識別子。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003: システムの統計情報をエクスポートできません。
このプロシージャは、stattabで識別されるユーザー統計表から特定の表に関する統計情報を取り出し、ディクショナリに格納します。cascadeを使用すると、指定した表に関連付けられている索引および列統計情報もすべてインポートされます。
構文
DBMS_STATS.IMPORT_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
cascade BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-46 IMPORT_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
表の名前。 |
|
|
表パーティション名。表がパーティション化されていて、 |
|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
TRUEの場合は、この表の列と索引の統計情報もまたインポートされます。 |
|
|
|
|
|
|
|
|
表の統計情報がロックされていても、統計情報をインポートします。 |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: ユーザー統計表の値が無効または矛盾しています。
このプロシージャは、スキーマのすべての表の統計情報をロックします。
構文
DBMS_STATS.LOCK_SCHEMA_STATS ( ownname VARCHAR2);
パラメータ
使用上の注意
詳細は、「LOCK_TABLE_STATSプロシージャ」の「使用上の注意」を参照してください。
このプロシージャは、表の統計情報をロックします。
構文
DBMS_STATS.LOCK_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2);
パラメータ
使用上の注意
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
このプロシージャは、現在の統計情報セットを制限するか、または統計情報を空(未収集)のままにして、Dynamic Samplingを使用します。
EXPORT_*_STATSプロシージャを使用する場合、ロックまたはロック解除の状態は、表の統計情報とともにエクスポートされません。
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点のデータ型固有の値を、SET_COLUMN_STATSを使用して将来格納するためにOracleの内部表記に変換します。
構文
DBMS_STATS.PREPARE_COLUMN_VALUES ( srec IN OUT StatRec, charvals CHARARRAY); DBMS_STATS.PREPARE_COLUMN_VALUES ( srec IN OUT StatRec, datevals DATEARRAY); DBMS_STATS.PREPARE_COLUMN_VALUES ( srec IN OUT StatRec, dblvals DBLARRAY); DBMS_STATS.PREPARE_COLUMN_VALUES ( srec IN OUT StatRec, fltvals FLTARRAY); DBMS_STATS.PREPARE_COLUMN_VALUES ( srec IN OUT StatRec, numvals NUMARRAY); DBMS_STATS.PREPARE_COLUMN_VALUES ( srec IN OUT StatRec, rawvals RAWARRAY);
プラグマ
pragma restrict_references(prepare_column_values, WNDS, RNDS, WNPS, RNPS); pragma restrict_references(prepare_column_values_nvarchar, WNDS, RNDS, WNPS, RNPS); pragma restrict_references(prepare_column_values_rowid, WNDS, RNDS, WNPS, RNPS);
パラメータ
表103-49 PREPARE_COLUMN_VALUESプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
|
頻度分布が必要な場合、この配列には、 |
表103-50に、データ型固有の入力パラメータ(1つを使用)を示します。
表103-50 データ型固有の入力パラメータ
| タイプ | 説明 |
|---|---|
|
|
列の型が文字ベースの場合の値の配列。各文字列の最初の32バイトまでが使用されます。配列のエントリ数は、2から256の範囲内である必要があります。データ型が固定の |
|
|
列の型が日付ベースの場合の値の配列。 |
|
|
列の型がdoubleベースの場合の値の配列。 |
|
|
列の型がfloatベースの場合の値の配列。 |
|
|
列の型が数値ベースの場合の値の配列。 |
|
|
列の型が |
|
|
列の型が各国語キャラクタ・セット・ベースの場合の最大値と最小値。この型の列について、ヒストグラム情報は提供できません。データ型が固定の |
|
|
列タイプが |
出力パラメータ
表103-51 PREPARE_COLUMN_VALUESプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
例外
ORA-20001: 入力値が無効または矛盾しています。
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点のデータ型固有の値を、SET_COLUMN_STATSを使用して将来格納するためにOracleの内部表記に変換します。
構文
DBMS_STATS.PREPARE_COLUMN_VALUES_NVARCHAR2 ( srec IN OUT StatRec, nvmin NVARCHAR2, nvmax NVARCHAR2);
プラグマ
pragma restrict_references(prepare_column_values_nvarchar, WNDS, RNDS, WNPS, RNPS);
パラメータ
表103-52 PREPARE_COLUMN_VALUES_NVARCHAR2プロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
|
頻度分布が必要な場合、この配列には、 |
表103-53に、データ型固有の入力パラメータ(1つを使用)を示します。
表103-53 データ型固有の入力パラメータ
| 型 | 説明 |
|---|---|
|
|
列の型が各国語キャラクタ・セット・ベースの場合の最大値と最小値。この型の列について、ヒストグラム情報は提供できません。データ型が固定の |
出力パラメータ
表103-54 PREPARE_COLUMN_VALUES_NVARCHAR2プロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
例外
ORA-20001: 入力値が無効または矛盾しています。
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点のデータ型固有の値を、SET_COLUMN_STATSを使用して将来格納するためにOracleの内部表記に変換します。
構文
DBMS_STATS.PREPARE_COLUMN_VALUES_ROWID ( srec IN OUT StatRec, rwmin ROWID, rwmax ROWID);
プラグマ
pragma restrict_references(prepare_column_values_rowid, WNDS, RNDS, WNPS, RNPS);
パラメータ
表103-55 PREPARE_COLUMN_VALUES_ROWIDプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
|
頻度分布が必要な場合、この配列には、 |
表103-56に、データ型固有の入力パラメータ(1つを使用)を示します。
出力パラメータ
表103-57 PREPARE_COLUMN_VALUES_ROWIDプロシージャの出力パラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
例外
ORA-20001: 入力値が無効または矛盾しています。
このプロシージャは、ディクショナリに保存されている統計情報の古いバージョンをパージします。このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
構文
DBMS_STATS.PURGE_STATS(
before_timestamp TIMESTAMP WITH TIME ZONE);
パラメータ
表103-58 PURGE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
このタイムスタンプがパージされる前に保存された統計情報のバージョン。 |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
このプロシージャは、すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。
構文
DBMS_STATS.RESET_PARAM_DEFAULTS;
このプロシージャは、データベース内のすべての表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。
構文
DBMS_STATS.RESTORE_DATABSE_STATS(
as_of_timestamp TIMESTAMP WITH TIME ZONE,
force BOOLEAN DEFAULT FALSE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));
パラメータ
表103-59 RESTORE_DATABASE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報をリストアするタイムスタンプ。 |
|
|
統計情報は、ロックされていてもリストアされます。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。
このプロシージャは、すべてのディクショナリ表('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。
構文
DBMS_STATS.RESTORE_DICTIONARY_STATS(
as_of_timestamp TIMESTAMP WITH TIME ZONE,
force BOOLEAN DEFAULT FALSE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));
パラメータ
表103-60 RESTORE_DICTIONARY_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報をリストアするタイムスタンプ。 |
|
|
統計情報は、ロックされていてもリストアされます。 |
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。
このプロシージャは、すべての固定表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。
構文
DBMS_STATS.RESTORE_FIXED_OBJECTS_STATS(
as_of_timestamp TIMESTAMP WITH TIME ZONE,
force BOOLEAN DEFAULT FALSE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));
パラメータ
表103-61 RESTORE_FIXED_OBJECTS_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報をリストアするタイムスタンプ。 |
|
|
統計情報は、ロックされていてもリストアされます。 |
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。
このプロシージャは、スキーマ内のすべての表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。
構文
DBMS_STATS.RESTORE_SCHEMA_STATS(
ownname VARCHAR2,
as_of_timestamp TIMESTAMP WITH TIME ZONE,
force BOOLEAN DEFAULT FALSE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));
パラメータ
表103-62 RESTORE_SCHEMA_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報をリストアする表のスキーマ。 |
|
|
統計情報をリストアするタイムスタンプ。 |
|
|
統計情報は、ロックされていてもリストアされます。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。
このプロシージャは、システムの統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。
構文
DBMS_STATS.RESTORE_SCHEMA_STATS( as_of_timestamp TIMESTAMP WITH TIME ZONE);
パラメータ
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。
このプロシージャは、表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。このプロシージャは、索引および列に関連付けられた統計情報もリストアします。指定したタイムスタンプでの表の統計情報がロックされている場合、プロシージャはその統計情報をロックします。プロシージャは、ユーザー定義の統計情報をリストアしません。
構文
DBMS_STATS.RESTORE_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
as_of_timestamp TIMESTAMP WITH TIME ZONE,
restore_cluster_index BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));
パラメータ
表103-64 RESTORE_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
統計情報をリストアする表のスキーマ。 |
|
|
表の名前。 |
|
|
統計情報をリストアするタイムスタンプ。 |
|
|
表がクラスタの一部であるときに、このパラメータが |
|
|
統計情報は、表の統計情報がロックされていてもリストアされます。指定したタイムスタンプでの表の統計情報がロックされていない場合は、その統計情報をロック解除します。 |
|
|
|
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 値が無効または矛盾しています。
ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。
このプロシージャは、列に関連する情報を設定します。ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプがNULLの場合は、索引または列に関連付けられている統計タイプが格納されます。
構文
DBMS_STATS.SET_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
distcnt NUMBER DEFAULT NULL,
density NUMBER DEFAULT NULL,
nullcnt NUMBER DEFAULT NULL,
srec StatRec DEFAULT NULL,
avgclen NUMBER DEFAULT NULL,
flags NUMBER DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
ユーザー定義統計情報には、次の構文を使用します。
DBMS_STATS.SET_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
ext_stats RAW,
stattypown VARCHAR2 DEFAULT NULL,
stattypname VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-65 SET_COLUMN_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
列が所属している表の名前。 |
|
|
列の名前。 |
|
|
統計情報を格納する表パーティションの名前。表がパーティション化されていて、 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
ユーザー定義の統計情報。 |
|
|
統計タイプのスキーマ。 |
|
|
統計タイプの名前。 |
|
|
個別値の数。 |
|
|
列密度。この値が |
|
|
|
|
|
|
|
|
列の平均長(バイト単位)。 |
|
|
Oracle内部で使用( |
|
|
|
|
|
|
|
|
列の統計情報がロックされている場合でも、この値を設定します。 |
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効または矛盾しています。
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、索引に関連する情報を設定します。ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプがNULLの場合は、索引または列に関連付けられている統計タイプが格納されます。
構文
DBMS_STATS.SET_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numlblks NUMBER DEFAULT NULL,
numdist NUMBER DEFAULT NULL,
avglblk NUMBER DEFAULT NULL,
avgdblk NUMBER DEFAULT NULL,
clstfct NUMBER DEFAULT NULL,
indlevel NUMBER DEFAULT NULL,
flags NUMBER DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
guessq NUMBER DEFAULT NULL,
cachedblk NUMBER DEFAULT NULL,
cachehit NUMBER DEFUALT NULL,
force BOOLEAN DEFAULT FALSE);
ユーザー定義統計情報には、次の構文を使用します。
DBMS_STATS.SET_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
ext_stats RAW,
stattypown VARCHAR2 DEFAULT NULL,
stattypname VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
cachedblk NUMBER DEFAULT NULL,
cachehit NUMBER DEFUALT NULL,
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-66 SET_INDEX_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
索引の名前。 |
|
|
統計情報を格納する索引パーティションの名前。索引がパーティション化されていて、 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
ユーザー定義の統計情報。 |
|
|
統計タイプのスキーマ。 |
|
|
統計タイプの名前。 |
|
|
索引(パーティション)内の行数。 |
|
|
索引(パーティション)内のリーフ・ブロックの数。 |
|
|
索引(パーティション)内の個別キーの数。 |
|
|
この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。この値が提供されない場合、この値は |
|
|
この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。この値が提供されない場合、この値は |
|
|
|
|
|
索引(パーティション)の高さ。 |
|
|
Oracle内部で使用( |
|
|
|
|
|
|
|
|
推測品質。 |
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
|
|
索引の統計情報がロックされている場合でも、この値を設定します。 |
使用上の注意
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblkおよびcachehitを維持します。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、このワークロードに統計情報が適合するように調整します。他のマイナーなワークロードは無視されます。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、DBMS_STATSプロシージャのパラメータのデフォルト値を設定します。GET_PARAMファンクションを使用して、パラメータの現在のデフォルト値を取得できます。
構文
DBMS_STATS.SET_PARAM ( pname IN VARCHAR2, pval IN VARCHAR2);
パラメータ
表103-67 SET_PARAMプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
パラメータ名。次のパラメータのデフォルト値を設定できます。
|
|
|
パラメータ値。
|
使用上の注意
このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。
両方の引数のタイプはVARCHAR2で、値を引用符で囲む必要があることに注意してください。
NULLと'NULL'の違いにも注意してください。
引用符なしのNULLの場合、パラメータはOracle推奨の値に設定されます。
引用符で囲んだ'NULL'の場合、パラメータの値はNULLに設定されます。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です。
例
DBMS_STATS.SET_PARAM('CASCADE','DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_PARAM('ESTIMATE_PERCENT','5');
DBMS_STATS.SET_PARAM('DEGREE','NULL');
このプロシージャは、システムの統計情報を設定します。
構文
DBMS_STATS.SET_SYSTEM_STATS ( pname VARCHAR2, pvalue NUMBER, stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表103-68 SET_SYSTEM_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
取得するパラメータ名。次の値の1つが入ります。
|
|
|
取得するパラメータ値。 |
|
|
統計情報を取得するユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから取得されます。 |
|
|
stattabに保存された統計情報に関連付けられた、オプションの識別子。 |
|
|
|
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
使用上の注意
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblkおよびcachehitを維持します。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、このワークロードに統計情報が適合するように調整します。他のマイナーなワークロードは無視されます。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です
ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003: システムの統計情報を設定できません。
ORA-20004: パラメータが存在しません。
このプロシージャは、表に関連する情報を設定します。
構文
DBMS_STATS.SET_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL,
avgrlen NUMBER DEFAULT NULL,
flags NUMBER DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
cachedblk NUMBER DEFAULT NULL,
cachehit NUMBER DEFUALT NULL,
force BOOLEAN DEFAULT FALSE);
パラメータ
表103-69 SET_TABLE_STATSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
スキーマの名前。 |
|
|
表の名前。 |
|
|
統計情報を格納する表パーティションの名前。表がパーティション化されていて、 |
|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
表(パーティション)内の行数。 |
|
|
表(パーティション)が占有するブロックの数。 |
|
|
表(パーティション)の行の平均長。 |
|
|
Oracle内部で使用( |
|
|
|
|
|
|
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
|
|
表の統計情報がロックされている場合でも、この値を設定します。 |
使用上の注意
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblkおよびcachehitを維持します。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、このワークロードに統計情報が適合するように調整します。他のマイナーなワークロードは無視されます。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
例外
ORA-20000: オブジェクトが存在しないか、権限が不十分です。
ORA-20001: 入力値が無効です
ORA-20005: オブジェクト統計はロックされています
このプロシージャは、スキーマ内のすべての表の統計情報をロック解除します。
構文
DBMS_STATS.UNLOCK_SCHEMA_STATS ( ownname VARCHAR2);
パラメータ
使用上の注意
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
このプロシージャは、表の統計情報をロック解除します。
構文
DBMS_STATS.UNLOCK_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2);
パラメータ
使用上の注意
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
このプロシージャは、古いバージョンのユーザー統計表をアップグレードします。
構文
DBMS_STATS.UPGRADE_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2);
パラメータ
例外
ORA-20000: 表をアップグレードできません。