DBMS_STATS
パッケージを使用すると、データベース・オブジェクト用に収集したオプティマイザの統計情報を表示および変更できます。
関連項目: 『Oracle Database SQLチューニング・ガイド』 |
この章では、次の項目について説明します。
概要
推奨されないサブプログラム
タイプ
定数
使用上の注意
推奨されないサブプログラム
例
この項では、DBMS_STATS
パッケージの使用に関連する項目について説明します。
Oracle RDBMSでは、パフォーマンス向上のために使用できる様々な統計情報を収集できます。このパッケージは、オプティマイザ統計情報にのみ関連しています。Oracleでは、これらの統計情報の自動収集がデフォルトに設定されているため、このパッケージは特別な場合にのみ使用されます。
表示または変更対象の統計情報は、この目的のためにユーザーのスキーマに作成したディクショナリや表に常駐させることができます。また、このパッケージを使用して、表およびドメイン索引に関するユーザー定義の統計情報を収集および管理できます。
たとえば、関連性が定義されている列に対してDELETE_COLUMN_STATS
プロシージャが起動されると、標準的な統計情報以外に、その列にあるユーザー定義の統計情報も削除されます。
コストベースのオプティマイザに影響を与える統計情報は、ディクショナリに格納されている統計情報のみです。また、DBMS_STATS
を使用して、並列的に統計情報を収集できます。
関連項目: オプティマイザ統計情報の管理の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。 |
注意: 推奨されないサブプログラムは、使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。 |
Oracle Database 12c以降では、次のサブプログラムの使用は推奨されていません。
GENERATE_STATS
このプロシージャのかわりにGATHER_INDEX_STAT
プロシージャを使用してください。
最小値と最大値およびヒストグラム終点のタイプは、次のとおりです。
TYPE numarray IS VARRAY(2050) OF NUMBER; TYPE datearray IS VARRAY(2050) OF DATE; TYPE chararray IS VARRAY(2050) OF VARCHAR2(4000); TYPE rawarray IS VARRAY(2050) OF RAW(2000); TYPE fltarray IS VARRAY(2050) OF BINARY_FLOAT; TYPE dblarray IS VARRAY(2050) OF BINARY_DOUBLE;
失効した表を表示するタイプは、次のとおりです。
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 type ObjectTab is TABLE of ObjectElem;
統計情報の違いのレポートを表示するタイプは、次のとおりです。
TYPE DiffRepElem IS RECORD ( report CLOB, -- stats difference report maxdiffpct number); -- max stats difference (percentage) type DiffRepTab is table of DiffRepElem;
DBMS_STATS
パッケージでは、表155-1に示す定数が使用されます。
表155-1 DBMS_STATSの定数
名前 | タイプ | 説明 |
---|---|---|
|
|
グローバル・プリファレンスをコピーします。 |
|
|
索引の統計情報を収集するかどうかを選択できます。 |
|
|
オブジェクトのサイズ、CPU数および初期化パラメータを基に並列度を選択できます。 |
|
|
Oracleで依存カーソルを無効化するタイミングを決定できます。 |
|
|
自動サンプル・サイズのアルゴリズムを使用することを示します。 |
|
|
PURGE_STATSプロシージャに渡すことが可能で、すべての履歴統計を無条件に削除するフラグ。削除では、統計の履歴を保持する様々なディクショナリ統計表に対して |
|
|
シノプシス表領域の再要求に使用される定数。 |
DBMS_STATS
サブプログラムでは、次に示す一般的な操作を実行します。
ほとんどのDBMS_STATS
プロシージャには、statown
、stattab
およびstatid
の3つのパラメータが含まれています。これらのパラメータによって、ユーザーはオプティマイザに影響を与えない自分自身の表(ディクショナリ外)に統計情報を格納できます。したがって、ユーザーは統計情報のセットをメンテナンスおよび試用することができます。
stattab
パラメータは、統計情報を保持する表の名前を指定し、この表は、(statown
パラメータが指定されていないかぎり)統計情報が収集されるオブジェクトと同じスキーマ内に常駐しているとみなされます。異なるstattab
識別子で複数の表を作成し、統計情報セットを別々に保持できます。
さらに、statid
パラメータを使用して1つのstattab
内で複数の統計情報セットをメンテナンスできるため、ユーザーのスキーマが混乱するのを回避できます。
SET
およびGET
プロシージャでは、stattab
を指定しない場合(つまりNULL
の場合)、操作はディクショナリ統計上で直接動作するため、ディクショナリを直接変更することだけが目的の場合は、これらの統計表を作成する必要はありません。ただし、stattab
がNULL
でない場合、SET
またはGET
操作は、ディクショナリではなく、指定したユーザー統計表に対して行われます。
SET_DATABASE_PREFSプロシージャ
、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用して、DBMS_STATSプロシージャのいくつかのパラメータのデフォルト値を変更できます。
このパッケージのほとんどのプロシージャは、現行のトランザクションをコミットし、操作を実行してから再度コミットします。
ほとんどのプロシージャには、統計情報のすべてのロックを無効にできるforce
パラメータがあります。ディクショナリの統計情報が変更されると、古いバージョンの統計情報が将来のリストアに備えて自動的に保存されます。
オプティマイザ統計情報の収集
次のサブプログラムを使用して、特定のクラスのオプティマイザ統計情報を収集し、ANALYZE
コマンドの潜在的なパフォーマンスを向上させます。
GATHER_*
プロシージャは、列およびドメイン索引に関するユーザー定義の統計情報も収集します。
statown
、stattab
およびstatid
の各パラメータは、パッケージに対して、新規の統計情報を収集する前に、指定した表内の現行の統計情報をバックアップするように指示します。
関連オブジェクトに十分な統計情報がある場合、導出オブジェクトの統計情報を生成するために、Oracleは次のプロシージャも提供します。
統計情報の設定または取得
次のサブプログラムを使用して、個別の列、索引および表に関連する統計情報を格納および取り出します。
ユーザー定義の統計情報を設定する特別バージョンのSET_*_STATS
プロシージャでは、次の情報(提供された場合)がディレクトリまたはユーザー統計表に格納されます。
ユーザー定義の統計情報
統計タイプの所有者
統計タイプの名前。
ユーザー定義の統計情報と対応する統計タイプは、USTATS$
ディクショナリ表に挿入されます。ユーザー定義の統計情報は、統計タイプ名の指定なしに指定できます。
特別バージョンのGET_*_STATS
プロシージャは、ユーザー定義の統計情報および統計タイプの所有者と名前を、指定したスキーマ・オブジェクトに対応するOUT
引数として戻します。ユーザー定義の統計情報が収集されていない場合は、NULL
値が戻ります。
統計情報の削除
DELETE_*
プロシージャは、ユーザー定義の統計情報、および指定したスキーマ・オブジェクトに関する標準的な統計情報の両方を削除します。
DELETE_TABLE_STATS
、DELETE_DICTIONARY_STATS
、DELETE_DATABASE_STATS
およびDELETE_SCHEMA_STATS
には、パラメータstat_category
があり、削除する統計を指定します。このパラメータは、カンマで区切られた複数の値を受け入れます。サポートされる値は、'OBJECT_STATS'
(表統計、列統計および索引統計)と'SYNOPSES'
(統計が増分的に保持されるときに作成される補助統計)です。デフォルトは'OBJECT_STATS, SYNOPSES'
です。統計情報の転送
次のプロシージャを使用して、ユーザー統計表を作成および削除します。
次のプロシージャを使用して、統計情報を転送します。
ディクショナリからユーザー統計表への転送(EXPORT_
*)
ユーザー統計表からディクショナリへの転送(IMPORT_
*)
注意: Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。 |
統計情報のロックまたはロック解除
オブジェクトの統計情報をロックおよびロック解除するには、次のプロシージャを使用します。
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_*
操作は、ユーザー定義の統計情報ではサポートされていません。
保留中の統計情報
デフォルトでは、このパッケージは統計情報を収集してディクショナリに格納します。ユーザーは、SET*PREFS
プロシージャを使用してPUBLISH
オプションをFALSE
にすることによって、これらの統計情報を、ディクショナリではなくシステムのプライベート・エリアに格納できます。PUBLISH
のデフォルト値はTRUE
です。プライベート領域に格納された統計情報は、パラメータoptimizer_use_pending_statistics
がTRUE
に設定されないかぎり、コスト・ベース・オプティマイザでは使用されません。このパラメータのデフォルト値はFALSE
で、このブール・パラメータは、セッション/システム・レベルで設定できます。ユーザーは、セッションの保留中の統計情報を使用することによって、クエリー・プランに対する新しい統計情報の影響を確認できます。
保留中の統計情報には、新しい統計情報を一般的に使用できるようにする前にクエリー・プランに対するそれらの統計情報の影響を確認するメカニズムが用意されています。クエリー・プランを確認するには、次の2つの方法があります。
保留中の統計情報を(EXPORT_PENDING_STATSプロシージャを使用して)テスト・システムにエクスポートし、問合せワークロードを実行してパフォーマンスまたは計画をチェックします。
保留中の統計情報が収集されたシステムのセッションでoptimizer_use_pending_statistics
をTRUE
に設定し、ワークロードを実行してパフォーマンスまたは計画をチェックします。
パフォーマンスまたはクエリー・プランの確認後、パフォーマンスに問題がない場合は、(PUBLISH_PENDING_STATSプロシージャを実行して)保留中の統計情報をパブリッシュできます。問題がある場合は、(DELETE_PENDING_STATSプロシージャを実行して)削除できます。
保留中の統計情報は、パブリッシュ、エクスポートまたは削除できます。保留中の統計情報を管理するために、次のプロシージャが用意されています。
統計情報の比較
DIFF_TABLE_STATS_
*統計情報を使用すると、ソースが異なる2つの表の統計情報を比較できます。統計情報のソースは、次のいずれかです。
2つの異なるユーザー統計表
statids
を使用して識別可能な2つの統計情報のセットが含まれている単一のユーザー統計表
ユーザー統計表とディクショナリ履歴
保留中の統計情報
これらのファンクションでは、依存オブジェクト(索引、列、パーティション)の統計情報も比較します。また、統計情報の違いが特定のしきい値を超えた場合に、両方のソースのオブジェクトの統計情報を表示します。しきい値は、デフォルトが10%で、ファンクションの引数として指定できます。最初のソース(stattab1
またはtime1
)に対応する統計情報が、差分のパーセントを計算する基礎として使用されます。
統計情報の拡張
このパッケージでは、列グループおよび式の統計情報の収集を実行できます。列グループおよび式に対して収集された統計情報は、拡張統計情報と呼ばれます。
列グループの統計情報は、列間の相関関係の評価のためにオプティマイザによって使用されます。たとえば、問合せにc1=1とc2=1の述語があり、列グループ(c1, c2)に対する統計がある場合、オプティマイザはこの統計を使用して、述語の組合せの選択性を見積ります。式の統計は、オプティマイザによりこれらの式の述語の選択性を見積るために使用されます。拡張統計情報は列の統計情報に類似しており、列名を取るプロシージャは列名のかわりに拡張統計情報名を受け入れます。
関連サブプログラム:
Oracle Database 11gリリース2(11.2)では、次のサブプログラムの使用は廃止されました。
かわりに、GET_PREFSファンクションを使用します。
かわりに、SET_GLOBAL_PREFSプロシージャを使用します。
かわりに、RESET_GLOBAL_PREF_DEFAULTSプロシージャを使用します。
DBMS_STATS
パッケージは、レコード
・タイプを定義します。
このレコード・タイプは、ユーザーが列の統計を手動で設定する場合のために提供されています。フィールドを使用して、列の最小/最大値、および列のヒストグラムを指定できます。
TYPE STATREC IS RECORD ( epc NUMBER, minval RAW(2000), maxval RAW(2000), bkvals NUMARRAY, novals NUMARRAY, chvals CHARARRAY, eavals RAWARRAY, rpcnts NUMARRAY, eavs NUMBER);
表155-2 STAT_RECの属性
フィールド | 説明 |
---|---|
|
ヒストグラム内のバケット数 |
|
最小値 |
|
最大値 |
|
バケット数の配列 |
|
正規化エンドポイント値の配列 |
|
ダンプされたエンドポイント値の配列 |
|
エンドポイント実際値の配列 |
|
エンドポイント値の頻度の配列 |
|
実際のエンドポイント値がヒストグラムで必要になるかどうかを示す数値。PREPARE_COLUMN_VALUESプロシージャを使用している場合、このフィールドは自動的に入力されます。 |
表155-3 DBMS_STATSパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
ALTER_STATS_HISTORY_RETENTIONプロシージャ |
統計履歴のリテンション値を変更します。 |
|
最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。 |
CONVERT_RAW_VALUE_NVARCHARプロシージャ |
最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。 |
|
最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。 |
|
スケーリング後に、ソース・(サブ・)パーティションの統計情報を宛先(サブ・)パーティションにコピーします。 |
|
ユーザー指定の列グループまたは式の仮想列を表に作成します。 |
|
統計情報を保持できる |
|
列に関連する統計情報を削除します。 |
|
すべての表の統計プリファレンスを削除します。 |
|
データベース全体に関する統計情報を削除します。 |
|
すべてのディクショナリのスキーマ(' |
DELETE_FIXED_OBJECTS_STATSプロシージャ |
すべての固定表の統計情報を削除します。 |
|
索引に関連する統計情報を削除します。 |
|
収集され、パブリッシュされなかったプライベート統計を削除します。 |
|
指定した統計情報のソースの処理速度を削除します。ソースが指定されていない場合、すべてのソースの統計情報が削除されます。 |
|
指定した所有者名で所有されているすべての表の統計プリファレンスを削除します。 |
|
スキーマに関連する統計情報を削除します。 |
|
システムの統計情報を削除します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを削除します。 |
|
表に関連する統計情報を削除します。 |
DIFF_TABLE_STATS_IN_HISTORYファンクション |
過去の2つのタイムスタンプからの表の統計情報の比較、およびそれらのタイムスタンプの時点の統計情報の比較を行います。 |
DIFF_TABLE_STATS_IN_PENDINGファンクション |
保留中の統計情報とタイムスタンプの時点の統計情報またはディクショナリの統計情報を比較します。 |
DIFF_TABLE_STATS_IN_STATTABファンクション |
2つの異なるソースの表の統計情報を比較します。 |
|
ユーザー指定の拡張に対して作成された統計情報エントリを削除します。 |
|
|
|
特定の列に関する統計情報を取り出し、 |
|
すべての表の統計プリファレンスをエクスポートします。 |
|
データベース内のすべてのオブジェクトに関する統計情報を取り出し、 |
|
すべてのディクショナリのスキーマ(' |
EXPORT_FIXED_OBJECTS_STATSプロシージャ |
固定表に関する統計情報を取り出し、 |
|
特定の索引に関する統計情報を取り出し、 |
|
保留中として収集および格納された統計情報をエクスポートします。 |
|
指定した所有者名で所有されているすべての表の統計プリファレンスをエクスポートします。 |
|
|
|
システムの統計情報を取り出し、ユーザー統計表に格納します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを、指定した統計表にエクスポートします。 |
|
特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。 |
FLUSH_DATABASE_MONITORING_INFOプロシージャ |
インメモリーのすべての表の監視情報をディクショナリにフラッシュします。 |
|
データベース内のすべてのオブジェクトに関する統計情報を収集します。 |
|
ディクショナリのスキーマ(' |
GATHER_FIXED_OBJECTS_STATSプロシージャ |
固定オブジェクトの統計情報を収集します。 |
|
索引の統計情報を収集します。 |
|
|
|
スキーマ内のすべてのオブジェクトに関する統計情報を収集します。 |
|
システムの統計情報を収集します。 |
|
表と列(および索引)の統計情報を収集します。 |
|
関連するオブジェクトに関して以前に収集した統計情報から、オブジェクトの統計情報を生成します。 |
|
列に関連するすべての情報を取得します。 |
|
索引に関連するすべての情報を取得します。 |
|
|
|
指定したプリファレンスのデフォルト値を取得します。 |
GET_STATS_HISTORY_AVAILABILITYファンクション |
統計履歴を使用できる最も古いタイムスタンプを取得します。 |
GET_STATS_HISTORY_RETENTIONファンクション |
現在の統計履歴のリテンション値を戻します。 |
|
|
|
表に関連するすべての情報を取得します。 |
|
|
|
すべての表の統計プリファレンスをインポートします。 |
|
データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。 |
|
すべてのディクショナリのスキーマ(' |
IMPORT_FIXED_OBJECTS_STATSプロシージャ |
|
|
|
|
指定した所有者名で所有されているすべての表の統計プリファレンスをインポートします。 |
|
|
|
ユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを設定します。 |
|
|
|
パーティションの統計情報をロックします。 |
|
スキーマのすべての表の統計情報をロックします。 |
|
表の統計情報をロックします。 |
|
|
|
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
PREPARE_COLUMN_VALUES_NVARCHARプロシージャ |
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
PREPARE_COLUMN_VALUES_ROWIDプロシージャ |
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
保留中として収集および格納された統計情報をパブリッシュします。 |
|
ディクショナリに保存されている統計情報の古いバージョンをパージします。 |
|
ユーザー統計表のオブジェクトの名前を再マップします。 |
|
記録された列(グループ)使用情報をレポートします。 |
REPORT_GATHER_AUTO_STATSファンクション |
自動統計情報収集ジョブをレポート・モードで実行します。 |
REPORT_GATHER_DATABASE_STATSファンクション |
GATHER_DATABASE_STATSプロシージャをレポート・モードで実行します。 |
REPORT_GATHER_DICTIONARY_STATSファンクション |
GATHER_DICTIONARY_STATSプロシージャをレポート・モードで実行します。 |
REPORT_GATHER_FIXED_OBJ_STATSファンクション |
GATHER_FIXED_OBJECTS_STATSプロシージャをレポート・モードで実行します。 |
REPORT_GATHER_SCHEMA_STATSファンクション |
GATHER_SCHEMA_STATSプロシージャをレポート・モードで実行します。 |
REPORT_GATHER_TABLE_STATSファンクション |
GATHER_TABLE_STATSプロシージャをレポート・モードで実行します。 |
REPORT_SINGLE_STATS_OPERATIONファンクション |
マルチテナント環境で特定のプラガブル・データベース(PDB)の指定された操作のレポートを生成します(オプション)。 |
REPORT_STATS_OPERATIONSファンクション |
2つのタイムスタンプ(指定されている場合と指定されていない場合がある)の間に実行されるすべての統計操作のレポートを生成します。 |
RESET_GLOBAL_PREF_DEFAULTSプロシージャ |
すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。 |
|
グローバル・プリファレンスをデフォルト値にリセットします(「推奨されないサブプログラム」を参照)。 |
RESTORE_DICTIONARY_STATSプロシージャ |
すべてのディクショナリ表(' |
RESTORE_FIXED_OBJECTS_STATSプロシージャ |
すべての固定表の統計情報を、指定したタイムスタンプでリストアします。 |
|
スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
指定したタイムスタンプ( |
|
指定したSQLチューニング・セットでSQL文を繰り返し、それらをコンパイルして、その文に表示される列に関する列使用情報をシードします。 |
|
列に関連する情報を設定します。 |
|
すべての表の統計プリファレンスを設定します。 |
|
グローバルな統計プリファレンスを設定します。 |
|
索引に関連する情報を設定します。 |
|
|
|
特定の操作の処理速度の値を設定します。 |
|
指定した所有者名で所有されているすべての表の統計プリファレンスを設定します。 |
|
システムの統計情報を設定します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを設定します。 |
|
表に関連する情報を設定します。 |
SHOW_EXTENDED_STATS_NAMEファンクション |
ユーザー指定の拡張に対して作成された仮想列の名前を戻します。 |
|
指定した表の統計情報を、 |
|
パーティションの統計情報をロック解除します。 |
|
スキーマ内にあるすべての表の統計情報をロック解除します。 |
|
表の統計情報をロック解除します。 |
|
古い表のユーザー統計情報をアップグレードします。 |
このプロシージャは、統計履歴のリテンション値を変更します。統計履歴保存は、自動パージおよびPURGE_STATSプロシージャの両方で使用されます。
このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。GET_COLUMN_STATS
またはPREPARE_COLUMN_VALUES
で入力されたStatRec
構造のminval
フィールド、maxval
フィールドおよびeavals
フィールドの値が、有効な入力値です。
構文
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);
このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を変換します。GET_COLUMN_STATS
またはPREPARE_COLUMN_VALUES
で入力されたStatRec
構造のminval
フィールド、maxval
フィールドおよびeavals
フィールドの値が、有効な入力値です。
このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を変換します。GET_COLUMN_STATS
またはPREPARE_COLUMN_VALUES
で入力されたStatRec
構造のminval
フィールド、maxval
フィールドおよびeavals
フィールドの値が、有効な入力値です。
このプロシージャは、ソース・(サブ・)パーティションの統計情報を宛先(サブ・)パーティションにコピーします。すべての依存オブジェクト(列、ローカル索引など)の統計情報もコピーします。ソースの統計情報を使用できない場合は、何もコピーされません。オプションで、指定されたscale_factor
に基づいて、(blks
数、行数などの)統計情報をスケーリングできます。
構文
DBMS_STATS.COPY_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, srcpartname VARCHAR2, dstpartname VARCHAR2, scale_factor VARCHAR2 DEFAULT 1, flags NUMBER DEFAULT NULL, force BOOLEAN DEFAULT FALSE);
パラメータ
表155-8 COPY_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ソース・(サブ・)パーティションおよび宛先(サブ・)パーティションの表のスキーマ。 |
|
ソース・(サブ・)パーティションおよび宛先(サブ・)パーティションの表名。 |
|
ソース・(サブ・)パーティション。 |
|
宛先(サブ・)パーティション。 |
|
|
|
Oracle内部で使用( |
|
この引数の値が |
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
このプロシージャは、次のように、最初のパーティション列に対する宛先パーティションの最小値および最大値を更新します。
パーティション化のタイプがHASH
の場合は、宛先パーティションの最小値および最大値は、ソース・パーティションのパーティション化のタイプと同じです。
パーティション化のタイプがLIST
の場合
宛先パーティションがNOT
DEFAULT
パーティションである場合
宛先パーティションの最小値は、宛先パーティションを記述した値リストの最小値に設定されます。
宛先パーティションの最大値は、宛先パーティションを記述した値リストの最大値に設定されます。
または、宛先パーティションがDEFAULT
パーティションである場合
宛先パーティションの最小値は、ソース・パーティションの最小値に設定されます。
宛先パーティションの最大値は、ソース・パーティションの最大値に設定されます。
パーティション化のタイプがRANGE
の場合
宛先パーティションの最小値は、宛先パーティションが最初のパーティションでないかぎり、前のパーティションの上限に設定されます。最初のパーティションの場合、最小値は宛先パーティションの上限に設定されます。
宛先パーティションの上限がMAXVALUE
である場合(この場合、宛先パーティションの最大値は前のパーティションの上限に設定される)を除き、宛先パーティションの最大値は宛先パーティションの上限に設定されます。
ソース・パーティション列の最小値がソース・パーティション列の最大値と等しく、かつ最小値と最大値の両方がソース・パーティションの下限と等しく、単一の個別値を持つ場合、宛先パーティション列の最小値および最大値は両方とも、宛先パーティションの下限に設定されます。すべてのパーティション列に対してこの処理が行われます。
前述の条件が当てはまらない場合、2番目以降のパーティショニング列は次のように更新されます。宛先パーティション列の最大値は、1つを除き、宛先パーティションの上限とソース・パーティション列の最大値の大きい方に設定されます。宛先パーティションがD
、その先行パーティションがD-1
、調節するキー列がCn
である場合、前のキー列Cn-1
の上限がパーティションD
とD-1
で同じであることを条件として、Cn
の最大値はD
の上限に設定されます(ソース・パーティション列の最大値は無視されます)。
変更後の列の最小値と最大値が異なっていて、個別値の数が1より小さい場合、個別値の数は2に更新されます。
このプロシージャでは、ソース/宛先がパーティション化された複合表のパーティションである場合に、基礎となるサブパーティションの統計はコピーされません。
このファンクションは、表のユーザー指定の列グループまたは式の列統計情報エントリをシステム内に作成します。この拡張の統計情報は、ユーザーまたは自動統計情報収集ジョブが表の統計情報を収集する際に収集されます。このような拡張の統計情報は、拡張統計情報と呼ばれます。このファンクションは、拡張用に新しく作成されたエントリの名前を戻します。
この2番目の形式では、SEED_COL_USAGEプロシージャによって記録された列グループ使用率に基づいて、統計の拡張が作成されます。このファンクションは、作成された拡張のレポートを戻します。
構文
DBMS_STATS.CREATE_EXTENDED_STATS ( ownname VARCHAR2, tabname VARCHAR2, extension VARCHAR2) RETURN VARCHAR2; DBMS_STATS.CREATE_EXTENDED_STATS ( ownname VARCHAR2, tabname VARCHAR2, extension VARCHAR2) RETURN CLOB;
例外
ORA-20000
: 権限が不十分です。/拡張の作成はサポートされていません。
ORA-20001
: 拡張の処理中にエラーが発生しました。
ORA-20007
: 拡張はすでに存在しています。
ORA-20008
: 拡張数の上限に達しました。
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
拡張には次の9個の制限事項があります。
拡張に仮想列を含めることはできません。
SYS
が所有する表には拡張を作成できません。
クラスタ表、索引構成表、一時表または外部表には拡張を作成できません。
表内の拡張の合計数が最大数(20、表内の非仮想列の10%)を超えることはできません。
列グループ内の列の数は、2から32の範囲内である必要があります。
1つの列を1つの列グループ内で複数回使用することはできません。
列グループに式を含めることはできません。
式には1つ以上の列が含まれている必要があります。
式に副問合せを含めることはできません。
COMPATIBLE
は、11.0.0.0.0以上である必要があります。
このプロシージャは、統計情報を保持できるownname
のスキーマにあるstattab
の名前で表を作成します。この表は、このパッケージのプロシージャを介して単独にアクセスされるため、この表を構成する列とタイプは互いに関係がありません。
構文
DBMS_STATS.CREATE_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2, tblspace VARCHAR2 DEFAULT NULL, global_temporary BOOLEAN DEFAULT FALSE);
このプロシージャは、列に関連する統計情報を削除します。
構文
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, col_stat_type VARCHAR2 DEFAULT 'ALL');
パラメータ
表155-11 DELETE_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
統計情報を削除する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
表がパーティション化されていて、 |
|
|
|
|
|
この引数の値が |
|
削除される列統計情報のタイプ。この引数は次の値を取ります。
|
このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスを削除するために使用されます。これらの表は、add_sys
パラメータにTRUE
を渡すことによって含めることができます。
パラメータ
表155-12 DELETE_DATABASE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
使用上の注意
このプロシージャを実行するには、SYSDBA
ロールまたはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
すべてのpname
引数はVARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例
DBMS_STATS.DELETE_DATABASE_PREFS('CASCADE', FALSE); DBMS_STATS.DELETE_DATABASE_PREFS('ESTIMATE_PERCENT',TRUE);
関連項目: このサブプログラムの複雑な使用法の例については、『Oracle Database SQLチューニング・ガイド』を参照してください。 |
このプロシージャは、データベース内のすべての表に関する統計情報を削除します。
構文
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, stat_category VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);
パラメータ
表155-13 DELETE_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
この引数の値が |
|
削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。
デフォルトは |
このプロシージャは、すべてのディクショナリのスキーマ('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')), stattype VARCHAR2 DEFAULT 'ALL', force BOOLEAN DEFAULT FALSE, stat_category VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);
パラメータ
表155-14 DELETE_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
統計タイプ。 |
|
この引数の値が |
|
削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。
デフォルトは |
このプロシージャは、すべての固定表の統計情報を削除します。
構文
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);
パラメータ
表155-15 DELETE_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現在の統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
このプロシージャは、索引に関連する統計情報を削除します。
構文
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')), stattype VARCHAR2 DEFAULT 'ALL', force BOOLEAN DEFAULT FALSE); stat_category VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);
パラメータ
表155-16 DELETE_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
索引の名前。 |
|
統計情報を削除する索引パーティションの名前。索引がパーティション化されていて、 |
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
索引がパーティション化されていて、 |
|
|
|
|
|
統計タイプ。 |
|
この引数の値が |
|
削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。
デフォルトは |
このプロシージャは、収集され、パブリッシュされなかった保留中の統計情報を削除するために使用されます。
このファンクションは、指定した統計情報のソースの処理速度を削除します。ソースが指定されていない場合、すべてのソースの統計情報が削除されます。
パラメータ
表155-18 DELETE_PROCESSING_RATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
処理速度のソース。
|
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスを削除するために使用されます。
パラメータ
表155-19 DELETE_SCHEMA_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
|
|
|
|
. |
|
|
|
|
|
|
このプロシージャは、スキーマ全体の統計情報を削除します。
構文
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);
パラメータ
表155-20 DELETE_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
この引数の値が |
このプロシージャは、stattab
が指定されていない場合、ワークロード統計('INTERVAL
'または'START
'および'STOP
'オプションを使用して収集)を削除し、デフォルトをnoworkload
統計('NOWORKLOAD
'オプションを使用して収集)にリセットします。stattab
が指定されている場合、サブプログラムは、関連するstatid
とともにすべてのシステム統計情報をstattab
から削除します。
構文
DBMS_STATS.DELETE_SYSTEM_STATS ( stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを削除するために使用されます。
パラメータ
表155-22 DELETE_TABLE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
表名。 |
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
|
|
. |
|
|
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
|
|
|
|
. |
|
|
|
|
|
|
このプロシージャは、表に関連する統計情報を削除します。
構文
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);
パラメータ
表155-23 DELETE_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
統計情報を取得する表(サブ・)パーティションの名前。表がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
表がパーティション化されていて、 |
|
基礎となるすべての列について、 |
|
基礎となるすべての索引について、 |
|
|
|
|
|
この引数の値が |
このファンクションは、過去の2つのタイムスタンプからの表の統計情報の比較、およびそれらのタイムスタンプの時点の統計情報の比較を行うために使用できます。
構文
DBMS_STATS.DIFF_TABLE_STATS_IN_HISTORY( ownname IN VARCHAR2, tabname IN VARCHAR2, time1 IN TIMESTAMP WITH TIME ZONE, time2 IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, pctthreshold IN NUMBER DEFAULT 10) RETURN DiffRepTab pipelined;
このファンクションは、保留中の統計情報とタイムスタンプの時点の統計情報またはディクショナリの統計情報を比較します。
構文
DBMS_STATS.DIFF_TABLE_STATS_IN_PENDING( ownname IN VARCHAR2, tabname IN VARCHAR2, timestamp IN TIMESTAMP WITH TIME ZONE, pctthreshold IN NUMBER DEFAULT 10) RETURN DiffRepTab pipelined;
このファンクションは、ソースが異なる2つの表の統計情報を比較するために使用できます。統計情報のソースは、次のいずれかです。
2つの異なるユーザー統計表
statids
を使用して識別可能な2つの統計情報のセットが含まれている単一のユーザー統計表
ユーザー統計表とディクショナリ
このファンクションは、依存オブジェクト(索引、列、パーティション)の統計情報も比較します。また、統計情報の違いが特定のしきい値(%)を超えた場合に、両方のソースからオブジェクトの統計情報を表示します。しきい値は、ファンクションの引数として指定できます。最初のソース(stattab1
またはtime1
)に対応する統計情報が、差分のパーセントを計算する基礎として使用されます。
構文
DBMS_STATS.DIFF_TABLE_STATS_IN_STATTAB( ownname IN VARCHAR2, tabname IN VARCHAR2, stattab1 IN VARCHAR2, stattab2 IN VARCHAR2 DEFAULT NULL, pctthreshold IN NUMBER DEFAULT 10, statid1 IN VARCHAR2 DEFAULT NULL, statid2 IN VARCHAR2 DEFAULT NULL, stattab1own IN VARCHAR2 DEFAULT NULL, stattab2own IN VARCHAR2 DEFAULT NULL) RETURN DiffRepTab pipelined;
パラメータ
表155-26 DIFF_TABLE_STATS_IN_STATTABファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者。現行のスキーマの場合は、 |
|
統計情報を比較する表。 |
|
ユーザー統計表1。 |
|
ユーザー統計表2。 |
|
このファンクションは、この制限を超えた場合にのみ統計情報の違いをレポートします。デフォルト値は10です。 |
|
(オプション) |
|
(オプション) |
|
|
|
|
このファンクションは、ユーザー指定の拡張に対して作成された統計情報エントリを削除します。これによって、CREATE_EXTENDED_STATSファンクションの実行効果が取り消されます。
このプロシージャは、特定の列に関する統計情報を取り出し、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);
パラメータ
表155-29 EXPORT_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスをエクスポートするために使用されます。これらの表は、add_sys
パラメータにTRUE
を渡すことによって含めることができます。
構文
DBMS_STATS.EXPORT_DATABASE_PREFS ( stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL add_sys IN BOOLEAN DEFAULT FALSE);
このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報を取り出し、statown
.stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_DATABASE_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-31 EXPORT_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、すべてのディクショナリのスキーマ('SYS
'、'SYSTEM
'およびRDBMSコンポーネントのスキーマ)に関する統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_DICTIONARY_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-32 EXPORT_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、固定表に関する統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_FIXED_OBJECTS_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
このプロシージャは、特定の索引に関する統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
このプロシージャは、保留中として収集および格納された統計情報をエクスポートするために使用されます。
構文
DBMS_STATS.EXPORT_PENDING_STATS ( ownname IN VARCHAR2 DEFAULT USER, tabname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT USER);
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスをエクスポートするために使用されます。
構文
DBMS_STATS.EXPORT_SCHEMA_PREFS ( ownname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
このプロシージャは、ownname
で識別されるスキーマ内のすべてのオブジェクトに関する統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_SCHEMA_STATS ( ownname VARCHAR2, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-37 EXPORT_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、システムの統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを、指定した統計表にエクスポートするために使用されます。
構文
DBMS_STATS.EXPORT_TABLE_PREFS ( ownname IN VARCHAR2, tabname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
このプロシージャは、特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。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, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-40 EXPORT_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
表の名前。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
TRUEの場合は、この表の列と索引の統計情報もまたエクスポートされます。 |
|
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、インメモリーのすべての表の監視情報をディクショナリにフラッシュします。*_TAB_MODIFICATIONS
、*_TAB_STATISTICS
および*_IND_STATISTICS
ビュー内の対応するエントリは、Oracle Databaseによる定期的なフラッシュを待機せずにすぐに更新されます。こうしたビューで最新の情報が必要な場合は、このプロシージャが有効です。GATHER_*_STATS
プロシージャでは監視情報が内部処理で自動的にフラッシュされるため、統計情報の収集前にこのプロシージャを実行する必要はありません。
このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報を収集します。
構文
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')), obj_filter_list ObjectTab DEFAULT NULL); 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')), obj_filter_list ObjectTab DEFAULT NULL);
パラメータ
表155-41 GATHER_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、データベース内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 統計表は、分析するオブジェクトと同じスキーマに常駐するとみなされるので、各スキーマにこのオプションを使用するための表が1つ必要です。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
|
|
オブジェクト・フィルタのリスト。指定された場合、 |
このプロシージャは、ディクショナリのスキーマ('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')), obj_filter_list ObjectTab DEFAULT NULL); 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')), obj_filter_list ObjectTab DEFAULT NULL);
パラメータ
表155-42 GATHER_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマのコンポーネントID ( |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。 |
|
次を受け入れます。
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
オブジェクト・フィルタのリスト。指定された場合、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対して |
このプロシージャは、すべての固定オブジェクト(動的パフォーマンス表)に関する統計情報を収集します。
構文
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')));
パラメータ
表155-43 GATHER_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
このプロシージャは、索引の統計情報を収集します。これは、可能なかぎり多くの作業をパラレル化します。個々のパラメータで説明するように、いくつかの制限があります。この操作では、クラスタ索引、ドメイン索引、ビットマップ結合索引など、特定タイプの索引でのパラレル化は行いません。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);
パラメータ
表155-44 GATHER_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析する索引のスキーマ。 |
|
索引の名前。 |
|
パーティションの名前。 |
|
推定する行のパーセント( |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
このプロシージャは、interval
分後に終了する処理率の収集ジョブを開始します。
構文
DBMS_STATS.GATHER_PROCESSING_RATE ( gathering_mode IN VARCHAR2 DEFAULT 'START', interval IN NUMBER DEFAULT NULL);
このプロシージャは、スキーマ内のすべてのオブジェクトに関する統計情報を収集します。
構文
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, obj_filter_list ObjectTab DEFAULT NULL); 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, obj_filter_list ObjectTab DEFAULT NULL);
パラメータ
表155-46 GATHER_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマ( |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次を受け入れます。
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
|
オブジェクト・フィルタのリスト。指定された場合、 |
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
サンプリングのパーセント指定には特定の値を使用できますが、次の場合は、DBMS_STATS
でその値が有効ではなくなります。
結果が2500行未満の場合(サンプルとしてはデータ量が非常に少ない)。
指定のパーセントが特定のパーセントを超えた場合。
例
オブジェクト・フィルタ・リストの適用
次の例では、SAMPLE
スキーマ内の接頭辞がT
の表およびSYS
スキーマ内のいずれかの表が失効している場合、それらの表に対する統計情報が収集されるように指定します。
DECLARE filter_lst DBMS_STATS.OBJECTTAB := DBMS_STATS.OBJECTTAB(); BEGIN filter_lst.extend(2); filter_lst(1).ownname := 'SH'; filter_lst(1).objname := 'SALES'; filter_lst(2).ownname := 'SH'; filter_lst(2).objname := 'COSTS'; DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>'SH',obj_filter_list=>filter_lst); END;
このプロシージャは、システムの統計情報を収集します。
構文
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);
パラメータ
表155-47 GATHER_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
モードの値は、次のとおりです。
|
|
統計情報を収集する時間(分単位)。このパラメータが適用されるのは、 |
|
統計情報が保存されるユーザー統計表の識別子。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003
: システムの統計情報を収集できません
ORA-20004
: INTERVALモードでエラーが発生しました。システム・パラメータjob_queue_processes>0である必要があります。
例
昼間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;
このプロシージャは、表と列(および索引)の統計情報を収集します。これは、可能なかぎり多くの作業をパラレル化しますが、個々のパラメータで説明するように、いくつかの制限があります。
構文
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')), stattype VARCHAR2 DEFAULT 'DATA', force BOOLEAN DEFAULT FALSE, context DBMS_STATS.CCONTEXT DEFAULT NULL, -- non operative options VARCHAR2 DEFAULT 'GATHER');
パラメータ
表155-48 GATHER_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析する表のスキーマ。 |
|
表の名前。 |
|
パーティションの名前。 |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。- column_name : 列の名前。- extension :(column_name , Colume_name [, ...])の書式の列グループまたは式。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
表の索引について統計情報を収集します。このオプションを使用することは、表の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
統計タイプ。許可されている値は、 |
|
ロックされている場合でも、表の統計情報を収集します。 |
|
[機能しません] |
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
注意: このサブプログラムの使用は推奨されず、より高度なテクノロジがかわりに使用されます。下位互換性の目的でのみ保持されています。代替として、GATHER_INDEX_STAT プロシージャを使用してください。「GATHER_INDEX_STATSプロシージャ」を参照してください。 |
このプロシージャは、関連するオブジェクトで以前に収集した統計情報から、オブジェクトの統計情報を生成します。現在サポートされているオブジェクトは、Bツリー索引とビットマップ索引です。
構文
DBMS_STATS.GENERATE_STATS ( ownname VARCHAR2, objname VARCHAR2, organized NUMBER DEFAULT 7, force BOOLEAN default FALSE);
パラメータ
表155-49 GENERATE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトのスキーマ。 |
|
オブジェクトの名前。 |
|
索引とその基礎となる表の間で関連付けられた順位付けの量。複雑に編成されている索引には、ディスク上の連続行を参照する連続索引キーがその表(同じブロック)に対してあります。複雑に編成されていない索引には、ディスク上の異なる表ブロックを参照する連続キーがあります。 このパラメータは、Bツリー索引に対してのみ使用します。数値は、0から10の範囲で使用でき、0(ゼロ)は完全に編成された索引、10は完全に編成解除された索引を示します。 |
|
|
このプロシージャは、列に関連するすべての情報を取得します。ユーザー定義の統計情報を処理するこのプロシージャのフォームでは、戻される統計情報のタイプは、ユーザー定義の統計情報に加え、格納されるタイプでもあります。
構文
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);
パラメータ
表155-50 GET_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
統計情報を取得する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報。 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
個別値の数。 |
|
列密度。 |
|
|
|
列最大、列最小およびヒストグラム値の内部表記を保持する構造。 |
|
列の平均長(バイト単位)。 |
|
|
このプロシージャは、索引に関連するすべての情報を取得します。ユーザー定義の統計情報を処理するこのプロシージャのフォームでは、戻される統計情報のタイプは、ユーザー定義の統計情報に加え、格納されるタイプでもあります。
構文
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);
パラメータ
表155-51 GET_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
索引の名前。 |
|
統計情報を取得する索引パーティションの名前。索引がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
索引(パーティション)内の行数。 |
|
索引(パーティション)内のリーフ・ブロックの数。 |
|
索引(パーティション)内の個別キーの数。 |
|
この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。 |
|
この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。 |
|
索引(パーティション)のクラスタ化要因。 |
|
索引(パーティション)の高さ。 |
|
|
|
索引の推測品質(パーティション)。 |
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
使用上の注意
このプロシージャを呼び出す前に、表が存在することを確認してください。
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblk
およびcachehit
を維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
注意: テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、GET_PREFSファンクションを使用してください。「推奨されないサブプログラム」も参照してください。 |
このファンクションは、DBMS_STATS
プロシージャのパラメータのデフォルト値を戻します。
このファンクションは、指定したプリファレンスのデフォルト値を戻します。
構文
DBMS_STATS.GET_PREFS ( pname IN VARCHAR2, ownname IN VARCHAR2 DEFAULT NULL, tabname IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2;
パラメータ
表155-53 GET_PREFSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
|
|
. |
|
次の「使用上の注意」を参照してください。 |
|
. |
|
. |
|
|
グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
. |
|
. |
'
|
. |
|
. |
パーティション表の |
|
|
|
|
. |
|
|
|
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
所有者名。 |
|
表名。 |
使用上の注意
このプロシージャを起動するのに、特別な権限またはロールは必要ありません。ただし、CONCURRENT
プリファレンスに関しては、次の点に注意してください。
ユーザーがGATHER_*_STATS
プロシージャを発行した場合、CONCURRENT
プリファレンスは、表または表の(サブ)パーティションの統計を同時に収集するかどうかを判別します。DBMS_STATS
は、degreeパラメータの値に基づいて単一オブジェクト(表、(サブ)パーティション)の統計を並列収集する機能を備えています。ただし、並列性は1つのオブジェクトに限定されます。CONCURRENT
プリファレンスは、ユーザーが1つのスキームまたはデータベースの複数の表、および1つの表の複数の(サブ)パーティションに対して同時に統計を収集できるようにすることによって、パラレル化の範囲を複数のデータベース・オブジェクトに拡張します。これは主にマルチCPUシステムを対象としており、単一CPUマシン上の小規模なデータベースには不適切な場合があります。
統計を同時に収集するには:
- ユーザーはDBAロールを持っているか、統計の収集に必要な権限に加えて、次の権限、CREATE
JOB
、MANAGE
SCHEDULER
、MANAGE
ANY
QUEUE
を持っている必要があります。
リソース・マネージャが有効である必要があります。
job_queue_processes
パラメータの設定値が少なくとも4
である必要があります。
ownname
およびtabname
が指定され、表に対してプリファレンスが入力されている場合、このファンクションは、その表に対して指定されているとおりにプリファレンスを戻します。それ以外のすべての場合は、グローバル・プリファレンスが指定されている場合はそれを戻し、指定されていない場合はデフォルト値を戻します。
このファンクションは、統計履歴を使用できる最も古いタイムスタンプを戻します。ユーザーは、この値よりも古いタイムスタンプで統計情報をリストアできません。
このプロシージャは、stattab
(stattab
がNULL
の場合はディクショナリ)からシステムの統計情報を取得します。
構文
DBMS_STATS.GET_SYSTEM_STATS ( status OUT VARCHAR2, dstart OUT DATE, dstop OUT DATE, pname IN VARCHAR2, pvalue OUT NUMBER, stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表155-54 GET_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
出力は次のいずれかです。
|
|
統計情報の収集が開始された日付。
|
|
統計情報の収集が停止された日付。
|
|
取得するパラメータ名。次の値の1つが入ります。
|
|
取得するパラメータ値。 |
|
統計情報を取得するユーザー統計表の識別子。 |
|
|
|
|
このプロシージャは、表に関連するすべての情報を取得します。
構文
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);
パラメータ
表155-55 GET_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
統計情報を取得する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
表(パーティション)内の行数。 |
|
表(パーティション)が占有するブロックの数。 |
|
表(パーティション)の行の平均長。 |
|
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
使用上の注意
このプロシージャを呼び出す前に、表が存在することを確認してください。
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblk
およびcachehit
を維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
このプロシージャは、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);
パラメータ
表155-56 IMPORT_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
|
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスをインポートするために使用されます。これらの表は、add_sys
パラメータにTRUE
を渡すことによって含めることができます。
構文
DBMS_STATS.IMPORT_DATABASE_PREFS ( stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL add_sys IN BOOLEAN DEFAULT FALSE);
このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。
構文
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, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-58 IMPORT_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
オブジェクト(表)のレベルでロックされている統計情報を上書きします。
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、すべてのディクショナリのスキーマ('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, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-59 IMPORT_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
オブジェクト(表)のレベルで統計情報のロックを無視します。
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、固定表に関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。
構文
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);
パラメータ
表155-60 IMPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
統計情報のロックを無視します。
|
このプロシージャは、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);
パラメータ
表155-61 IMPORT_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
索引の名前。 |
|
索引パーティション名。索引がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
索引の統計情報がロックされていても、統計情報をインポートします。 |
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスをインポートするために使用されます。
構文
DBMS_STATS.IMPORT_SCHEMA_PREFS ( ownname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
このプロシージャは、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, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-63 IMPORT_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
オブジェクト(表)のレベルでロックされている統計情報を上書きします。
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、stattab
で識別されるユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを設定するために使用されます。
構文
DBMS_STATS.IMPORT_TABLE_PREFS ( ownname IN VARCHAR2, tabname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
このプロシージャは、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, stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表155-66 IMPORT_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
表の名前。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
TRUEの場合は、この表の列と索引の統計情報もまたインポートされます。 |
|
|
|
|
|
表の統計情報がロックされていても、統計情報をインポートします。 |
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
このプロシージャは、スキーマのすべての表の統計情報をロックします。
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*
、DELETE_*
、IMPORT_*
、GATHER_*
の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATS
など)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
このプロシージャは、現在の統計情報セットを制限するか、または統計情報を空(未収集)のままにして、動的統計情報を使用します。
EXPORT_*_STATS
プロシージャを使用する場合、ロックまたはロック解除の状態は、表の統計情報とともにエクスポートされません。
UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。
このプロシージャは、表の統計情報をロックします。
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*
、DELETE_*
、IMPORT_*
、GATHER_*
の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATS
など)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
このプロシージャは、現在の統計情報セットを制限するか、または統計情報を空(未収集)のままにして、動的統計情報を使用します。
EXPORT_*_STATS
プロシージャを使用する場合、ロックまたはロック解除の状態は、表の統計情報とともにエクスポートされません。
UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。
このプロシージャは、dblink
を使用して、列使用情報をソース・データベースからローカル・データベースにマージします。列使用情報が指定した表または列にすでに存在する場合は、MERGE_COL_USAGE
はローカルとリモートの両方の情報をマージします。
これらのプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点の実際の値を、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);
パラメータ
表155-71 PREPARE_COLUMN_VALUESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、 |
|
ハイブリッド・ヒストグラムが必要な場合、この配列には、 たとえば、ある配列で 注意:
|
表155-72に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。
表155-72 データ・タイプ固有の入力パラメータ
タイプ | 説明 |
---|---|
|
列のタイプが文字ベースの場合の値の配列。各文字列の最初の64バイトまでが使用されます。配列のエントリ数は、2から2050の範囲内である必要があります。データ・タイプが固定の |
|
列のタイプが日付ベースの場合の値の配列。 |
|
列のタイプがdoubleベースの場合の値の配列。 |
|
列のタイプがfloatベースの場合の値の配列。 |
|
列のタイプが数値ベースの場合の値の配列。 |
|
列のタイプが |
|
列のタイプが各国語キャラクタ・セット・ベースの場合の最大値と最小値。このタイプの列について、ヒストグラム情報は提供できません。データ・タイプが固定の |
|
列タイプが |
出力パラメータ
表155-73 PREPARE_COLUMN_VALUESプロシージャの出力パラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点の実際の値を、SET_COLUMN_STATSプロシージャを使用して将来格納するためにOracleの内部表記に変換します。
構文
DBMS_STATS.PREPARE_COLUMN_VALUES_NVARCHAR ( srec IN OUT StatRec, nvmin NVARCHAR2, nvmax NVARCHAR2);
パラメータ
表155-74 PREPARE_COLUMN_VALUES_NVARCHARプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、 |
|
ハイブリッド・ヒストグラムが必要な場合、この配列には、 たとえば、ある配列で 注意:
|
表155-72に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。
出力パラメータ
表155-76 PREPARE_COLUMN_VALUES_NVARCHARプロシージャの出力パラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SET_COLUMN_STATS
を使用して将来格納するためにOracleの内部表記に変換します。
パラメータ
表155-77 PREPARE_COLUMN_VALUES_ROWIDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
srec |
値(
値(
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、 |
|
ハイブリッド・ヒストグラムが必要な場合、この配列には、 たとえば、ある配列で 注意:
|
|
|
|
|
|
|
|
|
|
|
|
|
表155-72に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。
このプロシージャは、保留中として収集および格納された統計情報をパブリッシュするために使用されます。
構文
DBMS_STATS.PUBLISH_PENDING_STATS ( ownname IN VARCHAR2 DEFAULT USER, tabname IN VARCHAR2, no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(get_param('NO_INVALIDATE')), force IN BOOLEAN DEFAULT FALSE);
パラメータ
表155-79 PUBLISH_PENDING_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
表名。 |
|
|
|
|
このプロシージャは、ディクショナリに保存されている統計情報の古いバージョンをパージします。このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
このプロシージャは、ユーザー統計表のオブジェクトの名前を再マップします。これにより、同じ定義の異なる名前を持つオブジェクトに統計情報をインポートできます。
構文
DBMS_STATS.REMAP_STAT_TABLE ( ownname IN VARCHAR2, stattab IN VARCHAR2, src_own IN VARCHAR2, src_tab IN VARCHAR2, tgt_own IN VARCHAR2, tgt_tab IN VARCHAR2);
パラメータ
表155-81 REMAP_STAT_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計表の所有者。 |
|
ユーザー統計表の識別子。 |
|
名前を変更する表の所有者。この引数は、 |
|
名前を変更する表の名前。 |
|
表の所有者の新しい名前。列や索引などの依存オブジェクトの所有者の名前も更新されます。 |
|
表の新しい名前。この引数は、 |
例
次の文は、ユーザー統計表sh.ustat
で、sh
のすべてのオブジェクトをshsave
に再マップします。
DBMS_STATS.REMAP_STAT_TABLE ('sh', 'ustat', 'sh', NULL, 'shsave', NULL);
前述の再マップ・プロシージャが完了したら、次の文を使用して、統計情報をshsave
のオブジェクトにインポートできます。
DBMS_STATS.IMPORT_SCHEMA_STATS ('shsave', 'ustat', statown => 'sh');
次の文は、sh.customers
をshsave.customers_sav
に再マップします。
DBMS_STATS.REMAP_STAT_TABLE ('sh', 'ustat', 'sh', 'customers','shsave', 'customers_sav');
このファンクションは、自動統計情報収集ジョブをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、自動統計情報収集が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。
構文
DBMS_STATS.REPORT_GATHER_AUTO_STATS ( detail_level VARCHAR2 DEFAULT 'TYPICAL', format VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表155-83 REPORT_GATHER_AUTO_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
このファンクションは、GATHER_DATABASE_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_DATABASE_STATS
が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_DATABASE_STATS
内のものとまったく同じです。
構文
DBMS_STATS.REPORT_GATHER_DATABASE_STATS ( estimate_percent IN NUMBER DEFAULT to_estimate_percent_type ( GET_PARAM('ESTIMATE_PERCENT')), block_sample IN BOOLEAN DEFAULT FALSE, method_opt IN VARCHAR2 DEFAULT GET_PARAM('METHOD_OPT'), degree IN NUMBER DEFAULT TO_DEGREE_TYPE( GET_PARAM('DEGREE')), granularity IN VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'), cascade IN BOOLEAN DEFAULT to_cascade_type ( GET_PARAM('CASCADE')), stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT 'GATHER', objlist OUT ObjectTab, statown IN VARCHAR2 DEFAULT NULL, gather_sys IN BOOLEAN DEFAULT TRUE, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE ( GET_PARAM('NO_INVALIDATE')), obj_filter_list IN ObjectTab DEFAULT NULL, detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB; DBMS_STATS.REPORT_GATHER_DATABASE_STATS ( estimate_percent IN NUMBER DEFAULT to_estimate_percent_type ( GET_PARAM('ESTIMATE_PERCENT')), block_sample IN BOOLEAN DEFAULT FALSE, method_opt IN VARCHAR2 DEFAULT GET_PARAM('METHOD_OPT'), degree IN NUMBER DEFAULT TO_DEGREE_TYPE( GET_PARAM('DEGREE')), granularity IN VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'), cascade IN BOOLEAN DEFAULT to_cascade_type ( GET_PARAM('CASCADE')), stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT 'GATHER', statown IN VARCHAR2 DEFAULT NULL, gather_sys IN BOOLEAN DEFAULT TRUE, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE ( GET_PARAM('NO_INVALIDATE')), obj_filter_list IN ObjectTab DEFAULT NULL, detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表155-84 REPORT_GATHER_DATABASE_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次を受け入れます。
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、データベース内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 統計表は、分析するオブジェクトと同じスキーマに常駐するとみなされるので、各スキーマにこのオプションを使用するための表が1つ必要です。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
|
|
オブジェクト・フィルタのリスト。指定された場合、 |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
このファンクションは、GATHER_DICTIONARY_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_DICTIONARY_STATS
が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_DICTIONARY_STATS内のものとまったく同じです。
構文
DBMS_STATS.REPORT_GATHER_DICTIONARY_STATS ( comp_id IN VARCHAR2 DEFAULT NULL, estimate_percent IN NUMBER DEFAULT TO_ESTIMATE_PERCENT_TYPE (GET_PARAM('ESTIMATE_PERCENT')), block_sample IN BOOLEAN DEFAULT FALSE, method_opt IN VARCHAR2 DEFAULT GET_PARAM('METHOD_OPT'), degree IN NUMBER DEFAULT TO_DEGREE_TYPE (GET_PARAM('DEGREE')), granularity IN VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'), cascade IN BOOLEAN DEFAULT TO_CASCADE_TYPE (GET_PARAM('CASCADE')), stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT 'GATHER AUTO', objlist OUT ObjectTab, statown IN VARCHAR2 DEFAULT NULL, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE (GET_PARAM('NO_INVALIDATE')), obj_filter_list IN ObjectTab DEFAULT NULL, detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB; DBMS_STATS.REPORT_GATHER_DICTIONARY_STATS ( comp_id IN VARCHAR2 DEFAULT NULL, estimate_percent IN NUMBER DEFAULT TO_ESTIMATE_PERCENT_TYPE (GET_PARAM('ESTIMATE_PERCENT')), block_sample IN BOOLEAN DEFAULT FALSE, method_opt IN VARCHAR2 DEFAULT GET_PARAM('METHOD_OPT'), degree IN NUMBER DEFAULT TO_DEGREE_TYPE (GET_PARAM('DEGREE')), granularity IN VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'), cascade IN BOOLEAN DEFAULT TO_CASCADE_TYPE (GET_PARAM('CASCADE')), stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT 'GATHER AUTO', statown IN VARCHAR2 DEFAULT NULL, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE (GET_PARAM('NO_INVALIDATE')), detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表155-85 REPORT_GATHER_DICTIONARY_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマのコンポーネントID( |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。 |
|
次を受け入れます。
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
オブジェクト・フィルタのリスト。指定された場合、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対して |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
このファンクションは、GATHER_FIXED_OBJECTS_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_FIXED_OBJ_STATS
が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_FIXED_OBJ_STATS
内のものとまったく同じです。
構文
DBMS_STATS.REPORT_GATHER_FIXED_OBJ_STATS ( stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE ( GET_PARAM('NO_INVALIDATE')), detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表155-86 REPORT_GATHER_FIXED_OBJ_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
このファンクションは、GATHER_SCHEMA_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_SCHEMA_STATS
が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_SCHEMA_STATS
内のものとまったく同じです。
構文
DBMS_STATS.REPORT_GATHER_SCHEMA_STATS ( ownname IN VARCHAR2, estimate_percent IN NUMBER DEFAULT TO_ESTIMATE_PERCENT_TYPE ( GET_PARAM ('ESTIMATE_PERCENT')), block_sample IN BOOLEAN DEFAULT FALSE, method_opt IN VARCHAR2 DEFAULT GET_PARAM ('METHOD_OPT'), degree IN NUMBER DEFAULT TO_DEGREE_TYPE ( GET_PARAM('DEGREE')), granularity IN VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'), cascade IN BOOLEAN DEFAULT TO_CASCADE_TYPE ( GET_PARAM ('CASCADE')), stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT 'GATHER', objlist OUT ObjectTab, statown IN VARCHAR2 DEFAULT NULL, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE ( GET_PARAM ('NO_INVALIDATE')), force IN BOOLEAN DEFAULT FALSE, obj_filter_list IN ObjectTab DEFAULT NULL, detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB; DBMS_STATS.REPORT_GATHER_SCHEMA_STATS ( ownname IN VARCHAR2, estimate_percent IN NUMBER DEFAULT TO_ESTIMATE_PERCENT_TYPE ( GET_PARAM ('ESTIMATE_PERCENT')), block_sample IN BOOLEAN DEFAULT FALSE, method_opt IN VARCHAR2 DEFAULT GET_PARAM ('METHOD_OPT'), degree IN NUMBER DEFAULT TO_DEGREE_TYPE ( GET_PARAM('DEGREE')), granularity IN VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'), cascade IN BOOLEAN DEFAULT TO_CASCADE_TYPE ( GET_PARAM ('CASCADE')), stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT 'GATHER', statown IN VARCHAR2 DEFAULT NULL, no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE ( GET_PARAM ('NO_INVALIDATE')), force IN BOOLEAN DEFAULT FALSE, obj_filter_list IN ObjectTab DEFAULT NULL, detail_level IN VARCHAR2 DEFAULT 'TYPICAL', format IN VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表155-87 REPORT_GATHER_SCHEMA_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマ( |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次を受け入れます。
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
|
オブジェクト・フィルタのリスト。指定された場合、 |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
サンプリングのパーセント指定には特定の値を使用できますが、次の場合は、DBMS_STATS
でその値が有効ではなくなります。
結果が2500行未満の場合(サンプルとしてはデータ量が非常に少ない)。
指定のパーセントが特定のパーセントを超えた場合。
例
オブジェクト・フィルタ・リストの適用
次の例では、SAMPLE
スキーマ内の接頭辞がT
の表およびSYS
スキーマ内のいずれかの表が失効している場合、それらの表に対する統計情報が収集されるように指定します。
DECLARE filter_lst DBMS_STATS.OBJECTTAB := DBMS_STATS.OBJECTTAB(); BEGIN filter_lst.extend(2); filter_lst(1).ownname := 'SAMPLE'; filter_lst(1).objname := 'T%'; filter_lst(2).ownname := 'SYS'; DBMS_STATS.GATHER_SCHEMA_STATS(NULL, obj_filter_list => filter_lst, options => 'GATHER STALE'); END;
このプロシージャは、GATHER_TABLE_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_TABLE_STATS
が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。
構文
DBMS_STATS.REPORT_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')), stattype VARCHAR2 DEFAULT 'DATA', force BOOLEAN DEFAULT FALSE) detail_level VARCHAR2 DEFAULT 'TYPICAL', format VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表155-88 REPORT_GATHER_TABLE_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
分析する表のスキーマ。 |
|
表の名前。 |
|
パーティションの名前。 |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。- column_name : 列の名前。- extension :(column_name , Colume_name [, ...])の書式の列グループまたは式。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
表の索引について統計情報を収集します。このオプションを使用することは、表の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
|
統計タイプ。許可されている値は、 |
|
ロックされている場合でも、表の統計情報を収集します。 |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
このファンクションはマルチテナント環境で特定のプラガブル・データベース(PDB)の指定された操作のレポートを生成します(オプション)。
構文
DBMS_STATS.REPORT_SINGLE_STATS_OPERATIONS ( opid NUMBER, detail_level VARCHAR2 DEFAULT 'TYPICAL', format VARCHAR2 DEFAULT 'TEXT' container_id NUMBER DEFAULT NULL) RETURN CLOB;
パラメータ
表155-89 REPORT_SINGLE_STATS_OPERATIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
操作ID |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
|
この操作が実行されたプラガブル・データベース(PDB)のID。マルチテナント環境では、操作IDによって操作が一意に識別されません。つまり、各PDBの異なる操作に同じ操作IDが割り当てられている場合があります。したがって、マルチテナント環境では、PDB IDが指定されない場合、レポートに複数の操作が含まれる場合があります。通常の(CDBではない)データベース環境では、操作IDは操作ごとに一意です。 |
このファンクションは、2つのタイムスタンプ(指定されている場合と指定されていない場合がある)の間に実行されるすべての統計操作のレポートを生成します。これを使用するとレポートの範囲を狭め、レポートに自動統計情報収集の実行のみを含めることができます。さらに、マルチテナント環境では、オプションとしてプラガブル・データベース(PDB)のIDを指定して、指定されたプラガブル・データベースからの統計操作のみが報告されるようにすることもできます。
構文
DBMS_STATS.REPORT_STATS_OPERATIONS ( detail_level VARCHAR2 DEFAULT 'TYPICAL', format VARCHAR2 DEFAULT 'TEXT', latestN NUMBER DEFAULT NULL, since TIMESTAMP WITH TIME ZONE DEFAULT NULL, until TIMESTAMP WITH TIME ZONE DEFAULT NULl, auto_only BOOLEAN DEFAULT FALSE, container_ids DBMS_UTILITY.NUMBER_ARRAY DEFAULT DBMS_STATS.NULL_NUMTAB) RETURN CLOB;
パラメータ
表155-90 REPORT_STATS_OPERATIONSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
レポートの内容の詳細レベル
|
|
レポート・フォーマットは次のとおりです。
|
|
指定された時間ポイント(開始と終了)の間に実行された最新のN個の操作のみが含まれるようにレポートを制限します。デフォルト値は |
|
レポートには、このタイムスタンプ後に開始された統計操作のみが含まれます。 |
|
レポートには、このタイムスタンプ前に終了した統計操作のみが含まれます。 |
|
|
|
マルチテナント環境では、1つ以上のプラガブル・データベース(PDB)が含まれています。 |
例
container_ids
入力パラメータのタイプはDBMS_UTILITY.NUMBER_ARRAY
で、これはPL/SQL連想配列コレクションです。連想配列タイプでは、より柔軟性な、harvals
表のように編成されたエントリが許可されていますが、このファンクションは、container_ids
を正規表コレクション(最初のIDが索引1にあり、最後のIDが索引container_ids.count
にある。2つのID間に空の配列スロットは存在しない)として処理します。3つのコンテナIDの例を次に示します。
DECLARE conid_tab DBMS_UTILITY.NUMBER_ARRAY; report clob; BEGIN conid_tab(1) := 124; conid_tab(2) := 63; conid_tab(3) := 98; report := DBMS_STATS.REPORT_STATS_OPERATIONS (container_ids => conid_tab); END;
このプロシージャは、グローバル・プリファレンス(CASCADE
、ESTIMATE_PERCENT
、GRANULARITY
など)をデフォルト値に設定します。また、SET_GLOBAL_PREFSプロシージャによって設定されたグローバル・プリファレンスを元に戻します。
注意: テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、RESET_GLOBAL_PREF_DEFAULTSプロシージャを使用してください。「推奨されないサブプログラム」も参照してください。 |
このプロシージャは、すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。
このプロシージャは、データベース内のすべての表の統計情報を、指定したタイムスタンプ(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')));
パラメータ
表155-91 RESTORE_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
|
このプロシージャは、すべてのディクショナリ表('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')));
パラメータ
表155-92 RESTORE_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
|
このプロシージャは、すべての固定表の統計情報を、指定したタイムスタンプ(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')));
パラメータ
表155-93 RESTORE_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
|
このプロシージャは、スキーマ内のすべての表の統計情報を、指定したタイムスタンプ(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')));
パラメータ
表155-94 RESTORE_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアする表のスキーマ。 |
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
|
このプロシージャは、システムの統計情報を、指定したタイムスタンプ(as_of_timestamp
)でリストアします。
このプロシージャは、表の統計情報を、指定したタイムスタンプ(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')));
パラメータ
表155-96 RESTORE_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアする表のスキーマ。 |
|
表の名前。 |
|
統計情報をリストアするタイムスタンプ。 |
|
表がクラスタの一部であるときに、このパラメータが |
|
統計情報は、表の統計情報がロックされていてもリストアされます。指定したタイムスタンプでの表の統計情報がロックされていない場合は、その統計情報をロック解除します。 |
|
|
このプロシージャは、指定したSQLチューニング・セットで列使用情報を文からシードします。指定したSQLチューニング・セットでSQL文を繰り返し、それらをコンパイルして、その文に表示される列に関する列使用情報をシードします。システムのワークロードを指定の時間にわたって監視し、監視ウィンドウでの処理中に実行された文に表示される列に基づいて、列の使用方法の情報をシードできます。
構文
DBMS_STATS.SEED_COL_USAGE ( sqlset_name IN VARCHAR2, owner_name IN VARCHAR2, time_limit IN POSITIVE DEFAULT NULL);
使用上の注意
このプロシージャを呼び出すには、ANALYZE
ANY
権限とANALYZE
ANY
DICTIONARY
権限が必要です。
このプロシージャは、列のグループもレポートします。記録される列のグループの拡張子は、CREATE_EXTENDED_STATSファンクションのプロシージャを使用して作成できます。sqlset_name
およびowner_name
がNULL
の場合、次のtime_limit
秒にシステムで実行される文に関する列(グループ)使用情報が記録されます。
このプロシージャは、列に関連する情報を設定します。ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプが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);
パラメータ
表155-98 SET_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
統計情報を格納する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
個別値の数。 |
|
列密度。この値が |
|
|
|
|
|
列の平均長(バイト単位)。 |
|
Oracle内部で使用( |
|
|
|
|
|
列の統計情報がロックされている場合でも、この値を設定します。 |
このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスを設定するために使用されます。これらの表は、add_sys
パラメータにTRUE
を渡すことによって含めることができます。
構文
DBMS_STATS.SET_DATABASE_PREFS ( pname IN VARCHAR2, pvalue IN VARCHAR2, add_sys IN BOOLEAN DEFAULT FALSE);
パラメータ
表155-99 SET_DATABASE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
. |
|
. |
|
. |
|
|
グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトは |
. |
|
. |
'
|
. |
|
. |
パーティション表の |
|
|
|
|
. |
|
|
|
|
|
|
|
|
プリファレンスの値。 |
|
値 |
このプロシージャは、グローバルな統計プリファレンスを設定するために使用されます。
パラメータ
表155-100 SET_GLOBAL_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。
|
|
|
. |
|
|
|
. |
|
. |
|
|
|
. |
'
|
. |
パーティション表の |
. |
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。- column_name : 列の名前。- extension : (column_name, colume_name [, ...]) の書式の列グループまたは式。
デフォルトは |
. |
|
. |
|
. |
|
|
|
|
|
|
プリファレンスの値。 |
このプロシージャは、索引に関連する情報を設定します。ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプが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);
パラメータ
表155-101 SET_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
索引の名前。 |
|
統計情報を格納する索引パーティションの名前。索引がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
索引(パーティション)内の行数。 |
|
索引(パーティション)内のリーフ・ブロックの数。 |
|
索引(パーティション)内の個別キーの数。 |
|
この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。この値が提供されない場合、この値は |
|
この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。この値が提供されない場合、この値は |
|
|
|
索引(パーティション)の高さ。 |
|
Oracle内部で使用( |
|
|
|
|
|
推測品質。 |
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
|
索引の統計情報がロックされている場合でも、この値を設定します。 |
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblk
およびcachehit
を維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
注意: テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、SET_GLOBAL_PREFSプロシージャを使用してください。「推奨されないサブプログラム」も参照してください。 |
このプロシージャは、DBMS_STATS
プロシージャのパラメータのデフォルト値を設定します。GET_PARAM
ファンクション
を使用して、パラメータの現在のデフォルト値を取得できます。
パラメータ
表155-102 SET_PARAMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
パラメータ名。次のパラメータのデフォルト値を設定できます。
|
|
パラメータ値。
|
このプロシージャは、指定した操作の処理速度の値を設定します。
パラメータ
表155-103 SET_PROCESSING_RATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
操作の名前。 |
|
処理速度。有効な値は次のとおりです。 |
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスを設定するために使用されます。
パラメータ
表155-104 SET_SCHEMA_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。
|
. |
|
. |
|
. |
|
|
|
. |
'
|
. |
パーティション表の |
|
|
|
|
. |
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。- column_name : 列の名前。- extension : (column_name, colume_name [, ...]) の書式の列グループまたは式。
デフォルトは |
. |
|
. |
|
. |
|
|
|
|
|
|
プリファレンスの値。 |
このプロシージャは、システムの統計情報を設定します。
構文
DBMS_STATS.SET_SYSTEM_STATS ( pname VARCHAR2, pvalue NUMBER, stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表155-105 SET_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
取得するパラメータ名。次の値の1つが入ります。
|
|
取得するパラメータ値。 |
|
統計情報を取得するユーザー統計表の識別子。 |
|
|
|
|
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを設定するために使用されます。
構文
DBMS_STATS.SET_TABLE_PREFS ( ownname IN VARCHAR2, tabname IN VARCHAR2, pname IN VARCHAR2, pvalue IN VARCHAR2);
パラメータ
表155-106 SET_TABLE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
表名。 |
|
プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。
|
. |
|
|
|
. |
|
. |
|
|
|
. |
'
|
. |
パーティション表の |
|
|
|
|
. |
- integer : ヒストグラム・バケット数。1から2048の範囲です。- REPEAT : すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。- AUTO : 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。- SKEWONLY : 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。- column_name : 列の名前。- extension : (column_name, colume_name [, ...]) の書式の列グループまたは式。
デフォルトは |
. |
|
. |
|
. |
|
|
|
|
プリファレンスの値。 |
このプロシージャは、表に関連する情報を設定します。
構文
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);
パラメータ
表155-107 SET_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。 |
|
表の名前。 |
|
統計情報を格納する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
表(パーティション)内の行数。 |
|
表(パーティション)が占有するブロックの数。 |
|
表(パーティション)の行の平均長。 |
|
Oracle内部で使用( |
|
|
|
|
|
セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。 |
|
セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。 |
|
表の統計情報がロックされている場合でも、この値を設定します。 |
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
Oracleは常にcachedblk
およびcachehit
を維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
このファンクションは、ユーザー指定の拡張に対して作成された統計情報エントリの名前を戻します。拡張が作成されなかった場合は、エラーが発生します。
構文
DBMS_STATS.SHOW_EXTENDED_STATS_NAME ( ownname VARCHAR2, tabname VARCHAR2, extension VARCHAR2) RETURN VARCHAR2;
このプロシージャは、指定した表の統計情報を、dblink
によって指定されたリモート・データベースからローカル・データベースに転送します。ソース・データベースの統計は保持されます。これは、シノプシスやDML監視情報などの統計関連構造も転送します。
構文
DBMS_STATS.TRANSFER_STATS ( ownname IN VARCHAR2, tabname IN VARCHAR2, dblink IN VARCHAR2, options IN NUMBER DEFAULT NULL);
このプロシージャは、スキーマ内のすべての表の統計情報をロック解除します。
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*
、DELETE_*
、IMPORT_*
、GATHER_*
の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATS
など)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。
このプロシージャは、表の統計情報をロック解除します。
使用上の注意
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。
個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*
、DELETE_*
、IMPORT_*
、GATHER_*
の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。
複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATS
など)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。
UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。