185 DBMS_STATS
DBMS_STATS
パッケージを使用すると、データベース・オブジェクト用に収集したオプティマイザの統計情報を表示および変更できます。
ユーザーは、DBMS_STATSパッケージを使用して、グローバル一時表(GTT)の統計情報を収集することもできます。ただし、DBMS_STATS
ではプライベート一時表(PTT)の統計情報は収集できません。
この章のトピックは、次のとおりです:
185.1 DBMS_STATSの概要
パフォーマンスを向上させるために、データベースを使用してオプティマイザ統計情報を収集できます。
ノート:
デフォルトでは、データベースにより統計情報が自動的に収集されるため、このパッケージは特殊な場合のみに使用します。
オプティマイザ統計情報は、ユーザーのスキーマに作成したデータ・ディクショナリや表に常駐させることができます。また、このパッケージを使用して、表およびドメイン索引に関するユーザー定義の統計情報を収集および管理できます。たとえば、関連性が定義されている列に対してDELETE_COLUMN_STATS
プロシージャを起動すると、この列にあるユーザー定義の統計情報と標準的な統計情報の両方が削除されます。
コストベースのオプティマイザに影響を与える統計情報は、データ・ディクショナリに格納されているオプティマイザ統計情報のみです。また、DBMS_STATS
を使用して、並列的に統計情報を収集できます。
オプティマイザ統計アドバイザは、統計収集プロセスを調査し、統計を収集する既存のプラクティスの問題を自動的に診断し、結果および推奨事項のレポートを生成します。アドバイザ・タスクは、メンテナンス・ウィンドウで自動的に実行されます。ただし、このジョブはオンデマンドで実行することもできます。
参照:
オプティマイザ統計情報の管理方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.2 DBMS_STATSの推奨されないサブプログラム
推奨されないサブプログラムは、使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
Oracle Database 11gリリース2 (11.2)以降では、次のサブプログラムが廃止されました。
-
かわりに、GET_PREFSファンクションを使用します。
-
かわりに、SET_GLOBAL_PREFSプロシージャを使用します。
-
かわりに、RESET_GLOBAL_PREF_DEFAULTSプロシージャを使用します。
Oracle Database 12c以降では、次のサブプログラムの使用は推奨されていません。
-
GENERATE_STATS
このプロシージャのかわりに
GATHER_INDEX_STAT
プロシージャを使用してください。
185.3 DBMS_STATSのタイプ
ヒストグラム
最小値と最大値およびヒストグラム終点のタイプは、次のとおりです。
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;
オプティマイザ統計アドバイザ
次のタイプにより、統計情報を収集できるデータベース・オブジェクトが表現されます。
TYPE ObjectElem IS RECORD (
ownname dbms_quoted_id, -- owner
objtype VARCHAR2(6), -- 'TABLE' or 'INDEX'
objname dbms_quoted_id, -- table/index
partname dbms_quoted_id, -- partition
subpartname dbms_quoted_id -- subpartition
);
TYPE ObjectTab IS TABLE OF ObjectElem;
ノート:
ObjectElem
タイプが変更された場合は、必ずsatisfy_obj_filter
をメンテナンスします。
次のタイプにより、操作が表現されます。
TYPE StatsAdvOpr IS RECORD (
name VARCHAR2(64), -- name of the operation
param VARCHAR2(4000)
); -- XML containing parameters and their values
TYPE StatsAdvOprTab IS TABLE OF StatsAdvOpr;
次のタイプにより、フィルタ・リストが表現されます。
TYPE StatsAdvFilter IS RECORD (
rulename VARCHAR2(64), -- rule name
objlist ObjectTab, -- object filter list
oprlist StatsAdvOprTab, -- operation filter list
include BOOLEAN); -- include/exclude elements in the list
TYPE StatsAdvFilterTab IS TABLE OF StatsAdvFilter;
185.4 DBMS_STATSの定数
DBMS_STATS
パッケージは、パラメータ値の指定に使用するいくつかの定数を定義します。
表185-1 DBMS_STATSの定数
名前 | タイプ | 説明 |
---|---|---|
|
|
グローバル・プリファレンスをコピーします。 |
|
|
索引の統計情報を収集するかどうかを選択できます。 |
|
|
オブジェクトのサイズ、CPU数および初期化パラメータを基に並列度を選択できます。 |
|
|
Oracleで依存カーソルを無効化するタイミングを決定できます。 |
|
|
自動サンプル・サイズのアルゴリズムを使用することを示します。 |
|
|
PURGE_STATSプロシージャに渡すことが可能で、すべての履歴統計を無条件に削除するフラグ。削除では、統計の履歴を保持する様々なディクショナリ統計表に対して |
|
|
シノプシス表領域の再要求に使用される定数。 |
185.5 DBMS_STATSの操作上のノート
DBMS_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_DATABASE_STATSプロシージャ
- GATHER_DICTIONARY_STATSプロシージャ
- GATHER_FIXED_OBJECTS_STATSプロシージャ
- GATHER_INDEX_STATSプロシージャ
- GATHER_SCHEMA_STATSプロシージャ
- GATHER_SYSTEM_STATSプロシージャ
- GATHER_TABLE_STATSプロシージャ
GATHER_*
プロシージャは、列およびドメイン索引に関するユーザー定義の統計情報も収集します。
statown
、stattab
およびstatid
の各パラメータは、パッケージに対して、新規の統計情報を収集する前に、指定した表内の現行の統計情報をバックアップするように指示します。
関連オブジェクトに十分な統計情報がある場合、導出オブジェクトの統計情報を生成するために、Oracleは次のプロシージャも提供します。
統計情報の設定または取得
次のサブプログラムを使用して、個別の列、索引および表に関連する統計情報を格納および取り出します。
ユーザー定義の統計情報を設定する特別バージョンのSET_*_STATS
プロシージャでは、次の情報(提供された場合)がディレクトリまたはユーザー統計表に格納されます。
-
ユーザー定義の統計情報
-
統計タイプの所有者
-
統計タイプの名前。
ユーザー定義の統計情報と対応する統計タイプは、USTATS$
ディクショナリ表に挿入されます。ユーザー定義の統計情報は、統計タイプ名の指定なしに指定できます。
特別バージョンのGET_*_STATS
プロシージャは、ユーザー定義の統計情報および統計タイプの所有者と名前を、指定したスキーマ・オブジェクトに対応するOUT
引数として戻します。ユーザー定義の統計情報が収集されていない場合は、NULL
値が戻ります。
統計情報の削除
DELETE_*
プロシージャは、ユーザー定義の統計情報、および指定したスキーマ・オブジェクトに関する標準的な統計情報の両方を削除します。
- DELETE_COLUMN_STATSプロシージャ
- DELETE_DATABASE_STATSプロシージャ
- DELETE_DICTIONARY_STATSプロシージャ
- DELETE_FIXED_OBJECTS_STATSプロシージャ
- DELETE_INDEX_STATSプロシージャ
- DELETE_SCHEMA_STATSプロシージャ
- DELETE_SYSTEM_STATSプロシージャ
- DELETE_TABLE_STATSプロシージャ
DELETE_TABLE_STATS
、DELETE_DICTIONARY_STATS
、DELETE_DATABASE_STATS
およびDELETE_SCHEMA_STATS
には、削除する統計情報を指定するパラメータstat_category
があります。このパラメータは、カンマで区切られた複数の値を受け入れます。サポートされる値は、'OBJECT_STATS'
(表統計、列統計および索引統計)と'SYNOPSES'
(統計が増分的に保持されるときに作成される補助統計)です。デフォルトは'OBJECT_STATS, SYNOPSES'
です。
統計情報の転送
次のプロシージャを使用して、ユーザー統計表を作成および削除します。
次のプロシージャを使用して、統計情報を転送します。
-
ディクショナリからユーザー統計表への転送(
EXPORT_
*) -
ユーザー統計表からディクショナリへの転送(
IMPORT_
*)
ノート:
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
統計情報のロックまたはロック解除
オブジェクトの統計情報をロックおよびロック解除するには、次のプロシージャを使用します。
LOCK_*
プロシージャは、統計情報の現在のセットをアクセス制限するか、統計情報を不変のままにします。表の統計情報がロックされている場合、表統計情報、列統計情報、ヒストグラムおよび統計情報など、すべての依存索引に関する情報も含めて、表に依存するすべての統計情報はロックされているとみなされます。
統計履歴のリストアおよびパージ
指定したタイムスタンプの統計情報をリストアするには、次のプロシージャを使用します。これは、新規に収集された統計では不適切な実行計画が作成され、管理者が前の統計セットに戻す必要がある場合に役立ちます。
- RESET_GLOBAL_PREF_DEFAULTSプロシージャ
- RESTORE_DATABASE_STATSプロシージャ
- RESTORE_DICTIONARY_STATSプロシージャ
- RESTORE_FIXED_OBJECTS_STATSプロシージャ
- RESTORE_SCHEMA_STATSプロシージャ
- RESTORE_SYSTEM_STATSプロシージャ
- RESTORE_TABLE_STATSプロシージャ
ディクショナリ内で統計が変更されるたびに、後でリストアできるように前のバージョンの統計が自動的に保存されます。古い統計情報は、統計履歴のリテンション設定とシステムで実行された最新の統計情報収集の時間に基づいて、一定の周期で自動的にパージされます。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)に関する統計がある場合、オプティマイザは、これらの統計を使用して述語の組合せのカーディナリティを見積もります。オプティマイザは、式の統計を使用してその式の述語のカーディナリティを見積もります。拡張統計情報は、列の統計情報に似ています。列名を取るプロシージャは列名のかわりに拡張統計情報名を受け入れます。
関連サブプログラム:
オプティマイザ統計アドバイザ
オプティマイザ統計アドバイザは、オプティマイザ統計情報を管理するベスト・プラクティスを使用する上で役立つ組込みの診断ソフトウェアです。アドバイザは、現在統計を収集している方法(手動のスクリプトの使用、明示的なパラメータの設定など)、既存の統計収集ジョブの効果および収集された統計の品質を分析します。アドバイザで、検出したすべての問題の検索結果が生成されます。これらの検索結果に基づいて、アドバイザは、DBA_ADVISOR_RECOMMENDATIONS
に推奨事項を格納します。
アドバイザは、次のクラスにルールを編成します。
-
システム
このクラスは、統計収集のプリファレンス、自動統計収集ジョブのステータス、SQL計画ディレクティブの使用などを確認します。このクラスのルールでは、
V$STATS_ADVISOR_RULES.RULE_TYPE
にSYSTEM
値があります。 -
操作
このクラスは、統計収集がデフォルトを使用しているか、テスト統計が
SET_*_STATS
プロシージャなどを使用して作成されているかを確認します。このクラスのルールでは、V$STATS_ADVISOR_RULES.RULE_TYPE
にOPERATION
値があります。 -
オブジェクト
このクラスは、統計の品質、統計の失効、統計の不要な収集などを確認します。このクラスのルールでは、
V$STATS_ADVISOR_RULES.RULE_TYPE
にOBJECT
値があります。
すべてのオプティマイザ統計アドバイザのサブプログラムで、ADVISOR
権限が必要になります。すべてのプロシージャおよびファンクションは、タスク所有者の権限ではなく、操作の実行者の権限を使用して実行されます。たとえば、ANALYZE ANY DICTIONARY
権限のないユーザーがタスクt1
を作成し、その後DBAがこのタスクを実行すると、タスク実行でSYS
オブジェクトがチェックされます。別の例としては、user1
によって実行され、中断されて、user2
によって再開されるタスクがあります。この場合、再開された実行のチェックは、user1
ではなくuser2
の権限に基づきます。
次のサブプログラムを使用すると、オプティマイザ統計アドバイザを管理できます。
参照:
オプティマイザ統計アドバイザを使用して統計情報を分析する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.6 DBMS_STATSのデータ構造
DBMS_STATS
パッケージは、レコード
・タイプを定義します。
レコード・タイプ
185.6.1 DBMS_STATS STAT_RECレコード・タイプ
このレコード・タイプは、ユーザーが列の統計を手動で設定する場合のために提供されています。フィールドを使用して、列の最小/最大値、および列のヒストグラムを指定できます。
構文
TYPE STATREC IS RECORD ( epc NUMBER, minval RAW(2000), maxval RAW(2000), bkvals NUMARRAY, novals NUMARRAY, chvals CHARARRAY, eavals RAWARRAY, rpcnts NUMARRAY, eavs NUMBER);
COMPARISON_TYPEレコード・タイプのフィールド(STAT_RECの属性)
表185-2 STAT_RECの属性
フィールド | 説明 |
---|---|
|
ヒストグラム内のバケット数 |
|
最小値 |
|
最大値 |
|
バケット数の配列 |
|
正規化エンドポイント値の配列 |
|
ダンプされたエンドポイント値の配列 |
|
エンドポイント実際値の配列 |
|
エンドポイント値の頻度の配列 |
|
実際のエンドポイント値がヒストグラムで必要になるかどうかを示す数値。PREPARE_COLUMN_VALUESプロシージャを使用している場合、このフィールドは自動的に入力されます。 |
185.7 DBMS_STATSサブプログラムの要約
この表は、DBMS_STATS
サブプログラムを示し、簡単に説明しています。
表185-3 DBMS_STATSパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
統計履歴のリテンション値を変更します。 |
|
オプティマイザ統計アドバイザの実行を取り消します。 |
|
オプティマイザ統計アドバイザ・タスクのフィルタ・リストを構成します。 |
|
オプティマイザ統計アドバイザ・タスクのオブジェクト・フィルタを構成します。 |
|
オプティマイザ統計アドバイザ・タスクの操作フィルタを構成します。 |
|
オプティマイザ統計アドバイザ・タスクのルール・フィルタを構成します。 |
|
オプティマイザ統計アドバイザのアドバイザ・タスクを作成します。 |
|
最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。 |
|
最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。 |
|
最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。 |
|
スケーリング後に、ソース・(サブ・)パーティションの統計情報を宛先(サブ・)パーティションにコピーします。 |
|
ユーザー指定の列グループまたは式の仮想列を表に作成します。 |
|
統計情報を保持できる |
|
列に関連する統計情報を削除します。 |
|
すべての表の統計プリファレンスを削除します。 |
|
データベース全体に関する統計情報を削除します。 |
|
すべてのディクショナリのスキーマ( |
|
すべての固定表の統計情報を削除します。 |
|
索引に関連する統計情報を削除します。 |
|
収集され、パブリッシュされなかったプライベート統計を削除します。 |
|
指定した統計情報のソースの処理速度を削除します。ソースが指定されていない場合、すべてのソースの統計情報が削除されます。 |
|
指定した所有者名で所有されているすべての表の統計プリファレンスを削除します。 |
|
スキーマに関連する統計情報を削除します。 |
|
システムの統計情報を削除します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを削除します。 |
|
表に関連する統計情報を削除します。 |
|
過去の2つのタイムスタンプからの表の統計情報の比較、およびそれらのタイムスタンプの時点の統計情報の比較を行います。 |
|
保留中の統計情報とタイムスタンプの時点の統計情報またはディクショナリの統計情報を比較します。 |
|
2つの異なるソースの表の統計情報を比較します。 |
|
指定したオプティマイザ統計アドバイザ・タスクを削除します。 |
|
ユーザー指定の拡張に対して作成された統計情報エントリを削除します。 |
|
|
|
以前に作成されたオプティマイザ統計アドバイザ・タスクを実行します |
|
特定の列に関する統計情報を取り出し、 |
|
すべての表の統計プリファレンスをエクスポートします。 |
|
データベース内のすべてのオブジェクトに関する統計情報を取り出し、 |
|
すべてのディクショナリのスキーマ(' |
|
固定表に関する統計情報を取り出し、 |
|
特定の索引に関する統計情報を取り出し、 |
|
保留中として収集および格納された統計情報をエクスポートします。 |
|
指定した所有者名で所有されているすべての表の統計プリファレンスをエクスポートします。 |
|
|
|
システムの統計情報を取り出し、ユーザー統計表に格納します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを、指定した統計表にエクスポートします。 |
|
特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。 |
|
インメモリーのすべての表の監視情報をディクショナリにフラッシュします。 |
|
データベース内のすべてのオブジェクトに関する統計情報を収集します。 |
|
ディクショナリのスキーマ(' |
|
固定オブジェクトの統計情報を収集します。 |
|
索引の統計情報を収集します。 |
|
|
|
スキーマ内のすべてのオブジェクトに関する統計情報を収集します。 |
|
システムの統計情報を収集します。 |
|
表と列(および索引)の統計情報を収集します。 |
|
関連するオブジェクトに関して以前に収集した統計情報から、オブジェクトの統計情報を生成します。 |
|
オプティマイザ統計アドバイザ操作の操作フィルタを作成します。 |
|
指定された項目の推奨レポートを生成します。 |
|
列に関連するすべての情報を取得します。 |
|
索引に関連するすべての情報を取得します。 |
|
|
|
指定したプリファレンスのデフォルト値を取得します。 |
|
統計履歴を使用できる最も古いタイムスタンプを取得します。 |
|
現在の統計履歴のリテンション値を戻します。 |
|
|
|
表に関連するすべての情報を取得します。 |
|
オプティマイザ統計アドバイザによって作成された推奨事項を実装します。 |
|
|
|
すべての表の統計プリファレンスをインポートします。 |
|
データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。 |
|
すべてのディクショナリのスキーマ(' |
|
|
|
|
|
指定した所有者名で所有されているすべての表の統計プリファレンスをインポートします。 |
|
|
|
ユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを設定します。 |
|
|
|
現在実行しているオプティマイザ統計アドバイザ・タスクを割り込みます。 |
|
パーティションの統計情報をロックします。 |
|
スキーマのすべての表の統計情報をロックします。 |
|
表の統計情報をロックします。 |
|
|
|
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。 |
|
保留中として収集および格納された統計情報をパブリッシュします。 |
|
ディクショナリに保存されている統計情報の古いバージョンをパージします。 |
|
ユーザー統計表のオブジェクトの名前を再マップします。 |
|
オプティマイザ・アドバイザ・タスクの結果をレポートします。 |
|
記録された列(グループ)使用情報をレポートします。 |
|
自動統計情報収集ジョブをレポート・モードで実行します。 |
|
GATHER_DATABASE_STATSプロシージャをレポート・モードで実行します。 |
|
GATHER_DICTIONARY_STATSプロシージャをレポート・モードで実行します。 |
|
GATHER_FIXED_OBJECTS_STATSプロシージャをレポート・モードで実行します。 |
|
GATHER_SCHEMA_STATSプロシージャをレポート・モードで実行します。 |
|
GATHER_TABLE_STATSプロシージャをレポート・モードで実行します。 |
|
2つのタイムスタンプ(指定されている場合と指定されていない場合がある)の間に実行されるすべての統計操作のレポートを生成します。 |
|
オプティマイザ統計アドバイザ・タスクの実行を初期状態にリセットします。現在実行されていないタスクのみをリセットします。 |
|
記録された列(グループ)使用情報をリセットします。 |
|
すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。 |
|
グローバル・プリファレンスをデフォルト値にリセットします(「DBMS_STATSの推奨されないサブプログラム」を参照)。 |
|
すべてのディクショナリ表(' |
|
すべての固定表の統計情報を、指定したタイムスタンプでリストアします。 |
|
スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。 |
|
指定したタイムスタンプ( |
|
中断したタスクを再開します。最後に中断した実行のみを再開します。 |
|
オプティマイザ統計アドバイザで検出された問題に対して推奨されるアクションを実装するスクリプトを取得します。 |
|
指定したSQLチューニング・セットでSQL文を繰り返し、それらをコンパイルして、その文に表示される列に関する列使用情報をシードします。 |
|
オプティマイザ統計アドバイザ・タスク・パラメータの値を更新します |
|
列に関連する情報を設定します。 |
|
すべての表の統計プリファレンスを設定します。 |
|
グローバルな統計プリファレンスを設定します。 |
|
索引に関連する情報を設定します。 |
|
|
|
特定の操作の処理速度の値を設定します。 |
|
指定した所有者名で所有されているすべての表の統計プリファレンスを設定します。 |
|
システムの統計情報を設定します。 |
|
指定したスキーマ内の指定した表の統計プリファレンスを設定します。 |
|
表に関連する情報を設定します。 |
|
ユーザー指定の拡張に対して作成された仮想列の名前を戻します。 |
|
指定した表の統計情報を、 |
|
パーティションの統計情報をロック解除します。 |
|
スキーマ内にあるすべての表の統計情報をロック解除します。 |
|
表の統計情報をロック解除します。 |
|
古い表のユーザー統計情報をアップグレードします。 |
185.7.1 ALTER_STATS_HISTORY_RETENTIONプロシージャ
このプロシージャは、統計履歴のリテンション値を変更します。
統計履歴保存は、自動パージおよびPURGE_STATSプロシージャの両方で使用されます。
構文
DBMS_STATS.ALTER_STATS_HISTORY_RETENTION ( retention IN NUMBER);
パラメータ
表185-4 ALTER_STATS_HISTORY_RETENTIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リテンション期間を日数で指定します。少なくとも指定された期間は、統計履歴が保持されます。有効範囲は1から365000です。また、次の値を特定の目的に使用できます。
|
使用上のノート
このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: 権限が不十分です
185.7.2 CANCEL_ADVISOR_TASKプロシージャ
このプロシージャは、オプティマイザ統計アドバイザの実行を取り消します。アドバイザにより、現在の実行のすべての中間結果がタスクから削除されます。
構文
DBMS_STATS.CANCEL_ADVISOR_TASK (
task_name IN VARCHAR2);
パラメータ
表185-5 CANCEL_ADVISOR_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
ユーザーによってタスクが実行され、中断されて、別のユーザーによって再開されるケースについて考えます。この場合、オプティマイザ統計アドバイザでは、タスクを再開したユーザーの権限に基づいて、再開された実行をチェックします。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
使用上のノート
取り消す場合または中断する場合は、指定したタスクが現在実行されている必要があります。
例185-1 オプティマイザ統計アドバイザの取消し
この例では、SQL*Plusセッションを開始して、my_task
というアドバイザ・タスクを作成して実行します。
DECLARE
v_tname VARCHAR2(128) := 'my_task';
v_ename VARCHAR2(128) := NULL;
BEGIN
-- create a task
v_tname := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname);
-- execute the task
v_ename := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
END;
/
個々の端末で、2つ目のSQL*Plusセッションを開始して、次のプログラムを実行します。
EXEC DBMS_STATS.CANCEL_ADVISOR_TASK('my_task');
最初のセッションでは、タスクの取消しを示すORA-13632
が戻されます。
ORA-13632: The user cancelled the current operation.
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.3 CONFIGURE_ADVISOR_FILTERファンクション
このファンクションは、オプティマイザ統計アドバイザ・タスクのフィルタ・リストを構成します。フィルタは、無関係な検索結果をレポートから除外する場合に便利です。
構文
DBMS_STATS.CONFIGURE_ADVISOR_FILTER ( task_name IN VARCHAR2, stats_adv_opr_type IN VARCHAR2, configuration_type IN VARCHAR2, filter IN StatsAdvFilterTab := NULL) RETURN CLOB;
パラメータ
表185-6 CONFIGURE_ADVISOR_FILTERファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
構成する操作のタイプ。使用可能な値は、 |
|
構成のタイプ。次の値があります。
|
|
スクリプトのフィルタ項目のリスト。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
戻り値
このファンクションは、指定したフィルタの構成を含むCLOBをXML形式で戻します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
使用上のノート
すべてのプロシージャにファイングレイン制御と統合インタフェースを提供するには、DBMS_STATS
でStatsAdvFilter
タイプを指定します。このデータ・タイプを使用すると、フィルタの表をインスタンス化および構成できます。その後、次のいずれかを指定するブール変数とともに、タイプStatsAdvFilter
のパラメータをCONFIGURE_ADVISOR_FILTER
に渡すことができます。
-
包含リスト
これらのオブジェクトのみをチェックに含めます。
-
除外リスト
これらのオブジェクトをチェックに含めません。
既存のリストを置き換えるかどうかを指定するパラメータを渡すこともできます。このリストでは、オブジェクト・レベルの項目と操作レベルの項目のみがフィルタ処理されます。アドバイザにより、常にシステム・レベルのルールがチェックされます。
次のタイプのフィルタを作成できます。
-
ルール・フィルタ
このフィルタは、入力としてルール名を取ります。
V$STATS_ADVISOR_RULES
ビューからルール名を取得します。 -
操作フィルタ
このフィルタは、操作名およびコール内のすべてのパラメータ値のXML文字列表現を取る完全一致検索フィルタです。XMLを取得するには、
DBA_OPTSTAT_OPERATIONS
ビューのノートを参照してください。操作のフィルタを取得するには、DBMS_STATS.GET_ADVISOR_OPR_FILTER
を使用します。 -
オブジェクト・フィルタ
このフィルタは、所有者名とオブジェクト名を受け入れます。所有者名およびオブジェクト名では、ワイルドカード文字(
%
)がサポートされます。オブジェクト名がNULLまたは%
の場合、指定したスキーマのすべてのオブジェクトに対するフィルタになります。所有者名がNULLまたは%
の場合も、システム内のすべてのオブジェクトに対するデフォルト・フィルタになります。
フィルタが指定されていない場合は、フィルタ処理のグローバルなデフォルト値(インクルードまたはエクスクルード)を設定すると、このファンクションでフィルタが認識されます。ルール、操作またはオブジェクトにフィルタが指定されていない場合、チェック中にこのファンクションで、含めるか除外するかを決定するデフォルト値が使用されます。
例185-2 ルールの有効化および無効化
特定のルールを除くすべてのルールのチェックをオフにすることができます。この例では、SQLプラン・ディレクティブが無効かどうかをチェックします。
DECLARE
v_task_name VARCHAR2(128) := 'my_task';
v_ret VARCHAR2(128);
filter DBMS_STATS.StatsAdvFilter := null;
filterTab DBMS_STATS.StatsAdvFilterTab := null;
v_counter NUMBER := 0;
v_filterReport CLOB;
BEGIN
-- Create the advisor task
v_ret := DBMS_STATS.CREATE_ADVISOR_TASK(v_task_name);
-- Initialize the filter table
filterTab := DBMS_STATS.StatsAdvFilterTab();
-- First filter: set filters to be FALSE by default
filter.include := FALSE;
-- Add this filter to the filter table
v_counter := v_counter + 1;
filterTab.extend;
filterTab(v_counter) := filter;
-- Second filter: turn on filter for one rule
filter.include := TRUE;
filter.rulename := 'TurnOnSQLPlanDirective';
-- Add the SQL plan directive filter to the filter table
v_counter := v_counter + 1;
filterTab.extend;
filterTab(v_counter) := filter;
v_filterReport := DBMS_STATS.CONFIGURE_ADVISOR_FILTER(
task_name => v_task_name,
stats_adv_opr_type => NULL,
configuration_type => 'SET',
filter => filterTab);
-- Drop the task
DBMS_STATS.DROP_ADVISOR_TASK(v_task_name);
END;
例185-3 操作フィルタの構成
この例では、ショップでカスタマイズ済スクリプトを使用して表の統計情報を収集します。特定の統計操作をレポートに表示しない場合は、操作フィルタを指定できます。
DECLARE
v_task_name VARCHAR2(128) := 'my_task';
v_ret VARCHAR2(128);
filter DBMS_STATS.StatsAdvFilter := null;
filterTab DBMS_STATS.StatsAdvFilterTab := null;
opr DBMS_STATS.StatsAdvOpr;
oprTab DBMS_STATS.StatsAdvOprTab;
v_oprCnt NUMBER := 0;
TYPE numTab IS TABLE OF NUMBER;
opr_tab numTab;
v_filterReport CLOB;
BEGIN
-- Create the advisor task
v_ret := DBMS_STATS.CREATE_ADVISOR_TASK(v_task_name);
-- Initialize filter table
filterTab := DBMS_STATS.StatsAdvFilterTab();
-- Initialize operations filter
oprTab := DBMS_STATS.StatsAdvOprTab();
SELECT ID
BULK COLLECT INTO opr_tab
FROM WRI$_OPTSTAT_OPR
WHERE OPERATION = 'set_table_stats'
AND TARGET = 'HR.EMPLOYEES';
-- Populate the operations table
FOR i IN 1..opr_tab.count LOOP
-- Use the procedure GET_ADVISOR_OPR_FILTER to construct
-- an operation filter
DBMS_STATS.GET_ADVISOR_OPR_FILTER(opr_tab(i), opr);
v_oprCnt := v_oprCnt + 1;
oprTab.extend;
oprTab(v_oprCnt) := opr;
END LOOP;
filter.include := FALSE;
filter.oprlist := oprTab;
-- Add to filter table
filterTab.extend;
filterTab(1) := filter;
v_filterReport := DBMS_STATS.CONFIGURE_ADVISOR_FILTER(
task_name => v_task_name,
stats_adv_opr_type => NULL,
configuration_type => 'SET',
filter => filterTab);
-- Drop the task
DBMS_STATS.DROP_ADVISOR_TASK(v_task_name);
END;
例185-4 特定のスキーマに関するレポート
この例では、sh
スキーマのみに関するレポートを生成します。また、sh.products
表をスキップします。次のように、オブジェクト・フィルタを作成します。
DECLARE
v_task_name VARCHAR2(128) := 'my_task';
v_ret VARCHAR2(128);
filter DBMS_STATS.StatsAdvFilter := null;
filterTab DBMS_STATS.StatsAdvFilterTab := null;
v_filterReport CLOB;
v_counter NUMBER := 0;
obj DBMS_STATS.ObjectElem;
objTab DBMS_STATS.ObjectTab;
v_objCnt NUMBER := 0;
BEGIN
-- Create the advisor task
v_ret := DBMS_STATS.CREATE_ADVISOR_TASK(v_task_name);
-- Initialize filter table
filterTab := DBMS_STATS.StatsAdvFilterTab();
-- Set object filter to be off by default
filter.include := FALSE;
objTab := DBMS_STATS.ObjectTab();
obj.ownname := NULL;
obj.objname := NULL;
-- Add to the object table
v_objCnt := v_objCnt + 1;
objTab.extend;
objTab(v_objCnt) := obj;
filter.objlist := objTab;
-- Add the object filter to the filter table
v_counter := v_counter + 1;
filterTab.extend;
filterTab(v_counter) := filter;
-- In filter 1, turn on the check only for schema SH
filter.include := TRUE;
objTab := DBMS_STATS.ObjectTab();
v_objCnt := 0;
obj.ownname := 'SH';
obj.objname := NULL;
-- add to the object table
v_objCnt := v_objCnt + 1;
objTab.extend;
objTab(v_objCnt) := obj;
filter.objlist := objTab;
-- Add the object filter to the filter table
v_counter := v_counter + 1;
filterTab.extend;
filterTab(v_counter) := filter;
-- In filter 2, exclude the check for object sh.products
filter.include := FALSE;
objTab := dbms_stats.ObjectTab();
v_objCnt := 0;
-- Specify another object filter for sh.products
obj.ownname := 'SH';
obj.objname := 'PRODUCTS';
-- Add to the object table
v_objCnt := v_objCnt + 1;
objTab.extend;
objTab(v_objCnt) := obj;
filter.objlist := objTab;
-- Add the object filter to the filter table
v_counter := v_counter + 1;
filterTab.extend;
filterTab(v_counter) := filter;
v_filterReport :=
DBMS_STATS.CONFIGURE_ADVISOR_FILTER(
task_name => v_task_name,
stats_adv_opr_type => NULL,
configuration_type => 'SET',
filter => filterTab);
-- Drop the task
DBMS_STATS.DROP_ADVISOR_TASK(v_task_name);
END;
ノート:
オプティマイザ統計アドバイザを構成する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.4 CONFIGURE_ADVISOR_OBJ_FILTERファンクション
このファンクションは、オプティマイザ統計アドバイザ・タスクのオブジェクト・フィルタを構成します。
構文
DBMS_STATS.CONFIGURE_ADVISOR_OBJ_FILTER (
task_name IN VARCHAR2,
stats_adv_opr_type IN VARCHAR2,
rule_name IN VARCHAR2,
ownname IN VARCHAR2,
tabname IN VARCHAR2,
action IN VARCHAR2)
RETURN CLOB;
パラメータ
表185-7 CONFIGURE_ADVISOR_OBJ_FILTERファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
構成する操作のタイプ。使用可能な値は、 |
|
構成するルールの名前。NULLの場合、フィルタがすべての操作レベルのルールに適用されます。 |
|
操作のターゲットの所有者名。NULLの場合、フィルタがすべての所有者名に適用されます。 |
|
操作のターゲットの表名。 |
|
指定したルールに対して実行する構成アクション。「CONFIGURE_ADVISOR_RULE_FILTERファンクション」を参照してください。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
戻り値
このファンクションは、フィルタの更新された値を含むXML CLOBを戻します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.5 CONFIGURE_ADVISOR_OPR_FILTERファンクション
このオーバーロードされたファンクションは、オプティマイザ統計アドバイザ・タスクの操作フィルタを構成します。
構文
DBMS_STATS.CONFIGURE_ADVISOR_OPR_FILTER (
task_name IN VARCHAR2,
stats_adv_opr_type IN VARCHAR2,
rule_name IN VARCHAR2,
operation_name IN VARCHAR2,
action IN VARCHAR2)
RETURN CLOB;
DBMS_STATS.CONFIGURE_ADVISOR_OPR_FILTER (
task_name IN VARCHAR2,
stats_adv_opr_type IN VARCHAR2,
rule_name IN VARCHAR2,
operation_name IN VARCHAR2,
ownname IN VARCHAR2,
tabname IN VARCHAR2,
action IN VARCHAR2)
RETURN CLOB;
DBMS_STATS.CONFIGURE_ADVISOR_OPR_FILTER (
task_name IN VARCHAR2,
stats_adv_opr_type IN VARCHAR2,
rule_name IN VARCHAR2,
operation_id IN NUMBER,
action IN VARCHAR2)
RETURN CLOB;
パラメータ
表185-8 CONFIGURE_ADVISOR_OPR_FILTERファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
構成する操作のタイプ。使用可能な値は、 |
|
構成するルールの名前。NULLの場合、フィルタがすべての操作レベルのルールに適用されます。 |
|
操作の名前。たとえば、操作名を |
|
構成する操作のID。指定した操作IDと同じ署名を持つすべての操作にフィルタが適用されます。2つの操作が同じ署名を持つ場合、それらのすべてのパラメータに同じ値が指定されています。 |
|
操作のターゲットの所有者名。nullは指定できません。 |
|
操作のターゲットの表名。 |
|
指定したルールに対して実行する構成アクション。「CONFIGURE_ADVISOR_RULE_FILTERファンクション」を参照してください。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
戻り値
このファンクションは、フィルタの更新された値を含むXML CLOBを戻します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-5 表統計を収集する操作の除外
この例では、目標はhr
スキーマ内の表統計を収集する操作を除外することです。ユーザー・アカウントstats
にはDBA
ロール、ADVISOR
権限およびSELECT ON DBA_OPTSTAT_OPERATIONS
権限が付与されています。次のステップを実行します。
-
stats
としてデータベースにログインします。 -
opt_adv_task1
という既存のタスクを削除します。DECLARE v_tname VARCHAR2(32767); BEGIN v_tname := 'opt_adv_task1'; DBMS_STATS.DROP_ADVISOR_TASK(v_tname); END; /
-
hr
スキーマの表に関する統計を収集する操作を除く、すべての操作についてアドバイスするタスクを構成する、opr_filter
というプロシージャを作成します。CREATE OR REPLACE PROCEDURE opr_filter(p_tname IN VARCHAR2) IS v_retc CLOB; BEGIN -- For all rules, prevent the advisor from operating -- on the operations selected in the following query FOR rec IN (SELECT ID FROM DBA_OPTSTAT_OPERATIONS WHERE OPERATION = 'gather_table_stats' AND TARGET LIKE 'HR.%') LOOP v_retc := DBMS_STATS.CONFIGURE_ADVISOR_OPR_FILTER( task_name => p_tname , stats_adv_opr_type => NULL , rule_name => NULL , operation_id => rec.id , action => 'DISABLE'); END LOOP; END; / SHOW ERRORS
-
opt_adv_task1
というタスクを作成して、このタスクのopr_filter
プロシージャを実行します。DECLARE v_tname VARCHAR2(32767); v_ret VARCHAR2(32767); BEGIN v_tname := 'opt_adv_task1'; v_ret := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname); opr_filter(v_tname); END; /
-
タスク
opt_adv_task1
を実行します。DECLARE v_tname VARCHAR2(32767); v_ret VARCHAR2(32767); begin v_tname := 'opt_adv_task1'; v_ret := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname); END; /
-
レポートを印刷します。
SPOOL /tmp/rep.txt SET LONG 1000000 COLUMN report FORMAT A200 SET LINESIZE 250 SET PAGESIZE 1000 SELECT DBMS_STATS.REPORT_ADVISOR_TASK( task_name => 'opt_adv_task1' , execution_name => NULL , type => 'TEXT' , section => 'ALL' ) AS report FROM DUAL; SPOOL OFF
参照:
-
DBA_OPTSTAT_OPERATIONS
についてさらに学習するには、『Oracle Databaseリファレンス』を参照してください -
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.6 CONFIGURE_ADVISOR_RULE_FILTERファンクション
このファンクションは、オプティマイザ統計アドバイザ・タスクのルール・フィルタを構成します。
構文
DBMS_STATS.CONFIGURE_ADVISOR_RULE_FILTER ( task_name IN VARCHAR2, stats_adv_opr_Type IN VARCHAR2, rule_name IN VARCHAR2, action IN VARCHAR2) RETURN CLOB;
パラメータ
表185-9 SCRIPT_ADVISOR_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
構成する操作のタイプ。使用可能な値は、 |
|
構成するルールの名前。NULLの場合、フィルタがすべてのルールに適用されます。 |
|
指定したルールに対して実行する構成アクション。使用可能な値は次のとおりです。
|
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
戻り値
このファンクションは、フィルタの更新された値を含むXML CLOBを戻します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.7 CONVERT_RAW_VALUEプロシージャ
このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。
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);
パラメータ
表185-10 CONVERT_RAW_VALUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列最小、列最大、ヒストグラム終点の実際の値のRAWタイプ表記。 |
|
変換済のタイプ固有の値。 |
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.8 CONVERT_RAW_VALUE_NVARCHARプロシージャ
このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を変換します。
GET_COLUMN_STATS
またはPREPARE_COLUMN_VALUES
で入力されたStatRec
構造のminval
フィールド、maxval
フィールドおよびeavals
フィールドの値が、有効な入力値です。
構文
DBMS_STATS.CONVERT_RAW_VALUE_NVARCHAR ( rawval RAW, resval OUT NVARCHAR2);
パラメータ
表185-11 CONVERT_RAW_VALUE_NVARCHARプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列最大または列最小のデータ・タイプ固有の出力パラメータのRAWタイプ表記。 |
|
変換済のタイプ固有の値。 |
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.9 CONVERT_RAW_VALUE_ROWIDプロシージャ
このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を変換します。
GET_COLUMN_STATS
またはPREPARE_COLUMN_VALUES
で入力されたStatRec
構造のminval
フィールド、maxval
フィールドおよびeavals
フィールドの値が、有効な入力値です。
構文
DBMS_STATS.CONVERT_RAW_VALUE_ROWID ( rawval RAW, resval OUT ROWID);
プラグマ
pragma restrict_references(convert_raw_value_rowid, WNDS, RNDS, WNPS, RNPS);
パラメータ
表185-12 CONVERT_RAW_VALUE_ROWIDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列最大または列最小のデータ・タイプ固有の出力パラメータのRAWタイプ表記。 |
|
変換済のタイプ固有の値。 |
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.10 COPY_TABLE_STATSプロシージャ
このプロシージャは、すべての依存オブジェクト(列、ローカル索引など)の統計情報もコピーします。ソースの統計情報を使用できない場合は、何もコピーされません。オプションで、指定されたscale_factor
に基づいて、(blks
数、行数などの)統計情報をスケーリングできます。
構文
DBMS_STATS.COPY_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
srcpartname VARCHAR2,
dstpartname VARCHAR2,
scale_factor VARCHAR2 DEFAULT 1,
flags NUMBER DEFAULT 0,
force BOOLEAN DEFAULT FALSE);
パラメータ
表185-13 COPY_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ソース・(サブ・)パーティションおよび宛先(サブ・)パーティションの表のスキーマ。 |
|
ソース・(サブ・)パーティションおよび宛先(サブ・)パーティションの表名。 |
|
ソース・(サブ・)パーティション。 |
|
宛先(サブ・)パーティション。 |
|
|
|
Oracle内部で使用。 |
|
この引数の値が |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: (サブ・)パーティション名が無効です。
ORA-20001
: 入力値が無効です。
使用上のノート
このプロシージャは、次のように、最初のパーティション列に対する宛先パーティションの最小値および最大値を更新します。
-
パーティション化のタイプが
HASH
の場合は、宛先パーティションの最小値および最大値は、ソース・パーティションのパーティション化のタイプと同じです。 -
パーティション化のタイプが
LIST
の場合、宛先パーティションの設定によって動作が決まります。-
宛先パーティションが
NOT DEFAULT
パーティションの場合、次のことが当てはまります。-
宛先パーティションの最小値は、宛先パーティションを記述した値リストの最小値に設定されます。
-
宛先パーティションの最大値は、宛先パーティションを記述した値リストの最大値に設定されます。
-
-
また、宛先パーティションが
DEFAULT
パーティションの場合、次のことが当てはまります。-
宛先パーティションの最小値は、ソース・パーティションの最小値に設定されます。
-
宛先パーティションの最大値は、ソース・パーティションの最大値に設定されます。
-
-
-
パーティション化のタイプが
RANGE
の場合、次のことが当てはまります。-
宛先パーティションの最小値は、宛先パーティションが最初のパーティションでないかぎり、前のパーティションの上限に設定されます。最初のパーティションの場合、最小値は宛先パーティションの上限に設定されます。
-
宛先パーティションの上限が
MAXVALUE
である場合(この場合、宛先パーティションの最大値は前のパーティションの上限に設定される)を除き、宛先パーティションの最大値は宛先パーティションの上限に設定されます。 -
ソース・パーティション列の最小値がソース・パーティション列の最大値と等しく、かつ最小値と最大値の両方がソース・パーティションの下限と等しく、単一の個別値を持つ場合、宛先パーティション列の最小値および最大値は両方とも、宛先パーティションの下限に設定されます。すべてのパーティション列に対してこの処理が行われます。
前述の条件が当てはまらない場合、2番目以降のパーティショニング列は次のように更新されます。宛先パーティション列の最大値は、1つを除き、宛先パーティションの上限とソース・パーティション列の最大値の大きい方に設定されます。宛先パーティションが
D
、その先行パーティションがD-1
、調節するキー列がCn
である場合、前のキー列Cn-1
の上限がパーティションD
とD-1
で同じであることを条件として、Cn
の最大値はD
の上限に設定されます(ソース・パーティション列の最大値は無視されます)。
-
-
変更後の列の最小値と最大値が異なっていて、個別値の数が1より小さい場合、個別値の数は2に更新されます。
-
ソースまたは宛先がコンポジット・パーティション表のパーティションである場合、このプロシージャでは基礎となるサブパーティションの統計はコピーされません。
185.7.11 CREATE_ADVISOR_TASKファンクション
このファンクションは、オプティマイザ統計アドバイザのアドバイザ・タスクを作成します。
構文
DBMS_STATS.CREATE_ADVISOR_TASK (
task_name IN VARCHAR2 := NULL)
RETURN VARCHAR2;
パラメータ
表185-14 CREATE_ADVISOR_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
タスクの名前。タスク名がすでに指定されている場合、指定したタスク名が使用されます。そうでない場合、自動的に新しいタスク名が生成されます。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
このサブプログラムは実行者権限を使用して実行します。
戻り値
このファンクションは、オプティマイザ統計アドバイザ・タスクの一意の名前を戻します。
例外
ORA-20000
: 権限が不十分です。/拡張の作成はサポートされていません。
ORA-20001
: 拡張の処理中にエラーが発生しました。
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-6 タスクの作成および実行
この例では、my_task
というオプティマイザ統計アドバイザ・タスクを作成して実行します。
DECLARE
v_tname VARCHAR2(128) := 'my_task';
BEGIN
-- create a task
v_tname := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname);
-- execute the task
v_tname := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
END;
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。185.7.12 CREATE_EXTENDED_STATSファンクション
このファンクションは、表のユーザー指定の列グループまたは式の列統計情報エントリをシステム内に作成します。
このファンクションのこの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)
RETURN CLOB;
パラメータ
表185-15 CREATE_EXTENDED_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者名。 |
|
表の名前 |
|
列グループまたは式を指定できます。指定した表に、列 |
戻り値
このファンクションは、拡張用に新しく作成されたエントリの名前を戻します。
例外
ORA-20000
: 権限が不十分です。/拡張の作成はサポートされていません。
ORA-20001
: 拡張の処理中にエラーが発生しました。
ORA-20007
: 拡張はすでに存在しています。
ORA-20008
: 拡張数の上限に達しました。
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
拡張には、次の制限があります。
-
拡張に仮想列を含めることはできません。
-
SYS
が所有する表には拡張を作成できません。 -
クラスタ表、索引構成表、一時表または外部表には拡張を作成できません。
-
表内の拡張の合計数が最大数(20、表内の非仮想列の10%)を超えることはできません。
-
列グループ内の列の数は、2から32の範囲内である必要があります。
-
1つの列を1つの列グループ内で複数回使用することはできません。
-
拡張に式を含めることができるのは、対応する仮想列が作成されている場合のみです。
-
式には1つ以上の列が含まれている必要があります。
-
式に副問合せを含めることはできません。
-
COMPATIBLE
パラメータは11.0.0.0.0以上にする必要があります。
185.7.13 CREATE_STAT_TABLEプロシージャ
このプロシージャは、統計情報を保持できるownname
のスキーマにあるstattab
の名前で表を作成します。この表は、このパッケージのプロシージャを介して単独にアクセスされるため、この表を構成する列とタイプは互いに関係がありません。
構文
DBMS_STATS.CREATE_STAT_TABLE (
ownname VARCHAR2,
stattab VARCHAR2,
tblspace VARCHAR2 DEFAULT NULL,
global_temporary BOOLEAN DEFAULT FALSE);
パラメータ
表185-16 CREATE_STAT_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
作成する表の名前。ユーザーがディクショナリ統計情報を直接変更しない場合、この値は、 |
|
統計表を作成する表領域。このパラメータを指定しないと、統計表はユーザーのデフォルトの表領域に作成されます。 |
|
表をグローバル一時表として作成する必要があるかどうか。 |
セキュリティ・モデル
このプロシージャを起動するには、指定したスキーマで表を作成するために必要な権限が必要です。
例外
ORA-20000
: 表がすでに存在するか、権限が不十分です。
ORA-20001
: 表領域が存在しません
185.7.14 DELETE_COLUMN_STATSプロシージャ
このプロシージャは、列に関連する統計情報を削除します。
構文
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');
パラメータ
表185-17 DELETE_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
統計情報を削除する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
表がパーティション化されていて、 |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
この引数の値が |
|
削除する列統計のタイプ。この引数の値は、次のようになります。
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.15 DELETE_DATABASE_PREFSプロシージャ
このプロシージャは、すべての非システム表に対して設定された統計プリファレンスを削除します。システム表は、add_sys
パラメータにTRUE
を渡すことによって含めることができます。
構文
DBMS_STATS.DELETE_DATABASE_PREFS ( pname IN VARCHAR2, add_sys IN BOOLEAN DEFAULT FALSE);
パラメータ
表185-18 DELETE_DATABASE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
|
|
表185-19 統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。シノプシスを、個別値をサンプリングする内部管理構造とみなします。 次のプリファレンスを指定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
推定する行のパーセントが決定されます。 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。 |
|
収集する統計情報の粒度が決定されます。この値は、パーティション表にのみ使用されます。 |
|
全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。 |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
GATHER_TABLE_STATSプロシージャで使用される |
|
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 統計情報を収集し、すぐにはパブリッシュしないようにすることができます。この手法により、パブリッシュ前に新しい統計情報をテストできます。 |
|
表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。 |
|
インポートまたはエクスポートする統計情報を指定します。カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
値 デフォルト値は |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
セキュリティ・モデル
このプロシージャを実行するには、SYSDBA
ロール、またはANALYZE ANY DICTIONARY
とANALYZE ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
使用上のノート
すべてのpname
引数はVARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例185-7 例
DBMS_STATS.DELETE_DATABASE_PREFS('CASCADE', FALSE);
DBMS_STATS.DELETE_DATABASE_PREFS('ESTIMATE_PERCENT', TRUE);
参照:
オプティマイザ統計プリファレンスの管理方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.16 DELETE_DATABASE_STATSプロシージャ
このプロシージャは、データベース内のすべての表に関する統計情報を削除します。
構文
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);
パラメータ
表185-20 DELETE_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
この引数の値が |
|
削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。
デフォルトは |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
このプロシージャを実行するには、SYSDBA
ロールまたはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
185.7.17 DELETE_DICTIONARY_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);
パラメータ
表185-21 DELETE_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
統計タイプ。 |
|
この引数の値が |
|
削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。
デフォルトは |
使用上のノート
このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
185.7.18 DELETE_FIXED_OBJECTS_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);
パラメータ
表185-22 DELETE_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現在の統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
|
使用上のノート
このプロシージャを実行するには、SYSDBA
またはANALYZE
ANY
DICTIONARY
システム権限が必要です。
例外
ORA-20000
: 権限が不十分です
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
185.7.19 DELETE_INDEX_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);
パラメータ
表185-23 DELETE_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
索引の名前 |
|
統計情報を削除する索引パーティションの名前。索引がパーティション化されていて、 |
|
統計情報を削除する場所を示すユーザー統計表の識別子。 |
|
|
|
索引がパーティション化されていて、 |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
統計タイプ。 |
|
この引数の値が |
|
削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。
デフォルトは |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.20 DELETE_PENDING_STATSプロシージャ
このプロシージャは、収集され、パブリッシュされなかった保留中の統計情報を削除するために使用されます。
構文
DBMS_STATS.DELETE_PENDING_STATS (
ownname IN VARCHAR2 DEFAULT USER,
tabname IN VARCHAR2);
パラメータ
表185-24 DELETE_PENDING_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
セキュリティ・モデル
このプロシージャを実行するには、このプロシージャの影響を受ける表の統計情報を収集する権限と同じ権限を持っている必要があります。デフォルトの所有者は、このプロシージャを実行するユーザーです。
例外
ORA-20000
: 権限が不十分です
使用上のノート
パラメータtabname
がNULL
の場合、指定したスキーマのすべての表に削除が適用されます。
例
DBMS_STATS.DELETE_PENDING_STATS('SH', 'SALES');
185.7.21 DELETE_PROCESSING_RATEプロシージャ
このファンクションは、指定した統計情報のソースの処理速度を削除します。ソースが指定されていない場合、すべてのソースの統計情報が削除されます。
構文
DBMS_STATS.DELETE_PROCESSING_RATE ( stat_source IN VARCHAR2 DEFAULT NULL);
パラメータ
表185-25 DELETE_PROCESSING_RATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
処理速度のソース。
|
使用上のノート
このプロシージャを実行するにはOPTIMIZER_PROCESSING_RATE
ロールが必要です。AUTO
DOP
は、処理速度を使用してSQL文の適切な並列度を判断するからです。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
185.7.22 DELETE_SCHEMA_PREFSプロシージャ
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスを削除するために使用されます。
構文
DBMS_STATS.DELETE_SCHEMA_PREFS (
ownname IN VARCHAR2,
pname IN VARCHAR2);
パラメータ
表185-26 DELETE_SCHEMA_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
表185-27 統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。個別値をサンプリングする内部管理構造としてシノプシスをみなすことができます。 次の値を設定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
各シャードのユーザーはこのプリファレンスを使用して、シャード・コーディネータが各シャードでの統計情報収集と対話できるようにするかどうかを決定します。 シャード・コーディネータで統計情報を収集している間、いずれかのシャードの統計情報が最新でない場合、シャード・コーディネータはそのシャードでの統計情報の収集をトリガーしようとします。このプリファレンスを使用することにより、ユーザーはシャード・コーディネータからのそのコマンドを実行するか、無視できます。 次の値を設定できます。
デフォルト値は |
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
指定した値によって、推定する行のパーセントが決定されます。 |
|
列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
指定した値によって、収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。 |
|
指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 |
|
指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。 |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
アプリケーションPDBユーザーはこのプリファレンスを使用して、アプリケーション・ルートがPDBでの統計収集と対話できるようにするかどうかを決定します。 アプリケーション・ルートでメタデータにリンクされた表の統計情報を収集している間、PDBの統計情報が失効状態の場合、アプリケーション・ルートは特定のPDBに対する統計情報収集をトリガーします。このプリファレンスを使用して、ユーザーはアプリケーション・ルートからのコマンドを実行するか、無視できます。 次の値を設定できます。
デフォルト値は ノート: アプリケーション・ルートとは異なり、CDBルートはPDBでの統計情報収集をトリガーせず、このプリファレンスによって制御されません。 |
|
指定した値によって、表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。 |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
|
GATHER_TABLE_STATSプロシージャで使用される |
セキュリティ・モデル
このプロシージャを実行するには、オブジェクト所有者であるか、あるいはSYSDBA
権限またはANALYZE
ANY
システム権限を持っている必要があります。
例外
ORA-20000
: 権限が不十分です。/スキーマ"<schema>"は存在しません
ORA-20001
: 入力値が無効です。
使用上のノート
すべての引数はVARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例
DBMS_STATS.DELETE_SCHEMA_PREFS('SH', 'CASCADE');
DBMS_STATS.DELETE_SCHEMA_PREFS('SH', 'ESTIMATE_PERCENT');
DBMS_STATS.DELETE_SCHEMA_PREFS('SH', 'DEGREE');
参照:
オプティマイザ統計プリファレンスの管理方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.23 DELETE_SCHEMA_STATSプロシージャ
このプロシージャは、スキーマ全体の統計情報を削除します。
構文
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,
stat_category VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);
パラメータ
表185-28 DELETE_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
統計が格納される表を識別します。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
ロックされた統計を強制的に削除するかどうかを示します。この値が |
|
処理する統計を指定します。サポートされている値は次のとおりです。
値のカンマ区切りリストを指定できます。たとえば、 |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
185.7.24 DELETE_SYSTEM_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);
パラメータ
表185-29 DELETE_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報が保存されるユーザー統計表の識別子。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
使用上のノート
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
185.7.25 DELETE_TABLE_PREFSプロシージャ
このプロシージャは、指定したスキーマ内の指定した表のオプティマイザ統計プリファレンスを削除します。
構文
DBMS_STATS.DELETE_TABLE_PREFS (
ownname IN VARCHAR2,
tabname IN VARCHAR2,
pname IN VARCHAR2);
パラメータ
表185-30 DELETE_TABLE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
|
プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。
|
表185-31 統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。シノプシスを、個別値をサンプリングする内部管理構造とみなします。 次のプリファレンスを指定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
推定する行のパーセントが決定されます。 |
|
収集する統計情報の粒度が決定されます。この値は、パーティション表にのみ使用されます。 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。 |
|
指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。 |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、 |
|
指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。 |
|
GATHER_TABLE_STATSプロシージャで使用される |
PREFERENCE_OVERRIDES_PARAMETER |
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
統計情報収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 |
|
表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。 |
|
インポートまたはエクスポートする統計情報を指定します。カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
値 デフォルト値は |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
使用上のノート
-
このプロシージャを実行するには、表の所有者として接続するか、あるいは表に対する
ANALYZE
権限またはANALYZE
ANY
システム権限を付与されている必要があります。 -
すべての引数は
VARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例
DBMS_STATS.DELETE_TABLE_PREFS('SH', 'SALES', 'CASCADE'); DBMS_STATS.DELETE_TABLE_PREFS('SH', 'SALES', 'DEGREE');
参照:
オプティマイザ統計プリファレンスの管理方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.26 DELETE_TABLE_STATSプロシージャ
このプロシージャは、表に関連する統計情報を削除します。
構文
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,
stat_category VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);
パラメータ
表185-32 DELETE_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
この列が所属する表の名前を指定します。 |
|
統計を取得する表パーティションまたはサブパーティションの名前を指定します。表がパーティション化されていて、 |
|
統計を取得するユーザー統計表を識別します。 |
|
|
|
プロシージャが基礎となるパーティションで動作するかどうかを指定します。表がパーティション化されていて、 |
|
|
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
ロックされた統計を強制的に削除するかどうかを示します。この値が |
|
処理する統計を指定します。サポートされている値は次のとおりです。
値のカンマ区切りリストを指定できます。たとえば、 デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20005
: オブジェクト統計はロックされています
185.7.27 DIFF_TABLE_STATS_IN_HISTORYファンクション
このファンクションでは、特定の表について指定した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;
パラメータ
表185-33 DIFF_TABLE_STATS_IN_HISTORYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者を指定します。現行のスキーマの場合は、 |
|
統計情報を比較する表を指定します。 |
|
比較のための最初のタイムスタンプを指定します。 |
|
比較のための2番目のタイムスタンプを指定します。 |
|
しきい値の制限を指定します。変更の割合がこの制限を超えた場合にのみ、統計情報の相違点がレポートされます。デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
使用上のノート
2番目のタイムスタンプがNULL
の場合は、現在のデータ・ディクショナリ内の統計情報と最初のタイムスタンプ時点の統計情報が比較されます。
185.7.28 DIFF_TABLE_STATS_IN_PENDINGファンクション
このファンクションは、保留中の統計情報とデータ・ディクショナリの現在の統計情報またはユーザー指定の統計の履歴を比較します。
構文
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;
パラメータ
表185-34 DIFF_TABLE_STATS_IN_PENDINGファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者。現行のスキーマの場合は、 |
|
統計情報を比較する表。 |
|
目的の統計情報に対応する、統計履歴のタイムスタンプ。タイムスタンプが |
|
レポートの制限。このファンクションは、指定した制限を超えた場合にのみ統計情報の違いをレポートします。デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.29 DIFF_TABLE_STATS_IN_STATTABファンクション
このファンクションでは、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;
パラメータ
表185-35 DIFF_TABLE_STATS_IN_STATTABファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者を指定します。現行のスキーマの場合は、 |
|
統計情報を比較する表を指定します。 |
|
ユーザー統計表1を指定します。 |
|
ユーザー統計表2を指定します。 |
|
比較のしきい値(割合)を指定します。このファンクションは、この制限を超えた場合にのみ統計情報の違いをレポートします。デフォルト値は |
|
(オプション) |
|
(オプション) |
|
|
|
|
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.30 DROP_ADVISOR_TASKプロシージャ
このプロシージャは、指定したオプティマイザ統計アドバイザ・タスクを削除します。
構文
DBMS_STATS.DROP_ADVISOR_TASK (
task_name IN VARCHAR2);
パラメータ
表185-36 DROP_ADVISOR_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-8 オプティマイザ統計アドバイザ・タスクの削除
この例では、my_task
というオプティマイザ統計アドバイザ・タスクを削除します。
EXEC DBMS_STATS.DROP_ADVISOR_TASK('my_task');
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.31 DROP_EXTENDED_STATSプロシージャ
このファンクションは、ユーザー指定の拡張に対して作成された統計情報エントリを削除します。
これによって、CREATE_EXTENDED_STATSファンクションの実行効果が取り消されます。
構文
DBMS_STATS.DROP_EXTENDED_STATS ( ownname VARCHAR2, tabname VARCHAR2, extension VARCHAR2);
パラメータ
表185-37 DROP_EXTENDED_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者名。 |
|
表の名前 |
|
列グループまたは式を指定できます。指定した表に、列 |
例外
-
ORA-20000
: 権限が不十分であるか、または拡張が存在しません。 -
ORA-20001
: 拡張の処理中にエラーが発生しました。
使用上のノート
-
このプロシージャを起動するには、表の所有者であるか、
ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。 -
拡張に対して拡張統計情報セットが作成されない場合、このファンクションはエラーをスローします。
185.7.32 DROP_STAT_TABLEプロシージャ
このプロシージャは、ユーザー統計表を削除します。
構文
DBMS_STATS.DROP_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2);
パラメータ
表185-38 DROP_STAT_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
ユーザー統計表の識別子。 |
例外
ORA-20000
: 表が存在しないか、権限が不十分です。
使用上のノート
このプロシージャを起動するには、指定した表を削除する権限が必要です。
185.7.33 EXECUTE_ADVISOR_TASKファンクション
このファンクションは、以前に作成されたオプティマイザ統計アドバイザ・タスクを実行します。
構文
DBMS_STATS.EXECUTE_ADVISOR_TASK (
task_name IN VARCHAR2,
execution_name IN VARCHAR2 := NULL)
RETURN VARCHAR2;
パラメータ
表185-39 EXECUTE_ADVISOR_TASKのパラメータ
パラメータ | 説明 |
---|---|
task_name |
オプティマイザ統計アドバイザ・タスクの名前。 |
execution_name |
アドバイザの実行を修飾して識別する名前。指定しない場合、アドバイザによって自動的に生成されます。 指定した実行が既存の実行名と競合する場合は、ファンクションでエラーが戻されます。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
事前定義された
AUTO_STATS_ADVISOR_TASK
でこのサブプログラムを実行できます。 -
このサブプログラムは実行者権限を使用して実行します。
このタスクの実行結果は、実行しているユーザーの権限に依存します。
-
SYSTEM
レベルANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーのみが、このタスクをシステム・レベルのルールで実行できます。 -
操作レベル
結果は次の権限に依存します。
-
ANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーが、このタスクをすべての統計操作に実行できます。 -
ANALYZE ANY
権限はあるがANALYZE ANY DICTIONARY
権限はないユーザーが、このタスクをSYS
以外のすべてのスキーマに関連した統計操作に実行できます。 -
ANALYZE ANY DICTIONARY
権限はあるがANALYZE ANY
権限はないユーザーが、このタスクを独自のスキーマおよびSYS
スキーマに関連した統計操作に実行できます。 -
ANALYZE ANY
権限もANALYZE ANY DICTIONARY
権限もないユーザーのみが、この操作を独自のスキーマに関連した統計操作に実行できます。
-
-
オブジェクト・レベル
ユーザーは、統計収集権限を持つすべてのオブジェクトにこのタスクを実行できます。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
戻り値
このファンクションは、新しい実行の名前を戻します。
使用上のノート
実行の結果は、ユーザー権限とルールのタイプに応じて異なります。
-
システム
システム・レベルのルールで操作を実行するには、
ANALYZE ANY
とANALYZE ANY DICTIONARY
の両方の権限が必要です。 -
操作
ANALYZE ANY
権限もANALYZE ANY DICTIONARY
権限も持っている場合、すべての操作にこのファンクションを実行できます。ANALYZE ANY
権限のみを持っている場合、SYS
を除く任意のスキーマに関連した操作にこのファンクションを実行できます。ANALYZE ANY DICTIONARY
権限のみを持っている場合、SYS
を含む任意のスキーマに関連した操作にこのファンクションを実行できます。ANALYZE ANY
権限もANALYZE ANY DICTIONARY
権限も持っていない場合、独自のスキーマの操作にのみこのファンクションを実行できます。 -
オブジェクト
オブジェクトの統計情報を収集する権限がある場合は、そのオブジェクトにこのファンクションを実行できます。
例185-9 タスクの作成および実行
この例では、my_task
というオプティマイザ統計アドバイザ・タスクを作成して実行します。
DECLARE
v_tname VARCHAR2(128) := 'my_task';
BEGIN
-- create a task
v_tname := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname);
-- execute the task
v_tname := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
END;
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.34 EXPORT_COLUMN_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);
パラメータ
表185-40 EXPORT_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.35 EXPORT_DATABASE_PREFSプロシージャ
このプロシージャは、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);
パラメータ
表185-41 EXPORT_DATABASE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報のエクスポート先となる統計表の名前。 |
|
(オプション) |
|
|
|
値 |
例外
ORA-20000
: 権限が不十分です
使用上のノート
-
このプロシージャを実行するには、
SYSDBA
ロール、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。 -
すべての引数は
VARCHAR2
タイプです。値は引用符で囲みます。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.EXPORT_DATABASE_PREFS('STATTAB', statown=>'SH');
185.7.36 EXPORT_DATABASE_STATSプロシージャ
このプロシージャでは、データベース内のすべてのオブジェクトに関する統計情報をエクスポートして、statown.stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_DATABASE_STATS (
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
stat_category VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);
パラメータ
表185-42 EXPORT_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.37 EXPORT_DICTIONARY_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);
パラメータ
表185-43 EXPORT_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
|
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.38 EXPORT_FIXED_OBJECTS_STATSプロシージャ
このプロシージャでは、固定表に関する統計情報をエクスポートして、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_FIXED_OBJECTS_STATS (
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL);
パラメータ
表185-44 EXPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.39 EXPORT_INDEX_STATSプロシージャ
このプロシージャは、特定の索引に関する統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表185-45 EXPORT_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
索引の名前 |
|
索引パーティション名。索引がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
-
このプロシージャを起動するには、表の所有者であるか、
ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.40 EXPORT_PENDING_STATSプロシージャ
このプロシージャは、保留中として収集および格納された統計情報をエクスポートするために使用されます。
構文
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);
パラメータ
表185-46 EXPORT_PENDING_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
|
統計情報のエクスポート先となる統計表の名前。 |
|
(オプション) |
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
-
パラメータ
tabname
がNULL
の場合、指定したスキーマのすべての表にエクスポートが適用されます。 -
デフォルトの所有者/スキーマは、このプロシージャを実行するユーザーです。
-
このプロシージャを実行するには、このプロシージャによって処理される表の統計情報を収集する権限と同じ権限を持っている必要があります。
-
すべての引数は
VARCHAR2
タイプです。値は引用符で囲みます。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.EXPORT_PENDING_STATS(NULL, NULL, 'MY_STAT_TABLE');
185.7.41 EXPORT_SCHEMA_PREFSプロシージャ
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスをエクスポートするために使用されます。
構文
DBMS_STATS.EXPORT_SCHEMA_PREFS ( ownname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表185-47 EXPORT_SCHEMA_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
統計情報のエクスポート先となる統計表の名前。 |
|
(オプション) |
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
-
このプロシージャを実行するには、所有者として接続するか、あるいは
SYSDBA
権限またはANALYZE
ANY
システム権限を持っている必要があります。 -
すべての引数は
VARCHAR2
タイプです。値は引用符で囲みます。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.EXPORT_SCHEMA_PREFS('SH', 'STAT');
185.7.42 EXPORT_SCHEMA_STATSプロシージャ
このプロシージャでは、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);
パラメータ
表185-48 EXPORT_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
エクスポートした統計を格納するユーザー統計表を識別します。 |
|
|
|
|
|
処理する統計を指定します。サポートされている値は次のとおりです。
値のカンマ区切りリストを指定できます。たとえば、 デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.43 EXPORT_SYSTEM_STATSプロシージャ
このプロシージャは、システムの統計情報を取り出し、stattab
で識別されるユーザー統計表に格納します。
構文
DBMS_STATS.EXPORT_SYSTEM_STATS (
stattab VARCHAR2,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL);
パラメータ
表185-49 EXPORT_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を格納する場所を記述したユーザー統計表の識別子。 |
|
|
|
|
セキュリティ・モデル
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003
: システムの統計情報をエクスポートできません。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.44 EXPORT_TABLE_PREFSプロシージャ
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを、指定した統計表にエクスポートするために使用されます。
構文
DBMS_STATS.EXPORT_TABLE_PREFS ( ownname IN VARCHAR2, tabname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表185-50 EXPORT_TABLE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
|
統計情報のエクスポート先の統計表の名前。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
-
このプロシージャを実行するには、その表の所有者として接続するか、または
ANALYZE
ANY
システム権限を持っている必要があります。 -
すべての引数は
VARCHAR2
タイプです。値は引用符で囲みます。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.EXPORT_TABLE_PREFS('SH', 'SALES', 'STAT');
185.7.45 EXPORT_TABLE_STATSプロシージャ
このプロシージャでは、特定の表(関連する索引統計情報を含む)に関する統計情報(関連する索引統計情報を含む)をエクスポートして、stattab
で識別されるユーザー統計表に格納します。
構文
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);
パラメータ
表185-51 EXPORT_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
表の名前を指定します。 |
|
表パーティションの名前を指定します。表がパーティション化されていて、 |
|
|
|
|
|
列と索引の統計をエクスポートするかどうかを示します。 |
|
|
|
処理する統計を指定します。サポートされている値は次のとおりです。
値のカンマ区切りリストを指定できます。たとえば、 デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.46 FLUSH_DATABASE_MONITORING_INFOプロシージャ
このプロシージャは、すべての表の監視情報をディクショナリに保存します。*_TAB_MODIFICATIONS
、*_TAB_STATISTICS
および*_IND_STATISTICS
のビューの対応するエントリは、すぐに更新されます。
構文
DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
セキュリティ・モデル
このプロシージャを実行するには、ANALYZE_ANY
システム権限が必要です。
例外
ORA-20000
: 権限が不十分です
使用上のノート
Oracle Database 12cリリース2 (12.2)以降では、*_TAB_STATISTICS
と*_IND_STATISTICS
のビューにはSGAにキャッシュされた統計情報およびディスクに格納されている統計情報が表示されるため、FLUSH_DATABASE_MONITORING_
をコールしてこれらのビューに最新情報を表示する必要はありません。INFO
GATHER_*_STATS
プロシージャでは監視情報が内部処理で自動的にディスクに保存されるため、統計情報の収集前にこのプロシージャを実行する必要はありません。
参照:
オプティマイザ統計プリファレンスの設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.47 GATHER_DATABASE_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);
パラメータ
表185-52 GATHER_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
サンプリングする行のパーセントが決定されます。 有効範囲は0.000001から100です。定数 デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
ランダム・ブロック・サンプリング( ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。このパラメータは、統計情報の推定時にのみ使用されます。 |
|
グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、
デフォルトは |
|
統計情報を収集する場合に使用される並列度が決定されます。
初期化パラメータに基づくデフォルト値を指定するには、定数 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 このオプションを指定することは、表の各索引で |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 統計表は、分析するオブジェクトと同じスキーマに常駐するとみなされるので、各スキーマにこのオプションを使用するための表が1つ必要です。 |
|
|
|
統計情報を収集する必要があるオブジェクトを指定します。有効な値は次のとおりです。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
|
|
オブジェクト・フィルタのリスト。指定された場合、 |
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
使用上のノート
このプロシージャを実行するには、SYSDBA
ロールまたはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
GATHER AUTO
オプションを使用する場合、全体スキャンではなくサンプルを使用して頻度ヒストグラムが作成されます。次に、GATHER AUTO
を使用するシナリオを示します。
-
表は次のように作成されます:
CREATE TABLE NEWTAB as SELECT * FROM ....
。これにより、
NEWTAB
に関する統計情報が作成されますが、ヒストグラムは作成されません。 -
次に、DBAは
GATHER AUTO
を使用してgather_table_stats
のヒストグラムを作成します。 -
全体表スキャンではなくサンプルを使用して、
NEWTAB
のFREQUENCY
ヒストグラムが作成されます。
185.7.48 GATHER_DICTIONARY_STATSプロシージャ
このプロシージャは、ディクショナリのスキーマ(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);
パラメータ
表185-53 GATHER_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマのコンポーネントID。 |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。 |
|
メソッド・オプション。このパラメータには次の値を使用できます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引に関する統計情報も収集します。索引の統計情報の収集は、並列処理されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集する必要があるオブジェクトを指定します。有効な値は次のとおりです。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
オブジェクト・フィルタのリスト。指定された場合、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対して |
使用上のノート
このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
GATHER AUTO
オプションを使用する場合、全体スキャンではなくサンプルを使用して頻度ヒストグラムが作成されます。次に、GATHER AUTO
を使用するシナリオを示します。
-
表は次のように作成されます:
CREATE TABLE NEWTAB as SELECT * FROM ....
。これにより、
NEWTAB
に関する統計情報が作成されますが、ヒストグラムは作成されません。 -
次に、DBAは
GATHER AUTO
を使用してgather_table_stats
のヒストグラムを作成します。 -
全体表スキャンではなくサンプルを使用して、
NEWTAB
のFREQUENCY
ヒストグラムが作成されます。
例外
ORA-20000
: 索引が存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
185.7.49 GATHER_FIXED_OBJECTS_STATSプロシージャ
このプロシージャは、すべての固定オブジェクト(動的パフォーマンス表)に関する統計情報を収集します。
構文
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')));
パラメータ
表185-54 GATHER_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
|
使用上のノート
このプロシージャを実行するには、SYSDBA
またはANALYZE
ANY
DICTIONARY
システム権限が必要です。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
185.7.50 GATHER_INDEX_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);
パラメータ
表185-55 GATHER_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析する索引のスキーマ。 |
|
索引の名前。 |
|
パーティションの名前 |
|
推定する行のパーセント( |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
例外
ORA-20000
: 索引が存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.51 GATHER_PROCESSING_RATEプロシージャ
このプロシージャは、interval
分後に終了する処理率の収集ジョブを開始します。
構文
DBMS_STATS.GATHER_PROCESSING_RATE ( gathering_mode IN VARCHAR2 DEFAULT 'START', interval IN NUMBER DEFAULT NULL);
パラメータ
表185-56 GATHER_PROCESSING_RATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
モード: |
|
処理を収集する必要がある時間間隔(分単位)。 |
使用上のノート
-
このプロシージャを実行するには、
OPTIMIZER_PROCESSING_RATE
ロールが必要です。 -
AUTO
DOP
は、これらの処理率を使用して、SQL文の最適な並列度を決定します。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
185.7.52 GATHER_SCHEMA_STATSプロシージャ
このプロシージャは、スキーマ内のすべてのオブジェクトに関する統計情報を収集します。
構文
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);
パラメータ
表185-57 GATHER_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマ( |
|
サンプリングする行のパーセントが決定されます。 有効範囲は0.000001から100です。定数 デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次を受け入れます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集する必要があるオブジェクトを指定します。有効な値は次のとおりです。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
|
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
|
オブジェクト・フィルタのリスト。指定された場合、 |
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
GATHER AUTO
オプションを使用する場合、全体スキャンではなくサンプルを使用して頻度ヒストグラムが作成されます。次に、GATHER AUTO
を使用するシナリオを示します。
-
表は次のように作成されます:
CREATE TABLE NEWTAB as SELECT * FROM ....
。これにより、
NEWTAB
に関する統計情報が作成されますが、ヒストグラムは作成されません。 -
次に、DBAは
GATHER AUTO
を使用してgather_table_stats
のヒストグラムを作成します。 -
全体表スキャンではなくサンプルを使用して、
NEWTAB
のFREQUENCY
ヒストグラムが作成されます。
例外
ORA-20000
: スキーマが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
例
オブジェクト・フィルタ・リストの適用
次の例では、表SH.SALES
とSH.COSTS
が失効している場合、これらの表に対する統計情報が収集されるように指定します。
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;
185.7.53 GATHER_SYSTEM_STATSプロシージャ
このプロシージャは、システムの統計情報を収集します。
構文
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);
パラメータ
表185-58 GATHER_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベースがシステム統計情報を収集するモードを指定します。使用可能な値は次のとおりです。
|
|
システム統計情報を収集する分数を指定します。このパラメータが適用されるのは、 |
|
データベースが統計情報を格納する表を指定します。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003
: システムの統計情報を収集できません
ORA-20004
: INTERVAL
モードでエラーが発生しました。システム・パラメータjob_queue_processes
>0である必要があります。
使用上のノート
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
例
昼間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;
185.7.54 GATHER_TABLE_STATSプロシージャ
このプロシージャは、表、列および索引の統計情報を収集します。これは、可能なかぎり多くの作業をパラレル化しますが、個々のパラメータで説明するように、いくつかの制限があります。
構文
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 get_param('OPTIONS'));
パラメータ
表185-59 GATHER_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表を含むスキーマ。 |
|
表の名前。 |
|
パーティションの名前。 |
|
サンプリングする行のパーセントが決定されます。 有効範囲は0.000001から100です。定数 デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
ランダム・ブロック・サンプリング( ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。このパラメータは、統計情報の推定時にのみ使用されます。 |
|
デフォルトは |
|
統計情報を収集する場合に使用される並列度が決定されます。
初期化パラメータに基づくデフォルト値を指定するには、定数 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 このオプションを指定することは、表の各索引で |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
|
|
統計タイプ。許可されている値は、 |
|
ロックされている場合でも、表の統計情報を収集します。 |
|
使用しません。 |
|
|
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
索引統計情報収集は、クラスタ索引、ドメイン索引および結合索引を除き、パラレル化できます。
GATHER AUTO
オプションを使用する場合、全体スキャンではなくサンプルを使用して頻度ヒストグラムが作成されます。次に、GATHER AUTO
を使用するシナリオを示します。
-
表は次のように作成されます:
CREATE TABLE NEWTAB as SELECT * FROM ....
。これにより、
NEWTAB
に関する統計情報が作成されますが、ヒストグラムは作成されません。 -
次に、DBAは
GATHER AUTO
を使用してgather_table_stats
のヒストグラムを作成します。 -
全体表スキャンではなくサンプルを使用して、
NEWTAB
のFREQUENCY
ヒストグラムが作成されます。
例外
ORA-20000
: 表が存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
例
拡張は、列グループ(例1を参照)または式(例2を参照)です。
例1
DBMS_STATS.GATHER_TABLE_STATS( 'SH', 'SALES', method_opt => 'FOR COLUMNS (empno, deptno)');
例2
DBMS_STATS.GATHER_TABLE_STATS( 'SH', 'SALES', method_opt => 'FOR COLUMNS (sal+comm)');
185.7.55 GENERATE_STATSプロシージャ
この推奨されないプロシージャは、関連するオブジェクトで以前に収集した統計情報から、オブジェクトの統計情報を生成します。現在サポートされているオブジェクトは、Bツリー索引とビットマップ索引です。
ノート:
このサブプログラムの使用は推奨されず、より高度なテクノロジがかわりに使用されます。下位互換性の目的でのみ保持されています。代替として、GATHER_INDEX_STAT
プロシージャを使用してください。「GATHER_INDEX_STATSプロシージャ」を参照してください。
構文
DBMS_STATS.GENERATE_STATS ( ownname VARCHAR2, objname VARCHAR2, organized NUMBER DEFAULT 7, force BOOLEAN default FALSE);
パラメータ
表185-60 GENERATE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトのスキーマ。 |
|
オブジェクトの名前。 |
|
索引とその基礎となる表の間で関連付けられた順位付けの量。複雑に編成されている索引には、ディスク上の連続行を参照する連続索引キーがその表(同じブロック)に対してあります。複雑に編成されていない索引には、ディスク上の異なる表ブロックを参照する連続キーがあります。 このパラメータは、Bツリー索引に対してのみ使用します。数値は、0から10の範囲で使用でき、0(ゼロ)は完全に編成された索引、10は完全に編成解除された索引を示します。 |
|
|
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA権限が必要です。
完全に移入されたスキーマについては、より正確な統計情報が必要な場合は、GATHERプロシージャをかわりに使用する必要があります。
例外
ORA-20000
: サポートされていないオブジェクト・タイプで、オブジェクトは存在しません。
ORA-20001
: 無効なオプションまたは無効な統計情報です。
185.7.56 GET_ADVISOR_OPR_FILTERプロシージャ
このプロシージャは、オプティマイザ統計アドバイザ・タスクの操作フィルタを作成します。
構文
DBMS_STATS.GET_ADVISOR_OPR_FILTER (
opr_id IN NUMBER,
opr_filter IN OUT NOCOPY StatsAdvOpr);
パラメータ
表185-61 GET_ADVISOR_OPR_FILTERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
指定した統計操作に基づいて生成されるオプティマイザ統計アドバイザのフィルタ。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
使用上のノート
操作IDまたはフィルタIDのいずれか(同時に両方は不可)を使用してフィルタを指定できます。
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.57 GET_ADVISOR_RECSファンクション
このファンクションは、指定された項目の推奨レポートを生成します。
構文
DBMS_STATS.GET_ADVISOR_RECS(
ownname IN VARCHAR2,
tabname IN VARCHAR2,
rec IN VARCHAR2,
type IN VARCHAR2 := 'TEXT')
RETURN CLOB;
パラメータ
表185-62 GET_ADVISOR_RECSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者。 |
|
表の名前。 |
|
オプティマイザ統計アドバイザ推奨事項。
|
|
レポートのタイプ: |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
推奨事項が生成されるオブジェクトの統計情報を収集する権限が必要です。
-
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
使用上のノート
アドバイザでは、手動での統計収集に対しては推奨事項が作成されません。メンテナンス・ウィンドウ内にジョブが完了するという主要目標がある自動統計収集ジョブに対してのみ、データベースで推奨事項が作成されます。自動ジョブが完了するかぎり、データベースで他の推奨事項が作成されることはありません。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.58 GET_COLUMN_STATSプロシージャ
これらのオーバーロードされたプロシージャでは、列に関連する統計情報を取得します。ユーザー定義の統計バージョンの場合、このプロシージャは格納された統計情報のタイプを返します。
構文
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,
realtime_stats BOOLEAN iDEFAULT TRUE);
ユーザー定義統計情報には、次の構文を使用します。
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);
パラメータ
表185-63 GET_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
この列が所属する表の名前を指定します。 |
|
列または拡張の名前を指定します。 |
|
統計を取得する表パーティションの名前を指定します。表がパーティション化されていて、 |
|
統計の取得場所を示す統計表のIDを指定します。 |
|
|
|
ユーザー定義の統計を指定します。 |
|
統計タイプのスキーマを指定します。 |
|
統計タイプの名前を指定します。 |
|
個別値の数を指定します。 |
|
列密度を指定します。 |
|
|
|
列最小値、列最大値およびヒストグラム値の内部表記を保持する構造を指定します。 |
|
列の平均長を指定します(バイト単位)。 |
|
|
|
リアルタイム統計を含めるかどうかを指定します。デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限のどちらかが必要です。
例外
ORA-20000
: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。
使用上のノート
このプロシージャを呼び出す前に、表が存在することを確認してください。
185.7.59 GET_INDEX_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);
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);
ユーザー定義統計情報には、次の形式のプロシージャを使用します。
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);
パラメータ
表185-64 GET_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
索引の名前 |
|
統計情報を取得する索引パーティションの名前。索引がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
索引(パーティション)内の行数。 |
|
索引(パーティション)内のリーフ・ブロックの数。 |
|
索引(パーティション)内の個別キーの数。 |
|
この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。 |
|
この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。 |
|
索引(パーティション)のクラスタ化要因。 |
|
索引(パーティション)の高さ。 |
|
|
|
索引の推測品質(パーティション)。 |
セキュリティ・モデル
このプロシージャを呼び出す前に、表が存在することを確認してください。このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。
使用上のノート
-
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。データベースで、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せて、操作の合計コストが計算されます。
-
データベースでは、常に
cachedblk
およびcachehit
が維持されます。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報が表および索引の統計情報の一部として最適化に使用されます。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する信頼度要素を計算します。値の信頼度要素が信頼度の基準に達している場合はこの値が使用され、基準に達しない場合はデフォルト値が使用されます。 -
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムでは、主要なデータベース・ワークロードが1つのみ存在することを前提としています。アルゴリズムによってこのワークロードに対して統計情報が調整され、他の小規模なワークロードが無視されます。この前提が当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
-
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
-
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合
-
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合
-
参照:
オプティマイザ統計情報の管理方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.60 GET_PARAMファンクション
このファンクションは、DBMS_STATS
プロシージャのパラメータのデフォルト値を戻します。
ノート:
テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、GET_PREFSファンクションを使用してください。
「DBMS_STATSの推奨されないサブプログラム」も参照してください。
構文
DBMS_STATS.GET_PARAM ( pname IN VARCHAR2) RETURN VARCHAR2;
パラメータ
表185-65 GET_PARAMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
パラメータ名 |
例外
ORA-20001
: 入力値が無効です
185.7.61 GET_PREFSファンクション
このファンクションは、指定したプリファレンスのデフォルト値を戻します。
構文
DBMS_STATS.GET_PREFS (
pname IN VARCHAR2,
ownname IN VARCHAR2 DEFAULT NULL,
tabname IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
パラメータ
表185-66 GET_PREFSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。有効な値は、次のとおりです。
|
|
所有者名 |
|
表名 |
表185-67 プリファレンスの説明
プリファレンス名 | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。シノプシスを、個別値をサンプリングする内部管理構造とみなします。 次のプリファレンスを指定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
高頻度自動オプティマイザ統計収集を有効または無効にします。値は次のとおりです。
|
|
高頻度自動オプティマイザ統計収集の実行の最大実行時間(秒単位)を構成します。最大値は、デフォルト値でもある |
|
高頻度自動オプティマイザ統計収集の実行間隔(秒単位)を指定します。最小値は |
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
統計情報が複数のオブジェクトで同時に収集されるか、一度に1オブジェクトずつ順次収集されるかを決定します。有効な値は、次のとおりです。
|
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
サンプリングする行のパーセントが決定されます。 有効範囲は0.000001から100です。定数 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。このプリファレンスは次の2つの値を取ります。
|
|
収集する統計情報の粒度が決定されます。このプリファレンスは、パーティション表にのみ使用されます。 有効な値は次のとおりです。
|
|
全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。 通常、表がパーティション化されると、新しいパーティションにデータがロードされます。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。
パーティション表の |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、
デフォルトは |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
|
|
|
|
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 統計情報を収集し、すぐにはパブリッシュしないようにすることができます。この手法により、パブリッシュ前に新しい統計情報をテストできます。 |
|
表の統計情報が失効し、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。
|
|
インポートまたはエクスポートする統計情報を指定します。カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
値 |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
|
統計情報の更新に必要なロックおよび確保のタイムアウトまでの分数を指定します。これは、 |
セキュリティ・モデル
このプロシージャを起動するために特別な権限やロールは必要ありません。ただし、同時に統計情報を収集するには、DBAロールまたは統計情報の収集に必要な権限に加えて、CREATE JOB
、MANAGE SCHEDULER
およびMANAGE ANY QUEUE
の権限を持っている必要があります。
例外
-
ORA-20000
: 統計情報を同時に収集できません。リソース・マネージャが有効になっていません。 -
ORA-20001
: 入力値が無効です
使用上のノート
次のガイドラインに留意してください。
-
ユーザーが
GATHER_*_STATS
プロシージャを発行した場合、CONCURRENT
プリファレンスは、統計情報を同時に収集するかどうかを判別します。DBMS_STATS
により、DEGREE
パラメータの値に基づいて単一オブジェクトの統計を並列収集できます。ただし、並列性は1つのオブジェクトに限定されます。CONCURRENT
プリファレンスにより、複数のデータベース・オブジェクトに対する並列処理の範囲が拡張されます。このアプローチは主に複数CPUのシステムを対象としており、単一CPUのコンピュータ上の小規模データベースには適さない場合があります。統計情報を同時に収集するには、リソース・マネージャを有効化して、
JOB_QUEUE_PROCESSES
初期化パラメータの設定を4
以上にする必要があります。 -
ownname
およびtabname
が指定され、表に対してプリファレンスが入力されている場合、このファンクションは、その表に対して指定されているとおりにプリファレンスを戻します。それ以外のすべての場合は、グローバル・プリファレンスが指定されている場合はそれを戻し、指定されていない場合はデフォルト値を戻します。
参照:
オプティマイザ統計プリファレンスの取得方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.62 GET_STATS_HISTORY_AVAILABILITYファンクション
このドキュメンテーションは、統計履歴を使用できる最も古いタイムスタンプを戻します。これより古いタイムスタンプには、統計をリストアできません。
構文
DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY RETURN TIMESTAMP WITH TIMEZONE;
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.63 GET_STATS_HISTORY_RETENTIONファンクション
このファンクションは、現在の統計履歴のリテンション値を戻します。
構文
DBMS_STATS.GET_STATS_HISTORY_RETENTION RETURN NUMBER;
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.64 GET_SYSTEM_STATSプロシージャ
このプロシージャは、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);
パラメータ
表185-68 GET_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
出力は次のいずれかです。
|
|
統計情報の収集が開始された日付。
|
|
統計情報の収集が停止された日付。
|
|
取得するパラメータ名。次の値の1つが入ります。
|
|
取得するパラメータ値。 |
|
統計情報を取得するユーザー統計表の識別子。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003
: システムの統計情報を収集できません
ORA-20004
: パラメータが存在しません。
使用上のノート
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
185.7.65 GET_TABLE_STATSプロシージャ
このオーバーロードされたプロシージャは、すべての表関連の統計情報を取得します。
構文
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,
realtime_stats BOOLEAN DEFAULT TRUE);
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,
im_imcu_count OUT NUMBER,
im_block_count OUT NUMBER,
scanrate OUT NUMBER,
realtime_stats BOOLEAN DEFAULT TRUE);
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,
cachedblk OUT NUMBER,
cachehit OUT NUMBER,
realtime_stats BOOLEAN DEFAULT TRUE);
パラメータ
表185-69 GET_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
この列が所属する表の名前を指定します。 |
|
統計を取得する表パーティションの名前を指定します。表がパーティション化されていて、 |
|
ユーザー統計表のIDを指定します。このIDは、統計の取得場所を示します。 |
|
|
|
表またはパーティション内の行数を指定します。 |
|
表またはパーティション内のブロック数を指定します。 |
|
表またはパーティション表の行の平均長を指定します。 |
|
|
|
表またはパーティション内のインメモリー圧縮ユニット(IMCU)の数を指定します。 |
|
表またはパーティション内のインメモリー・ブロックの数を指定します。 インメモリー・ブロックは、ディスク上の特定のデータ・ブロックに対応します。表がIM列ストアに完全に移入される場合、インメモリー・ブロックの数はデータ・ブロックの数と等しくなります。 |
|
データベースで外部表をスキャンするレート(MB/秒単位)を指定します。このパラメータは、外部表にのみ使用されます。 |
|
リアルタイム統計を含めるかどうかを指定します。デフォルト値は |
|
内部使用のみに対応しています。 |
|
内部使用のみに対応しています。 |
セキュリティ・モデル
このプロシージャを呼び出す前に、表が存在することを確認してください。このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
使用上のノート
-
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。データベースで、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せて、操作の合計コストが計算されます。
-
データベースでは、常に
cachedblk
およびcachehit
が維持されます。ただし、自動モードのDBMS_STATS.GATHER_*_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報が表および索引の統計情報の一部として最適化に使用されます。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する信頼度要素を計算します。値の信頼度要素が信頼度の基準に達している場合はこの値が使用され、基準に達しない場合はデフォルト値が使用されます。 -
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムでは、主要なデータベース・ワークロードが1つのみ存在することを前提としています。アルゴリズムによってこのワークロードに対して統計情報が調整され、他の小規模なワークロードが無視されます。この前提が当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
-
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
-
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合
-
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合
-
-
このデータベースでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
参照:
オプティマイザ統計プリファレンスの管理方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.66 IMPLEMENT_ADVISOR_TASKファンクション
このファンクションは、オプティマイザ統計アドバイザによって作成された推奨事項を実装します。
構文
DBMS_STATS.IMPLEMENT_ADVISOR_TASK (
task_name IN VARCHAR2,
execution_name IN VARCHAR2 := NULL,
level IN VARCHAR2 := 'TYPICAL')
RETURN CLOB;
パラメータ
表185-70 IMPLEMENT_ADVISOR_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
アドバイザの実行を修飾して識別する名前。指定しない場合、アドバイザによって自動的に生成されます。 指定した実行が既存の実行名と競合する場合は、ファンクションでエラーが戻されます。 |
|
実装のレベル。有効な値は、次のとおりです。
|
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
事前定義された
AUTO_STATS_ADVISOR_TASK
でこのサブプログラムを実行できます。 -
このサブプログラムは実行者権限を使用して実行します。
このタスクの実行結果は、実行しているユーザーの権限に依存します。
-
SYSTEM
レベルANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーのみが、このタスクをシステム・レベルのルールで実行できます。 -
操作レベル
結果は次の権限に依存します。
-
ANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーが、このタスクをすべての統計操作に実行できます。 -
ANALYZE ANY
権限はあるがANALYZE ANY DICTIONARY
権限はないユーザーが、このタスクをSYS
以外のすべてのスキーマに関連した統計操作に実行できます。 -
ANALYZE ANY DICTIONARY
権限はあるがANALYZE ANY
権限はないユーザーが、このタスクを独自のスキーマおよびSYS
スキーマに関連した統計操作に実行できます。 -
ANALYZE ANY
権限もANALYZE ANY DICTIONARY
権限もないユーザーのみが、この操作を独自のスキーマに関連した統計操作に実行できます。
-
-
オブジェクト・レベル
ユーザーは、統計収集権限を持つすべてのオブジェクトにこのタスクを実行できます。
戻り値
このファンクションは、推奨事項が正常に実装されたことを示すXML CLOBを戻します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-10 オプティマイザ統計アドバイザ推奨事項の実装
このスクリプトは、基本的なオプティマイザ統計アドバイザ・セッションを示しています。タスクを作成して実行し、レポートを生成し、推奨事項を実装します。
DECLARE
v_tname VARCHAR2(128) := 'my_task';
v_ename VARCHAR2(128) := NULL;
v_report CLOB := null;
v_script CLOB := null;
v_imp_result CLOB;
BEGIN
-- create a task
v_tname := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname);
-- execute the task
v_ename := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
-- view the task report
v_report := DBMS_STATS.REPORT_ADVISOR_TASK(v_tname);
DBMS_OUTPUT.PUT_LINE(v_report);
-- implement all recommendations
v_imp_result := DBMS_STATS.IMPLEMENT_ADVISOR_TASK(v_tname);
END;
ノート:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.67 IMPORT_COLUMN_STATSプロシージャ
このプロシージャは、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);
パラメータ
表185-71 IMPORT_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
|
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.68 IMPORT_DATABASE_PREFSプロシージャ
このプロシージャは、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);
パラメータ
表185-72 IMPORT_DATABASE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報のインポート先の統計表の名前。 |
|
|
|
|
|
値 |
例外
ORA-20000
: 権限が不十分です。
使用上のノート
-
このプロシージャを実行するには、SYSDBAロールまたは
ANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.IMPORT_DATABASE_PREFS('STATTAB', statown=>'SH');
185.7.69 IMPORT_DATABASE_STATSプロシージャ
このプロシージャでは、ユーザー統計表からデータベース内のすべてのオブジェクトに関する統計情報をインポートして、データ・ディクショナリに格納します。
構文
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);
パラメータ
表185-73 IMPORT_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
インポートする統計が含まれている統計表を指定します。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
オブジェクト(表)のレベルでロックされている統計情報を上書きします。
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
デフォルト値は |
セキュリティ・モデル
SYSDBA
権限を所有しているか、ANALYZE ANY DICTIONARY
とANALYZE ANY
の両方のシステム権限を所有している必要があります。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.70 IMPORT_DICTIONARY_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);
パラメータ
表185-74 IMPORT_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
オブジェクト(表)のレベルで統計情報のロックを無視します。
|
|
インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
デフォルト値は |
セキュリティ・モデル
SYSDBA
権限を所有しているか、ANALYZE ANY DICTIONARY
とANALYZE ANY
の両方のシステム権限を所有している必要があります。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.71 IMPORT_FIXED_OBJECTS_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);
パラメータ
表185-75 IMPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
統計情報のロックを無視します。
|
セキュリティ・モデル
SYSDBA
システム権限またはANALYZE ANY DICTIONARY
システム権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.72 IMPORT_INDEX_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);
パラメータ
表185-76 IMPORT_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
索引の名前 |
|
索引パーティション名。索引がパーティション化されていて、 |
|
統計情報を取り出す場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
索引の統計情報がロックされていても、統計情報をインポートします。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.73 IMPORT_SCHEMA_PREFSプロシージャ
このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスをインポートするために使用されます。
構文
DBMS_STATS.IMPORT_SCHEMA_PREFS ( ownname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表185-77 IMPORT_SCHEMA_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
統計情報のインポート元の統計表の名前 |
|
(オプション) |
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
-
このプロシージャを実行するには、所有者として接続するか、あるいは
SYSDBA
権限またはANALYZE
ANY
システム権限を持っている必要があります。 -
すべての引数は
VARCHAR2
タイプです。値は引用符で囲みます。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.IMPORT_SCHEMA_PREFS('SH', 'STAT');
185.7.74 IMPORT_SCHEMA_STATSプロシージャ
このプロシージャでは、ユーザー統計表からownname
で識別されるスキーマ内のすべてのオブジェクトに関する統計情報をインポートして、データ・ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_SCHEMA_STATS (
ownname VARCHAR2,
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);
パラメータ
表185-78 IMPORT_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
インポートする統計情報を格納するユーザー表を識別します。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
オブジェクト・レベルでロックされている統計情報を上書きするかどうかを指定します。指定可能な値は次のとおりです。
|
|
処理する統計を指定します。サポートされている値は次のとおりです。
値のカンマ区切りリストを指定できます。たとえば、 デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.75 IMPORT_SYSTEM_STATSプロシージャ
このプロシージャは、stattab
で識別されるユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。
構文
DBMS_STATS.IMPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL);
パラメータ
表185-79 IMPORT_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報を取り出すユーザー統計表の識別子。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003
: システムの統計情報をエクスポートできません。
使用上のノート
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.76 IMPORT_TABLE_PREFSプロシージャ
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを設定するために使用されます。
構文
DBMS_STATS.IMPORT_TABLE_PREFS ( ownname IN VARCHAR2, tabname IN VARCHAR2, stattab IN VARCHAR2, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表185-80 IMPORT_TABLE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
|
統計情報のインポート元の統計表の名前 |
|
(オプション)stattab内の統計情報を関連付ける識別子。 |
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
使用上のノート
-
このプロシージャを実行するには、その表の所有者として接続するか、または
ANALYZE
ANY
システム権限を持っている必要があります。 -
すべての引数は
VARCHAR2
タイプです。値は引用符で囲みます。 -
Oracleでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
例
DBMS_STATS.IMPORT_TABLE_PREFS('SH', 'SALES', 'STAT');
185.7.77 IMPORT_TABLE_STATSプロシージャ
このプロシージャでは、stattab
で識別されるユーザー統計表から特定の表に関する統計情報をインポートして、データ・ディクショナリに格納します。
構文
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);
パラメータ
表185-81 IMPORT_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
表の名前を指定します。 |
|
表パーティション名。表がパーティション化されていて、 |
|
統計の取得場所を示すユーザー統計表を識別します。 |
|
|
|
この表の列と索引の統計をインポートするかどうかを示します。デフォルトは |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します |
|
オブジェクト・レベルでロックされている統計情報を上書きするかどうかを指定します。指定可能な値は次のとおりです。
|
|
処理する統計を指定します。サポートされている値は次のとおりです。
値のカンマ区切りリストを指定できます。たとえば、 デフォルト値は |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY
権限が必要です。SYS
が所有しているオブジェクトの場合は、表の所有者であるか、ANALYZE ANY DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: ユーザー統計表の値が無効または矛盾しています。
使用上のノート
Oracle Databaseでは、文字セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。
185.7.78 INTERRUPT_ADVISOR_TASKプロシージャ
このプロシージャは、現在実行中のオプティマイザ統計アドバイザ・タスクを中断します。
通常終了のようにタスクが操作を終了し、この時点の中間結果にアクセスできます。RESUME_ADVISOR_TASKプロシージャを使用してタスクを再開することもできます。
構文
DBMS_STATS.INTERRUPT_ADVISOR_TASK (
task_name IN VARCHAR2);
パラメータ
表185-82 INTERRUPT_ADVISOR_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
ユーザーによってタスクが実行され、中断されて、別のユーザーによって再開されるケースについて考えます。この場合、オプティマイザ統計アドバイザでは、タスクを再開したユーザーの権限に基づいて、再開された実行をチェックします。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-11 オプティマイザ統計アドバイザ・タスクの中断
この例では、SQL*Plusセッションを開始して、my_task
というアドバイザ・タスクを作成して実行します。
DECLARE
v_tname VARCHAR2(128) := 'my_task';
v_ename VARCHAR2(128) := NULL;
BEGIN
-- create a task
v_tname := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname);
-- execute the task
v_ename := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
END;
/
個々の端末で、2つ目のSQL*Plusセッションを開始して、次のプログラムを実行します。
XEC DBMS_STATS.INTERRUPT_ADVISOR_TASK('my_task');
最初のセッションでは、タスクの取消しを示すORA-13632
が戻されます。
ORA-13638: The user interrupted the current operation.
185.7.79 LOCK_PARTITION_STATSプロシージャ
このプロシージャによって、ユーザーはパーティションの統計情報をロックできます。
構文
DBMS_STATS.LOCK_PARTITION_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2);
パラメータ
表185-83 LOCK_PARTITION_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ロックするスキーマの名前。 |
|
表の名前 |
|
(サブ・)パーティション名。 |
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.80 LOCK_SCHEMA_STATSプロシージャ
このプロシージャは、スキーマのすべての表の統計情報をロックします。
構文
DBMS_STATS.LOCK_SCHEMA_STATS ( ownname VARCHAR2);
パラメータ
表185-84 LOCK_SCHEMA_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プロシージャを明示的に起動する必要がなくなります。
185.7.81 LOCK_TABLE_STATSプロシージャ
このプロシージャは、表の統計情報をロックします。
構文
DBMS_STATS.LOCK_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2);
パラメータ
表185-85 LOCK_TABLE_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プロシージャを明示的に起動する必要がなくなります。
185.7.82 MERGE_COL_USAGEプロシージャ
このプロシージャは、dblink
を使用して、列使用情報をソース・データベースからローカル・データベースにマージします。
構文
列使用情報が指定した表または列にすでに存在する場合は、MERGE_COL_USAGE
はローカルとリモートの両方の情報をマージします。
DBMS_STATS.MERGE_COL_USAGE ( dblink IN VARCHAR2);
パラメータ
表185-86 MERGE_COL_USAGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
使用上のノート
このプロシージャを実行するには、ユーザーはSYS
である必要があります。また、dblink
の作成中に指定されたユーザーは、SYS
スキーマの表で選択した権限を持っていることが予期されます。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: パラメータdblink
にはNULL
を指定できません。
ORA-20002
: TEMP
表を作成できません。
185.7.83 PREPARE_COLUMN_VALUESプロシージャ
これらのプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点の実際の値を、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);
パラメータ
表185-87 PREPARE_COLUMN_VALUESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、 |
|
ハイブリッド・ヒストグラムが必要な場合、この配列には、 たとえば、ある配列で ノート:
|
表185-88に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。
表185-88 データ・タイプ固有の入力パラメータ
タイプ | 説明 |
---|---|
|
列のタイプが文字ベースの場合の値の配列。各文字列の最初の64バイトまでが使用されます。配列のエントリ数は、2から2050の範囲内である必要があります。データ・タイプが固定の |
|
列のタイプが日付ベースの場合の値の配列。 |
|
列のタイプがdoubleベースの場合の値の配列。 |
|
列のタイプがfloatベースの場合の値の配列。 |
|
列のタイプが数値ベースの場合の値の配列。 |
|
列のタイプが |
|
列のタイプが各国語文字セット・ベースの場合の最大値と最小値。このタイプの列について、ヒストグラム情報は提供できません。データ・タイプが固定の |
|
列タイプが |
出力パラメータ
表185-89 PREPARE_COLUMN_VALUESプロシージャの出力パラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
例外
ORA-20001
: 入力値が無効または矛盾しています。
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.84 PREPARE_COLUMN_VALUES_NVARCHARプロシージャ
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点の実際の値を、SET_COLUMN_STATSプロシージャを使用して将来格納するためにOracleの内部表記に変換します。
構文
DBMS_STATS.PREPARE_COLUMN_VALUES_NVARCHAR ( srec IN OUT StatRec, nvmin NVARCHAR2, nvmax NVARCHAR2);
パラメータ
表185-90 PREPARE_COLUMN_VALUES_NVARCHARプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、 |
|
ハイブリッド・ヒストグラムが必要な場合、この配列には、 たとえば、ある配列で ノート:
|
表185-88に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。
表185-91 PREPARE_COLUMN_VALUES_NVARCHARデータ・タイプ固有の入力パラメータ
タイプ | 説明 |
---|---|
|
列のタイプが各国語文字セット・ベースの場合の最大値と最小値。このタイプの列について、ヒストグラム情報は提供できません。データ・タイプが固定の |
出力パラメータ
表185-92 PREPARE_COLUMN_VALUES_NVARCHARプロシージャの出力パラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
例外
ORA-20001
: 入力値が無効または矛盾しています。
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.85 PREPARE_COLUMN_VALUES_ROWIDプロシージャ
このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、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);
パラメータ
表185-93 PREPARE_COLUMN_VALUES_ROWIDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
srec |
値(
値(
|
rwmin |
列タイプが |
rwmax |
列タイプが |
表185-94 StatRecレコード・タイプのフィールド
フィールド | 説明 |
---|---|
|
最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、 |
|
頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、 |
|
ハイブリッド・ヒストグラムが必要な場合、この配列には、 たとえば、ある配列で ノート:
|
|
|
|
|
|
|
|
|
|
|
|
|
使用上のノート
このプロシージャを起動するために特別な権限やロールは必要ありません。
185.7.86 PUBLISH_PENDING_STATSプロシージャ
このプロシージャは、保留中として収集および格納された統計情報をパブリッシュするために使用されます。
構文
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);
パラメータ
表185-95 PUBLISH_PENDING_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
|
セキュリティ・モデル
このプロシージャを実行するには、このプロシージャによって処理される表の統計情報を収集する権限と同じ権限を持っている必要があります。
例外
ORA-20000
: 権限が不十分です
使用上のノート
-
パラメータ
tabname
がNULL
の場合、指定したスキーマのすべての表にパブリッシュが適用されます。 -
デフォルトの所有者/スキーマは、このプロシージャを実行するユーザーです。
例
DBMS_STATS.PUBLISH_PENDING_STATS ('SH', null);
185.7.87 PURGE_STATSプロシージャ
このプロシージャは、ディクショナリに保存されている統計情報の古いバージョンをパージします。
このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
構文
DBMS_STATS.PURGE_STATS( before_timestamp TIMESTAMP WITH TIME ZONE);
パラメータ
表185-96 PURGE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このタイムスタンプがパージされる前に保存された統計情報のバージョン。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
使用上のノート
このプロシージャを呼び出すには、ANALYZE
ANY
権限とANALYZE
ANY
DICTIONARY
権限が必要です。
185.7.88 REMAP_STAT_TABLEプロシージャ
このプロシージャは、ユーザー統計表のオブジェクトの名前を再マップします。これにより、同じ定義の異なる名前を持つオブジェクトに統計情報をインポートできます。
構文
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);
パラメータ
表185-97 REMAP_STAT_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計表の所有者。 |
|
ユーザー統計表の識別子。 |
|
名前を変更する表の所有者。この引数は、 |
|
名前を変更する表の名前。 |
|
表の所有者の新しい名前。列や索引などの依存オブジェクトの所有者の名前も更新されます。 |
|
表の新しい名前。この引数は、 |
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 無効な入力です
例
次の文は、ユーザー統計表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');
185.7.89 REPORT_ADVISOR_TASKファンクション
このファンクションは、オプティマイザ統計アドバイザ・タスクの結果をレポートします。
構文
DBMS_STATS.REPORT_ADVISOR_TASK(
task_name IN VARCHAR2,
execution_name IN VARCHAR2 := NULL,
type IN VARCHAR2 := 'TEXT',
section IN VARCHAR2 := 'ALL',
level IN VARCHAR2 := 'TYPICAL')
RETURN CLOB;
パラメータ
表185-98 REPORT_ADVISOR_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
アドバイザのタスク実行を修飾して識別する名前。指定しない場合、指定したタスクの最新の実行が使用されます。 |
|
オプティマイザ統計アドバイザ・レポートのタイプ。設定可能な値は、 |
|
レポート内のセクション。使用可能な値は |
|
レポートの形式。使用可能な値は |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
事前定義された
AUTO_STATS_ADVISOR_TASK
でこのサブプログラムを実行できます。 -
このサブプログラムは実行者権限を使用して実行します。
このタスクの実行結果は、実行しているユーザーの権限に依存します。
-
SYSTEM
レベルANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーのみが、このタスクをシステム・レベルのルールで実行できます。 -
操作レベル
結果は次の権限に依存します。
-
ANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーが、このタスクをすべての統計操作に実行できます。 -
ANALYZE ANY
権限はあるがANALYZE ANY DICTIONARY
権限はないユーザーが、このタスクをSYS
以外のすべてのスキーマに関連した統計操作に実行できます。 -
ANALYZE ANY DICTIONARY
権限はあるがANALYZE ANY
権限はないユーザーが、このタスクを独自のスキーマおよびSYS
スキーマに関連した統計操作に実行できます。 -
ANALYZE ANY
権限もANALYZE ANY DICTIONARY
権限もないユーザーのみが、この操作を独自のスキーマに関連した統計操作に実行できます。
-
-
オブジェクト・レベル
ユーザーは、統計収集権限を持つすべてのオブジェクトにこのタスクを実行できます。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: ユーザー入力エラー -
ORA-20012
: オプティマイザ統計アドバイザのエラー
戻り値
このファンクションは、レポートを含むCLOBを戻します。
例
(オプション)ここでAPIまたはサブプログラムの使用例を示して簡潔に説明します。
例185-12 HTMLレポートの生成
この例では、myrep
というプロシージャを作成してコールし、HTMLレポートを生成します。
SET ECHO ON
SET FEEDBACK ON
SET SERVEROUTPUT ON
SET TRIMS ON
SET LINESIZE 300
EXECUTE DBMS_OUTPUT.ENABLE (buffer_size => 10000000);
CREATE OR REPLACE PROCEDURE myrep(p_tname VARCHAR2, p_ftype VARCHAR2, which VARCHAR2)
IS
v_report CLOB := null;
v_script CLOB := null;
v_ftype VARCHAR2(400) := p_ftype;
v_tname VARCHAR2(400) := p_tname;
v_len NUMBER(10);
v_ps NUMBER(10) := 10000;
v_pn NUMBER(10) := 1;
v_ret VARCHAR2(32767);
BEGIN
IF which = 'REPORT'
THEN
-- generate a report
v_report := DBMS_STATS.REPORT_ADVISOR_TASK(
task_name => v_tname,
type => v_ftype,
section => 'ALL',
level => 'ALL');
v_len := DBMS_LOB.getlength(v_report);
WHILE (v_pn < v_len)
LOOP
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR(v_report, v_ps, v_pn));
v_pn := v_pn + v_ps;
END LOOP;
ELSE
-- generate a script
v_script := DBMS_STATS.SCRIPT_ADVISOR_TASK(v_tname);
v_len := DBMS_LOB.getlength(v_script);
WHILE (v_pn < v_len)
LOOP
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR( v_script, v_ps, v_pn));
v_pn := v_pn + v_ps;
END LOOP;
END IF;
END;
/
SHOW ERRORS
SPOOL report.txt
EXECUTE myrep('my_task','HTML','REPORT');
SPOOL OFF
例185-13 AUTO_STATS_ADVISOR_TASKのテキスト・レポートの生成
次の例では、前述の例で作成したmyrep
プロシージャをAUTO_STATS_ADVISOR_TASK
に対して起動します。
EXEC myrep('AUTO_STATS_ADVISOR_TASK','TEXT','REPORT');
次の出力例に、レポートの一部を示します。
GENERAL INFORMATION
-------------------------------------------------------------------------------
Task Name : AUTO_STATS_ADVISOR_TASK
Execution Name : EXEC_97
Created : 07-08-16 10:18:10
Last Modified : 07-11-16 03:02:30
-------------------------------------------------------------------------------
SUMMARY
-------------------------------------------------------------------------------
For execution EXEC_97 of task AUTO_STATS_ADVISOR_TASK, the Statistics Advisor
has 10 finding(s). The findings are related to the following rules:
COMPLETEAUTOJOB, MAINTAINSTATSHISTORY, USEDEFAULTPREFERENCE,
AVOIDSETPROCEDURES, USEDEFAULTPARAMS, USEGATHERSCHEMASTATS, AVOIDSTALESTATS,
UNLOCKNONVOLATILETABLE, USEINCREMENTAL, AVOIDANALYZETABLE. Please refer to the
finding section for detailed information.
-------------------------------------------------------------------------------
FINDINGS
-------------------------------------------------------------------------------
Rule Name: MaintainStatsHistory
Rule Description: Maintain Statistics History
Finding: Statistics history tables are too big.
Recommendation: Check the other findings of this rule, as well as the
findings for the rules AvoidFrequentStatsCollection,
UseDefaultPreference, UseDefaultParams for possible causes
and recommendations.
Rationale: The size of the statistics history table could be big because of
violations of other rules.
----------------------------------------------------
Rule Name: UseDefaultPreference
Rule Description: Use Default Preference for Stats Collection
Finding: Global preference SYS_FLAGS is set to a non-default value '1'.
Recommendation: Set the value of preference SYS_FLAGS to '0'.
Example:
-- Setting preference cascade to default value:
dbms_stats.set_global_prefs('CASCADE', NULL);
Rationale: Preference SYS_FLAGS is for Oracle internal use only, setting it
to nondefault value '1' could cause unforeseen consequences.
.
.
.
185.7.90 REPORT_COL_USAGEファンクション
このファンクションは、記録された列(グループ)の使用方法の情報を報告します。
構文
DBMS_STATS.REPORT_COL_USAGE ( ownname IN VARCHAR2, tabname IN VARCHAR2) RETURN CLOB;
パラメータ
表185-99 REPORT_COL_USAGEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
表名。 |
使用上のノート
このプロシージャを実行するには、SYSDBA
管理権限、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
185.7.91 REPORT_GATHER_AUTO_STATSファンクション
このファンクションは、自動統計情報収集ジョブをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、自動統計情報収集が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。
構文
DBMS_STATS.REPORT_GATHER_AUTO_STATS ( detail_level VARCHAR2 DEFAULT 'TYPICAL', format VARCHAR2 DEFAULT 'TEXT') RETURN CLOB;
パラメータ
表185-100 REPORT_GATHER_AUTO_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
使用上のノート
ユーザーSYS
のみがREPORT_GATHER_AUTO_STATS
ファンクションを実行できます。
185.7.92 REPORT_GATHER_DATABASE_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',
statown IN VARCHAR2 DEFAULT NULL,
gather_sys IN BOOLEAN DEFAULT TRUE,
no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE (
GET_PARAM('NO_INVALIDATE')),
gather_temp IN BOOLEAN DEFAULT FALSE,
gather_fixed IN BOOLEAN DEFAULT FALSE,
stattype IN VARCHAR2 DEFAULT DATA,
obj_filter_list IN ObjectTab DEFAULT NULL,
detail_level IN VARCHAR2 DEFAULT 'TYPICAL',
format IN VARCHAR2 DEFAULT 'TEXT')
RETURN CLOB;
パラメータ
表185-101 REPORT_GATHER_DATABASE_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
サンプル・サイズに使用する行のパーセント。有効範囲は0.000001から100です。NULL値の場合は計算されます。 定数 |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。このパラメータは、統計情報の推定時にのみ使用されます。 |
|
メソッド・オプション。このパラメータは、
デフォルトは |
|
並列度。 |
|
収集する統計情報の粒度が決定されます。このプリファレンスは、パーティション表にのみ使用されます。 有効な値は次のとおりです。
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、データベース内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 データベースでは、統計表が分析対象のオブジェクトと同じスキーマに存在していることを前提としています。そのため、このオプションを使用するには、そのような表がスキーマごとに1つ存在する必要があります。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
|
|
|
|
|
|
一時表は、 |
|
固定表に関する統計情報を収集できるのは、ユーザー
データベースによって、統計情報が収集される固定表の依存カーソルが無効化されることはありません。このオプションは内部使用専用です。 |
|
統計情報のタイプ:
|
|
オブジェクト・フィルタのリスト。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。 指定された場合、 |
|
レポートの内容の詳細レベル。有効な値は次のとおりです。
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポートの形式。有効な値は、次のとおりです。
|
戻り値
レポートを含むCLOB
オブジェクト。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
使用上のノート
このプロシージャを実行するには、SYSDBA
ロールまたはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
185.7.93 REPORT_GATHER_DICTIONARY_STATSファンクション
このファンクションは、GATHER_DICTIONARY_STATS
プロシージャをレポート・モードで実行します。
データベースで統計が収集されることはありませんが、GATHER_DICTIONARY_STATS
を起動したときに影響を受けるすべてのオブジェクトがレポートされます。レポートの詳細レベルは、detail_level
入力パラメータで定義されます。「REPORT_GATHER_DICTIONARY_STATSファンクション」のdetail_level
とformat
の説明を参照してください。その他すべての入力パラメータについては、「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,
options IN VARCHAR2 DEFAULT 'GATHER AUTO',
no_invalidate IN BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE
(GET_PARAM('NO_INVALIDATE')),
stattype IN VARCHAR2 DEFAULT 'DATA',
obj_filter_list IN ObjectTab DEFAULT NULL,
detail_level IN VARCHAR2 DEFAULT 'TYPICAL',
format IN VARCHAR2 DEFAULT 'TEXT')
RETURN CLOB;
パラメータ
表185-102 REPORT_GATHER_DICTIONARY_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマのコンポーネントID。 |
|
サンプリングする行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。 |
|
メソッド・オプション。このパラメータには次の値を使用できます。
デフォルトは |
|
並列度。 初期化パラメータに基づいてデフォルト値を指定するには、定数 |
|
収集する統計情報の粒度が決定されます。このプリファレンスは、パーティション表にのみ使用されます。 有効な値は次のとおりです。
|
|
索引に関する統計情報も収集します。索引の統計情報の収集は、並列処理されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
統計情報のタイプ:
|
|
オブジェクト・フィルタのリスト。指定された場合、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対して |
|
「REPORT_GATHER_DICTIONARY_STATSファンクション」の説明を参照してください。 |
|
「REPORT_GATHER_DICTIONARY_STATSファンクション」の説明を参照してください。 |
戻り値
レポートを含むCLOB
オブジェクト。
使用上のノート
このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: 索引が存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
185.7.94 REPORT_GATHER_FIXED_OBJ_STATSファンクション
このファンクションは、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;
パラメータ
表185-103 REPORT_GATHER_FIXED_OBJ_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
戻り値
レポートを含むCLOB
オブジェクト。
使用上のノート
このプロシージャを実行するには、SYSDBA
またはANALYZE
ANY
DICTIONARY
システム権限が必要です。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
185.7.95 REPORT_GATHER_SCHEMA_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', 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;
パラメータ
表185-104 REPORT_GATHER_SCHEMA_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
分析するスキーマ( |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次を受け入れます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
統計情報を収集するオブジェクトの詳細は、次のように指定します。
|
|
失効または空と判別されたオブジェクトのリスト。 |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
ロックされている場合でも、オブジェクトの統計情報を収集します。 |
|
オブジェクト・フィルタのリスト。指定された場合、 |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: スキーマが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
例
オブジェクト・フィルタ・リストの適用
次の例では、SAMPLE
スキーマのT
接頭辞を持つ任意の表、またはHR
スキーマの任意の表(失効している場合)で統計情報が収集されることを指定しています。
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 := 'HR'; DBMS_STATS.GATHER_SCHEMA_STATS(NULL, obj_filter_list => filter_lst, options => 'GATHER STALE'); END;
185.7.96 REPORT_GATHER_TABLE_STATSファンクション
このプロシージャは、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;
パラメータ
表185-105 REPORT_GATHER_TABLE_STATSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
分析する表のスキーマ。 |
|
表の名前。 |
|
パーティションの名前 |
|
推定する行のパーセント( |
|
ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。 |
|
次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。
デフォルトは |
|
並列度。 |
|
収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。
'
|
|
表の索引について統計情報を収集します。このオプションを使用することは、表の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。定数 |
|
現在の統計情報の保存場所を示すユーザー統計表の識別子。 |
|
|
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
統計タイプ。許可されている値は、 |
|
ロックされている場合でも、表の統計情報を収集します。 |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
戻り値
レポートを含むCLOB
オブジェクト。
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.97 REPORT_SINGLE_STATS_OPERATIONファンクション
このファンクションはマルチテナント環境で特定のプラガブル・データベース(PDB)の指定された操作のレポートを生成します(オプション)。
構文
ノート:
マルチテナント・コンテナ・データベースが、Oracle Database 21c以降のリリースで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、"データベース"と"非CDB"は、文脈に応じてCDBまたはPDBを指しています。アップグレードなどでは、"非CDB"が以前のリリースの非CDBを指している場合もあります。
DBMS_STATS.REPORT_SINGLE_STATS_OPERATIONS ( opid NUMBER, detail_level VARCHAR2 DEFAULT 'TYPICAL', format VARCHAR2 DEFAULT 'TEXT' container_id NUMBER DEFAULT NULL) RETURN CLOB;
パラメータ
表185-106 REPORT_SINGLE_STATS_OPERATIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
操作ID |
|
レポートの内容の詳細レベル
レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合( |
|
レポート・フォーマットは次のとおりです。
|
|
この操作が実行されたプラガブル・データベース(PDB)のID。マルチテナント環境では、操作IDによって操作が一意に識別されません。つまり、各PDBの異なる操作に同じ操作IDが割り当てられている場合があります。したがって、マルチテナント環境では、PDB IDが指定されない場合、レポートに複数の操作が含まれる場合があります。通常の(CDBではない)データベース環境では、操作IDは操作ごとに一意です。 |
使用上のノート
このプロシージャを呼び出すには、ANALYZE
ANY
権限とANALYZE
ANY
DICTIONARY
権限が必要です。
185.7.98 REPORT_STATS_OPERATIONSファンクション
このファンクションは、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;
パラメータ
表185-107 REPORT_STATS_OPERATIONSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
レポートの内容の詳細レベル
|
|
レポート・フォーマットは次のとおりです。
|
|
指定された時間ポイント(開始と終了)の間に実行された最新のN個の操作のみが含まれるようにレポートを制限します。デフォルト値は |
|
レポートには、このタイムスタンプ後に開始された統計操作のみが含まれます。 |
|
レポートには、このタイムスタンプ前に終了した統計操作のみが含まれます。 |
|
|
|
マルチテナント環境では、1つ以上のプラガブル・データベース(PDB)が含まれています。 |
使用上のノート
このプロシージャを呼び出すには、ANALYZE
ANY
権限とANALYZE
ANY
DICTIONARY
権限が必要です。
例
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;
185.7.99 RESET_ADVISOR_TASKプロシージャ
このプロシージャは、オプティマイザ統計アドバイザ・タスクの実行を初期状態にリセットします。現在実行されていないタスクのみをリセットします。
構文
DBMS_STATS.RESET_ADVISOR_TASK (
task_name IN VARCHAR2);
パラメータ
表185-108 RESET_ADVISOR_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
185.7.100 RESET_COL_USAGEプロシージャ
このプロシージャは、記録された列(グループ)の使用情報を削除します。
このプロシージャは、シード列の使用を初期化する必要があるという非常に稀なケースでのみ使用する必要があります。
構文
DBMS_STATS.RESET_COL_USAGE ( ownname IN VARCHAR2, tabname IN VARCHAR2);
パラメータ
表185-109 RESET_COL_USAGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名。 |
|
表名。 |
使用上のノート
このプロシージャを実行するには、SYSDBA
管理権限、またはANALYZE ANY DICTIONARY
とANALYZE ANY
の両方のシステム権限が必要です。
185.7.101 RESET_GLOBAL_PREF_DEFAULTSプロシージャ
このプロシージャは、グローバル・プリファレンス(CASCADE
、ESTIMATE_PERCENT
、GRANULARITY
など)をデフォルト値に設定します。
また、SET_GLOBAL_PREFSプロシージャによって設定されたグローバル・プリファレンスを元に戻します。
構文
DBMS_STATS.RESET_GLOBAL_PREF_DEFAULTS;
使用上のノート
このプロシージャを呼び出すには、ANALYZE
ANY
権限とANALYZE
ANY
DICTIONARY
権限が必要です。
185.7.102 RESET_PARAM_DEFAULTSプロシージャ
この推奨されないプロシージャは、すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。
ノート:
テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。このプロシージャのかわりに、RESET_GLOBAL_PREF_DEFAULTSプロシージャを使用します。
次も参照してください。DBMS_STATSの推奨されないサブプログラム
構文
DBMS_STATS.RESET_PARAM_DEFAULTS;
185.7.103 RESTORE_DATABASE_STATSプロシージャ
このプロシージャは、データベース内のすべての表の統計情報を、指定したタイムスタンプ(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')));
パラメータ
表185-110 RESTORE_DATABASE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
ORA-20006
: 統計情報をリストアできません。統計履歴を使用できません。
185.7.104 RESTORE_DICTIONARY_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')));
パラメータ
表185-111 RESTORE_DICTIONARY_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
使用上のノート
このプロシージャを実行するには、SYSDBA
、またはANALYZE
ANY
DICTIONARY
とANALYZE
ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
ORA-20006
: 統計情報をリストアできません。統計履歴を使用できません。
185.7.105 RESTORE_FIXED_OBJECTS_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')));
パラメータ
表185-112 RESTORE_FIXED_OBJECTS_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
使用上のノート
このプロシージャを実行するには、SYSDBA
またはANALYZE
ANY
DICTIONARY
システム権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
ORA-20006
: 統計情報をリストアできません。統計履歴を使用できません。
185.7.106 RESTORE_SCHEMA_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')));
パラメータ
表185-113 RESTORE_SCHEMA_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアする表のスキーマ。 |
|
統計情報をリストアするタイムスタンプ。 |
|
統計情報は、ロックされていてもリストアされます。 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
ORA-20006
: 統計情報をリストアできません。統計履歴を使用できません。
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.107 RESTORE_SYSTEM_STATSプロシージャ
このプロシージャは、システムの統計情報を、指定したタイムスタンプ(as_of_timestamp
)でリストアします。
構文
DBMS_STATS.RESTORE_SCHEMA_STATS( as_of_timestamp TIMESTAMP WITH TIME ZONE);
パラメータ
表185-114 RESTORE_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアするタイムスタンプ。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
ORA-20006
: 統計情報をリストアできません。統計履歴を使用できません。
使用上のノート
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
185.7.108 RESTORE_TABLE_STATSプロシージャ
このプロシージャは、表の統計情報を、指定したタイムスタンプ(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')));
パラメータ
表185-115 RESTORE_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
統計情報をリストアする表のスキーマ。 |
|
表の名前。 |
|
統計情報をリストアするタイムスタンプ。 |
|
表がクラスタの一部であるときに、このパラメータが |
|
統計情報は、表の統計情報がロックされていてもリストアされます。指定したタイムスタンプでの表の統計情報がロックされていない場合は、その統計情報をロック解除します。 |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 値が無効または矛盾しています。
ORA-20006
: 統計情報をリストアできません。統計履歴を使用できません。
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.109 RESUME_ADVISOR_TASKプロシージャ
このプロシージャは、中断したタスクを再開します。最後に中断した実行のみを再開します。
構文
DBMS_STATS.RESUME_ADVISOR_TASK (
task_name IN VARCHAR2);
パラメータ
表185-116 RESUME_ADVISOR_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
ユーザーによってタスクが実行され、中断されて、別のユーザーによって再開されるケースについて考えます。この場合、オプティマイザ統計アドバイザでは、タスクを再開したユーザーの権限に基づいて、再開された実行をチェックします。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-14 中断したタスクの再開
この例では、SQL*Plusセッションを開始して、my_task
というアドバイザ・タスクを作成して実行します。
DECLARE
v_tname VARCHAR2(128) := 'my_task';
v_ename VARCHAR2(128) := NULL;
BEGIN
-- create a task
v_tname := DBMS_STATS.CREATE_ADVISOR_TASK(v_tname);
-- execute the task
v_ename := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
END;
/
個々の端末で、2つ目のSQL*Plusセッションを開始して、次のプログラムを実行します。
XEC DBMS_STATS.INTERRUPT_ADVISOR_TASK('my_task');
最初のセッションでは、タスクの取消しを示すORA-13632
が戻されます。
ORA-13638: The user interrupted the current operation.
2つ目のSQL*Plusセッションで、次のようにタスク実行を再開します。
XEC DBMS_STATS.RESUME_ADVISOR_TASK('my_task');
185.7.110 SCRIPT_ADVISOR_TASKファンクション
オプティマイザ統計アドバイザで検出された問題に対して推奨されるアクションを実装するスクリプトを取得します。
生成されるスクリプトには、実行可能なPL/SQL文が含まれます。各アクションのコマンドの前には、潜在的な副作用をリストするコメントが示されます。コメントを確認して、目的のセクションのみを実行できます。
構文
DBMS_STATS.SCRIPT_ADVISOR_TASK ( task_name IN VARCHAR2, execution_name IN VARCHAR2 := NULL, dir_name IN VARCHAR2 := NULL, level IN VARCHAR2 := 'TYPICAL') RETURN CLOB;
パラメータ
表185-117 SCRIPT_ADVISOR_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
アドバイザの実行を修飾して識別する名前。指定しない場合、アドバイザによって自動的に生成されます。 指定した実行が既存の実行名と競合する場合は、ファンクションでエラーが戻されます。 |
|
生成されるスクリプトを書き込むディレクトリ名。名前が指定されない(NULL)場合、戻されるCLOBにスクリプトが含まれます。名前が指定されると、指定したディレクトリにCLOBの新しいファイルとしてスクリプトが戻されます。 |
|
生成するスクリプトのレベル。有効な値は、次のとおりです。
|
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
事前定義された
AUTO_STATS_ADVISOR_TASK
でこのサブプログラムを実行できます。 -
このサブプログラムは実行者権限を使用して実行します。
このタスクの実行結果は、実行しているユーザーの権限に依存します。
-
SYSTEM
レベルANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーのみが、このタスクをシステム・レベルのルールで実行できます。 -
操作レベル
結果は次の権限に依存します。
-
ANALYZE ANY
およびANALYZE ANY DICTIONARY
の両方の権限を持つユーザーが、このタスクをすべての統計操作に実行できます。 -
ANALYZE ANY
権限はあるがANALYZE ANY DICTIONARY
権限はないユーザーが、このタスクをSYS
以外のすべてのスキーマに関連した統計操作に実行できます。 -
ANALYZE ANY DICTIONARY
権限はあるがANALYZE ANY
権限はないユーザーが、このタスクを独自のスキーマおよびSYS
スキーマに関連した統計操作に実行できます。 -
ANALYZE ANY
権限もANALYZE ANY DICTIONARY
権限もないユーザーのみが、この操作を独自のスキーマに関連した統計操作に実行できます。
-
-
オブジェクト・レベル
ユーザーは、統計収集権限を持つすべてのオブジェクトにこのタスクを実行できます。
戻り値
このファンクションは、スクリプトを含むCLOBを戻します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
例185-15 オプティマイザ統計アドバイザ・スクリプトの作成
この例では、myrep
というプロシージャを作成し、このプロシージャをコールして、推奨事項を実装するスクリプトを印刷します。
SET ECHO ON
SET FEEDBACK ON
SET SERVEROUTPUT ON
SET TRIMS ON
SET LINESIZE 300
EXECUTE DBMS_OUTPUT.ENABLE (buffer_size => 10000000);
CREATE OR REPLACE PROCEDURE myrep(p_tname VARCHAR2, p_ftype VARCHAR2, which VARCHAR2)
IS
v_report CLOB := null;
v_script CLOB := null;
v_ftype VARCHAR2(400) := p_ftype;
v_tname VARCHAR2(400) := p_tname;
v_len NUMBER(10);
v_ps NUMBER(10) := 10000;
v_pn NUMBER(10) := 1;
v_ret VARCHAR2(32767);
BEGIN
IF which = 'REPORT'
THEN
-- generate a report
v_report := DBMS_STATS.REPORT_ADVISOR_TASK(
task_name => v_tname,
type => v_ftype,
section => 'ALL',
level => 'ALL');
v_len := DBMS_LOB.getlength(v_report);
WHILE (v_pn < v_len)
LOOP
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR(v_report, v_ps, v_pn));
v_pn := v_pn + v_ps;
END LOOP;
ELSE
-- generate a script
v_script := DBMS_STATS.SCRIPT_ADVISOR_TASK(v_tname);
v_len := DBMS_LOB.getlength(v_script);
WHILE (v_pn < v_len)
LOOP
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR(v_script, v_ps, v_pn));
v_pn := v_pn + v_ps;
END LOOP;
END IF;
END;
/
SHOW ERRORS
SPOOL report.txt
EXECUTE myrep('my_task','-','SCRIPT');
SPOOL OFF
185.7.111 SEED_COL_USAGEプロシージャ
このプロシージャは、指定したSQLチューニング・セットまたはデータベースで列使用情報を文からシードします。
このプロシージャは、SQL文を繰り返し、それらをコンパイルした上で、その文に表示される列の列使用情報をシードします。システムのワークロードを指定の時間にわたって監視し、監視ウィンドウでの処理中に実行された文に表示される列に基づいて、列の使用方法の情報をシードできます。
構文
DBMS_STATS.SEED_COL_USAGE ( sqlset_name IN VARCHAR2, owner_name IN VARCHAR2, time_limit IN POSITIVE DEFAULT NULL);
パラメータ
表185-118 SEED_COL_USAGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
監視対象の文を含むSQLチューニング・セットの名前。 このパラメータと |
|
監視対象の文を含むSQLチューニング・セットの所有者。 このパラメータと |
|
時間制限(分)。 |
セキュリティ・モデル
このプロシージャを呼び出すには、ANALYZE
ANY
権限とANALYZE
ANY
DICTIONARY
権限が必要です。
例外
ORA-20000
: 権限が不十分です
使用上のノート
このプロシージャは、列のグループもレポートします。記録される列のグループの拡張子は、CREATE_EXTENDED_STATSファンクションのプロシージャを使用して作成できます。sqlset_name
およびowner_name
がNULL
の場合、次のtime_limit
秒にシステムで実行される文に関する列(グループ)使用情報が記録されます。
この監視プロシージャは、SYS.COL_USAGE$
で表示できる従来の列使用情報とは異なる情報を記録します。このプロシージャは、SYS.COL_GROUP_USAGE$
に情報を格納します。
例
次の例では、5分または300秒にわたって監視が実行されます。
BEGIN DBMS_STATS.SEED_COL_USAGE (null,null,300); END;
185.7.112 SET_ADVISOR_TASK_PARAMETERプロシージャ
このプロシージャは、オプティマイザ統計アドバイザ・タスク・パラメータの値を更新します。
構文
DBMS_STATS.SET_ADVISOR_TASK_PARAMETER ( task_name IN VARCHAR2, parameter IN VARCHAR2, value IN VARCHAR2);
パラメータ
表185-119 SET_ADVISOR_TASK_PARAMETERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オプティマイザ統計アドバイザ・タスクの名前。 |
|
設定するパラメータの名前。指定したパラメータが存在しない場合はエラーが戻されます。 |
|
パラメータの新しい値。 |
セキュリティ・モデル
次の点に注意してください。
-
このサブプログラムを実行するには、
ADVISOR
権限を持つ必要があります。 -
タスクの所有者である必要があります。
-
このサブプログラムは実行者権限を使用して実行します。
例外
-
ORA-20000
: 権限が不十分です -
ORA-20001
: 入力値が無効です -
ORA-20012
: オプティマイザ統計アドバイザのエラー
参照:
オプティマイザ統計アドバイザを管理する方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.113 SET_COLUMN_STATSプロシージャ
このプロシージャは、列に関連する情報を設定します。
ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプが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);
パラメータ
表185-120 SET_COLUMN_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前です。 |
|
列が所属している表の名前。 |
|
列または拡張の名前。 |
|
統計情報を格納する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
個別値の数。 |
|
列密度。この値が |
|
|
|
|
|
列の平均長(バイト単位)。 |
|
Oracle内部で使用( |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
列の統計情報がロックされている場合でも、この値を設定します。 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効または矛盾しています。
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.114 SET_DATABASE_PREFSプロシージャ
このプロシージャは、データベースで所有されている表を除き、すべての表の統計プリファレンスを設定します。これらの表は、add_sys
パラメータにTRUE
を渡すことによって含めることができます。
構文
DBMS_STATS.SET_DATABASE_PREFS ( pname IN VARCHAR2, pvalue IN VARCHAR2, add_sys IN BOOLEAN DEFAULT FALSE);
パラメータ
表185-121 SET_DATABASE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスの既存の値を設定でき、デフォルトのプリファレンス値が使用されます:
|
|
プリファレンスの値。 |
|
値 |
表185-122 統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。シノプシスを、個別値をサンプリングする内部管理構造とみなします。 次のプリファレンスを指定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
サンプリングする行のパーセントが決定されます。 有効範囲は0.000001から100です。定数 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。このプリファレンスは次の2つの値を取ります。
|
|
収集する統計情報の粒度が決定されます。このプリファレンスは、パーティション表にのみ使用されます。 有効な値は次のとおりです。
|
|
全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。 通常、表がパーティション化されると、新しいパーティションにデータがロードされます。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。
パーティション表の |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、
デフォルトは |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
|
|
統計情報を収集する必要があるオブジェクトを指定します。有効な値は次のとおりです。
|
|
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 統計情報を収集し、すぐにはパブリッシュしないようにすることができます。この手法により、パブリッシュ前に新しい統計情報をテストできます。 |
|
表の統計情報が失効し、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。
|
|
インポートまたはエクスポートする統計情報を指定します。カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
値 |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
セキュリティ・モデル
このプロシージャを実行するには、SYSDBA
ロール、またはANALYZE ANY DICTIONARY
とANALYZE ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
使用上のノート
引数は両方ともVARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例
DBMS_STATS.SET_DATABASE_PREFS('CASCADE', 'DBMS_STATS.AUTO_CASCADE'); DBMS_STATS.SET_DATABASE_PREFS('ESTIMATE_PERCENT','9'); DBMS_STATS.SET_DATABASE_PREFS('DEGREE','99');
参照:
オプティマイザ統計プリファレンスの設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.115 SET_GLOBAL_PREFSプロシージャ
このプロシージャは、グローバル・レベルの統計プリファレンスを設定します。
構文
DBMS_STATS.SET_GLOBAL_PREFS (
pname IN VARCHAR2,
pvalue IN VARCHAR2);
パラメータ
表185-123 SET_GLOBAL_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。
|
|
プリファレンスの値。 |
表185-124 グローバルな統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。シノプシスを、個別値をサンプリングする内部管理構造とみなします。 次のプリファレンスを指定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
高頻度自動オプティマイザ統計収集を有効または無効にします。値は次のとおりです。
|
|
高頻度自動オプティマイザ統計収集の実行の最大実行時間(秒単位)を構成します。最大値は、デフォルト値でもある |
|
高頻度自動オプティマイザ統計収集の実行間隔(秒単位)を指定します。最小値は |
|
統計情報収集に必要なオブジェクトを制御します。値は次のいずれかとなります。
このプリファレンスは、自動統計情報収集にのみ適用されます。 |
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
統計情報が複数のオブジェクトで同時に収集されるか、一度に1オブジェクトずつ順次収集されるかを決定します。有効な値は、次のとおりです。
次のガイドラインに留意してください。 |
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
サンプリングする行のパーセントが決定されます。 有効範囲は0.000001から100です。定数 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。このプリファレンスは次の2つの値を取ります。
|
|
収集する統計情報の粒度が決定されます。このプリファレンスは、パーティション表にのみ使用されます。 有効な値は次のとおりです。
|
|
全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。 通常、表がパーティション化されると、新しいパーティションにデータがロードされます。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。
パーティション表の |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
列統計収集およびヒストグラムの作成が制御されます。次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。
デフォルトは |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
|
|
|
|
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 統計情報を収集し、すぐにはパブリッシュしないようにすることができます。この手法により、パブリッシュ前に新しい統計情報をテストできます。 |
|
表の統計情報が失効し、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。
|
|
インポートまたはエクスポートする統計情報を指定します。カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。
値 |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
|
統計情報の更新に必要なロックおよび確保のタイムアウトまでの分数を指定します。これは、 |
セキュリティ・モデル
このプロシージャを実行するには、SYSDBA
、またはANALYZE ANY DICTIONARY
とANALYZE ANY
の両方のシステム権限が必要です。
例外
ORA-20000
: 権限が不十分です
ORA-20001
: 入力値が無効です。
使用上のノート
-
この設定は、分析する表に対してプリファレンスが指定されていない場合にのみ有効です。
-
引数は両方とも
VARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例185-16 グローバル・レベルの統計プリファレンスのオーバーライド
SET_GLOBAL_PREFS
プロシージャを使用して、表プリファレンス設定を含まないデータベースの表ごとにESTIMATE_PERCENT
プリファレンスを5
に設定します。sh.costs
はプリファレンス設定を含まないため、グローバル設定がこの表に適用されます。
SQL> EXEC DBMS_STATS.SET_GLOBAL_PREFS ('ESTIMATE_PERCENT', '5');
PL/SQL procedure successfully completed.
SET_TABLE_PREFS
を使用して、sh.sales
表に対してのみPREFERENCE_OVERRIDES_PARAMETER
プリファレンスをtrueに設定します。
SQL> EXEC DBMS_STATS.SET_TABLE_PREFS('sh','sales','PREFERENCE_OVERRIDES_PARAMETER','TRUE');
PL/SQL procedure successfully completed.
sh.sales
の統計を収集する場合、スクリプトにより、ESTIMATE_PERCENT
を10
に設定するように試行されます。ただし、PREFERENCE_OVERRIDES_PARAMETER
がこの表に対してTRUE
に設定され、グローバル・プリファレンスが定義されているため、Oracle Databaseは、指定した設定の10
ではなく、グローバル設定の5
を使用して統計を収集します。
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS ('sh', 'costs', ESTIMATE_PERCENT=>10);
PL/SQL procedure successfully completed.
例185-17 高頻度自動オプティマイザ統計収集の構成
Oracle Database 19cには、高頻度自動オプティマイザ統計収集が導入されています。この軽量タスクは、定期的に失効オブジェクトの統計を収集します。デフォルトの間隔は15分です。自動統計収集ジョブとは対照的に、高頻度タスクでは、存在しないオブジェクトの統計のパージやオプティマイザ統計アドバイザの起動などのアクションは実行されません。
この例では、高頻度収集を有効にして、最大実行時間を30分に設定し、頻度の間隔を10分に設定します。
EXEC DBMS_STATS.SET_GLOBAL_PREFS('AUTO_TASK_STATUS','ON');
EXEC DBMS_STATS.SET_GLOBAL_PREFS('AUTO_TASK_MAX_RUN_TIME','1800');
EXEC DBMS_STATS.SET_GLOBAL_PREFS('AUTO_TASK_INTERVAL','600');
参照:
オプティマイザ統計プリファレンスの設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.116 SET_INDEX_STATSプロシージャ
これらのプロシージャは、索引に関連する統計情報を設定します。
ext_stats
を受け入れるこのプロシージャのバージョンにより、ドメイン索引とともに使用する統計情報が設定されます。指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプが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')),
force BOOLEAN DEFAULT FALSE);
パラメータ
表185-125 SET_INDEX_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
索引の名前 |
|
統計情報を格納する索引パーティションの名前。索引がパーティション化されていて、 |
|
統計情報の格納場所を示すユーザー統計表の識別子。 |
|
|
|
ユーザー定義の統計情報 |
|
統計タイプのスキーマ。 |
|
統計タイプの名前。 |
|
索引(パーティション)内の行数。 |
|
索引(パーティション)内のリーフ・ブロックの数。 |
|
索引(パーティション)内の個別キーの数。 |
|
この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。この値が提供されない場合、この値は |
|
この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。この値が提供されない場合、この値は |
|
|
|
索引(パーティション)の高さ。 |
|
Oracle内部で使用( |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
推測品質。 |
|
内部使用のみ。設定しないでください。 |
|
内部使用のみ。設定しないでください。 |
|
索引の統計情報がロックされている場合でも、この値を設定します。 |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
-
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。
-
Oracleは常に
cachedblk
およびcachehit
を維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。 -
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
-
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
-
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。
-
システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
-
参照:
人為的な統計の設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.117 SET_PARAMプロシージャ
この推奨されないプロシージャは、DBMS_STATS
プロシージャのパラメータのデフォルト値を設定します。
ノート:
テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、SET_GLOBAL_PREFSプロシージャを使用してください。
「DBMS_STATSの推奨されないサブプログラム」も参照してください。
GET_PARAM
ファンクション
を使用して、パラメータの現在のデフォルト値を取得できます。
構文
DBMS_STATS.SET_PARAM ( pname IN VARCHAR2, pval IN VARCHAR2);
パラメータ
表185-126 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');
185.7.118 SET_PROCESSING_RATEプロシージャ
このプロシージャは、指定した操作の処理速度の値を設定します。
構文
DBMS_STATS.SET_PROCESSING_RATE (
opname IN VARCHAR2,
procrate IN NUMBER);
パラメータ
表185-127 SET_PROCESSING_RATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
操作の名前。有効な値は次のとおりです。
|
|
処理速度。 |
セキュリティ・モデル
このプロシージャを実行するには、OPTIMIZER_PROCESSING_RATE
ロールが必要です。
使用上のノート
AUTO DOP
は、これらの処理率を使用して、SQL文の最適な並列度を決定します。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
185.7.119 SET_SCHEMA_PREFSプロシージャ
このプロシージャは、指定したユーザーが所有しているすべての表の統計プリファレンスを設定します。
構文
DBMS_STATS.SET_SCHEMA_PREFS ( ownname IN VARCHAR2, pname IN VARCHAR2, pvalue IN VARCHAR2);
パラメータ
表185-128 SET_SCHEMA_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。
|
|
プリファレンスの値。 |
表185-129 統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。個別値をサンプリングする内部管理構造としてシノプシスをみなすことができます。 次のプリファレンスを設定できます。
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
推定する行のパーセントが決定されます。有効なレンジは、[0.000001,100]です。定数 |
|
このプリファレンスの値は、次のいずれかです。
|
|
収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。使用可能な値は次のとおりです。
'
|
|
全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。
パーティション表の |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
列統計収集およびヒストグラムの作成が制御されます。次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。
デフォルトは |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
OPTIONS |
|
|
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
統計情報収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。Oracle Database 11gリリース1 (11.1)より前のリリースでは、統計情報収集ジョブが完了すると、新しい統計情報は自動的にディクショナリ表にパブリッシュされます。後続のリリースでは、統計情報を収集し、すぐにはパブリッシュしないようにすることができます。これにより、パブリッシュ前に新しい統計情報をテストできます。 |
|
表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。 |
|
索引のクラスタリング要因の計算時にバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)を指定します。このプリファレンスは、 |
セキュリティ・モデル
このプロシージャを実行するには、スキーマ所有者であるか、あるいはSYSDBA
権限またはANALYZE ANY
システム権限を持っている必要があります。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
使用上のノート
引数は両方ともVARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例
DBMS_STATS.SET_SCHEMA_PREFS('SH','CASCADE','DBMS_STATS.AUTO_CASCADE'); DBMS_STATS.SET_SCHEMA_PREFS('SH','ESTIMATE_PERCENT','9'); DBMS_STATS.SET_SCHEMA_PREFS('SH','DEGREE','99');
参照:
オプティマイザ統計プリファレンスの設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.120 SET_SYSTEM_STATSプロシージャ
このプロシージャは、システムの統計情報を設定します。
構文
DBMS_STATS.SET_SYSTEM_STATS ( pname VARCHAR2, pvalue NUMBER, stattab IN VARCHAR2 DEFAULT NULL, statid IN VARCHAR2 DEFAULT NULL, statown IN VARCHAR2 DEFAULT NULL);
パラメータ
表185-130 SET_SYSTEM_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
取得するパラメータ名。次の値の1つが入ります。
|
|
取得するパラメータ値。 |
|
統計情報を取得するユーザー統計表の識別子。 |
|
|
|
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20003
: システムの統計情報を設定できません。
ORA-20004
: パラメータが存在しません。
使用上のノート
このプロシージャを実行するには、GATHER_SYSTEM_STATISTICS
ロールが必要です。
185.7.121 SET_TABLE_PREFSプロシージャ
このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを設定します。
構文
DBMS_STATS.SET_TABLE_PREFS ( ownname IN VARCHAR2, tabname IN VARCHAR2, pname IN VARCHAR2, pvalue IN VARCHAR2);
パラメータ
表185-131 SET_TABLE_PREFSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
所有者名 |
|
表名 |
|
プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。
|
|
プリファレンスの値。 |
表185-132 統計プリファレンス
プリファレンス | 説明 |
---|---|
|
シノプシス生成アルゴリズムを指定します。シノプシスは、パーティションの列ごとに個別値の数(NDV)を追跡する特殊なタイプの統計です。シノプシスを、個別値をサンプリングする内部管理構造とみなします。 次のプリファレンスを指定できます。
|
|
データベース統計を収集する場合、拡張機能の自動作成を制御します。 次の値を設定できます。
|
|
索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。 |
|
このプリファレンスは、統計情報が複数のオブジェクトで同時に収集されるか、一度に1オブジェクトずつ順次収集されるかを決定します。
|
|
統計情報を収集する場合に使用される並列度が決定されます。 |
|
推定する行のパーセントが決定されます。有効なレンジは、[0.000001,100]です。定数 |
|
グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。これは次の2つの値を取ります。
|
|
収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。
'
|
|
全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。
パーティション表の |
|
|
|
パーティションまたはサブパーティションが失効したとみなされる状況を指定します。このパラメータは、 パラメータは次の値を受け入れます。
次の2つの実行は異なります。
最初の実行では一重引用符を使用して値 |
|
指定した値によって、列統計収集およびヒストグラムの作成が制御されます。次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。
デフォルトは |
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
|
|
パラメータの入力値を、統計操作のそのパラメータのプリファレンス値でオーバーライドするかどうかを決定します。使用可能な値は次のとおりです。
このプリファレンスを指定すると、表、グローバルおよびデフォルトの優先順位が変更されません。 |
|
収集ジョブが完了した後で、新しく収集された統計情報をパブリッシュするかどうかが決定されます。 統計情報を収集し、すぐにはパブリッシュしないようにすることができます。この手法により、パブリッシュ前に新しい統計情報をテストできます。 |
|
表の統計情報が失効し、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。
|
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です。
使用上のノート
-
このプロシージャを実行するには、その表の所有者として接続するか、または
ANALYZE ANY
システム権限を持っている必要があります。 -
すべての引数は
VARCHAR2
タイプであり、数値を表している場合でも値を引用符で囲みます。
例
DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES', 'CASCADE', 'DBMS_STATS.AUTO_CASCADE'); DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES', 'ESTIMATE_PERCENT', '9'); DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES', 'DEGREE', '99');
例185-18 統計プリファレンスのオーバーライド
この例では、レガシー・スクリプトは、推奨されるAUTO_SAMPLE_SIZE
を使用せずにESTIMATE_PERCENT
を明示的に設定します。ユーザーがこれらのスクリプトを使用してsh.costs
表でプリファレンスを設定しないようにすることが目標です。
ESTIMATE_PERCENT
のプリファレンスがsh.costs
またはグローバル・レベルに設定されていないため、プリファレンスのデフォルトはAUTO_SAMPLE_SIZE
です。
SELECT DBMS_STATS.GET_PREFS ('ESTIMATE_PERCENT', 'sh','costs') AS "STAT_PREFS" FROM DUAL;
STAT_PREFS
----------
DBMS_STATS.AUTO_SAMPLE_SIZE
デフォルトでは、Oracle Databaseは、統計収集プロシージャに渡されるプリファレンスを受け入れます。これらのパラメータをオーバーライドするには、SET_TABLE_PREFS
を使用して、costs
表に対してのみPREFERENCE_OVERRIDES_PARAMETER
プリファレンスをTRUE
に設定します。
EXEC DBMS_STATS.SET_TABLE_PREFS ('sh', 'costs', 'PREFERENCE_OVERRIDES_PARAMETER', 'TRUE');
sh.costs
の統計を収集する場合、ユーザーが作成したスクリプトにより、estimate_percent
を100
に設定するように試行されます。
EXEC DBMS_STATS.GATHER_TABLE_STATS('sh', 'costs', ESTIMATE_PERCENT=>100);
ただし、PREFERENCE_OVERRIDES_PARAMETER
がこの表に対してTRUE
に設定されているため、Oracle Databaseは、指定した値の100
ではなく、デフォルトのAUTO_SAMPLE_SIZE
を使用して統計を収集します。
参照:
オプティマイザ統計プリファレンスの設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.122 SET_TABLE_STATSプロシージャ
このプロシージャは、テスト用に表の統計情報を作成します。
構文
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 DEFAULT NULL,
force BOOLEAN DEFAULT FALSE,
im_imcu_count NUMBER DEFAULT NULL,
im_block_count NUMBER DEFAULT NULL,
scanrate NUMBER DEFAULT NULL);
パラメータ
表185-133 SET_TABLE_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前です。 |
|
表の名前。 |
|
統計情報を格納する表パーティションの名前。表がパーティション化されていて、 |
|
統計情報を格納する表。 |
|
|
|
表またはパーティション内の行数。 |
|
表またはパーティションが占有するブロックの数。 |
|
表またはパーティション表の行の平均長。 |
|
内部使用のみに対応しています。設定しないでください。 |
|
|
|
統計が収集されるときの依存カーソルの無効化を制御します。パラメータの値は次のようになります。
デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。 |
|
内部使用のみに対応しています。設定しないでください。 |
|
内部使用のみに対応しています。設定しないでください。 |
|
統計情報がロックされているときの動作を決定するフラグ。 |
|
表またはパーティション内のインメモリー圧縮ユニット(IMCU)の数。 |
|
表またはパーティション内のインメモリー・ブロックの数。 |
|
データベースが外部表をスキャンするMB/秒単位のレート。このパラメータは、外部表にのみ使用されます。 |
セキュリティ・モデル
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 入力値が無効です
ORA-20002
: ユーザー統計表が不正です。アップグレードする必要があります。
ORA-20005
: オブジェクト統計はロックされています
使用上のノート
テスト目的のため、DBMS_STATS.SET_*_STATS
プロシージャを使用して表、索引またはシステムの人為的な統計を手動で作成できます。これらのプロシージャでは、人為的な統計を直接データ・ディクショナリ(stattab
がnullである場合)またはユーザー作成表に挿入します。
ノート:
DBMS_STATS.SET_*_STATS
プロシージャは、開発テストのみを目的としています。本番データベースで使用しないでください。データ・ディクショナリで統計を設定する場合、Oracle Databaseでは、設定された統計を実際の統計とみなします。これは、失効の基準を満たしていない場合に統計収集ジョブが人為的な統計を再収集しない可能性があることを意味します。
DBMS_STATS.SET_*_STATS
プロシージャの最も一般的な使用例は、表内の行またはブロックの数の変更に応じて実行計画がどのように変更されたかを表示することと、一時表に対する現実的な統計情報を作成することです。
-
オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。データベースで、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せて、操作の合計コストが計算されます。
-
データベースでは、常に
cachedblk
およびcachehit
が維持されます。ただし、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATS
プロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATS
をユーザーがコールした場合のみ、対応するキャッシング統計情報が表および索引の統計情報の一部として最適化に使用されます。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehit
およびcachedblk
に対する信頼度要素を計算します。値の信頼度要素が信頼度の基準に達している場合はこの値が使用され、基準に達しない場合はデフォルト値が使用されます。 -
オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムでは、主要なデータベース・ワークロードが1つのみ存在することを前提としています。アルゴリズムによってこのワークロードに対して統計情報が調整され、他の小規模なワークロードが無視されます。この前提が当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。
-
自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。
-
オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合
-
データベースにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。
-
参照:
人為的な統計の設定方法を学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
185.7.123 SHOW_EXTENDED_STATS_NAMEファンクション
このファンクションは、ユーザー指定の拡張に対して作成された統計情報エントリの名前を戻します。拡張が作成されなかった場合は、エラーが発生します。
構文
DBMS_STATS.SHOW_EXTENDED_STATS_NAME ( ownname VARCHAR2, tabname VARCHAR2, extension VARCHAR2) RETURN VARCHAR2;
パラメータ
表185-134 SHOW_EXTENDED_STATS_NAMEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者名。 |
|
表の名前 |
|
列グループまたは式を指定できます。指定した表に、列 |
例外
ORA-20000
: オブジェクトが存在しないか、権限が不十分です。
ORA-20001
: 拡張の処理中にエラーが発生しました。
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.124 TRANSFER_STATSプロシージャ
このプロシージャは、指定した表の統計情報を、dblink
によって指定されたリモート・データベースからローカル・データベースに転送します。
ソース・データベースの統計は保持されます。これは、シノプシスやDML監視情報などの統計関連構造も転送します。
構文
DBMS_STATS.TRANSFER_STATS ( ownname IN VARCHAR2, tabname IN VARCHAR2, dblink IN VARCHAR2, options IN NUMBER DEFAULT NULL);
パラメータ
表185-135 TRANSFER_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表の所有者名。 |
|
表の名前。 |
|
データベース・リンク名。 |
|
デフォルトでは、プロシージャはグローバル・プリファレンスを転送しません。 |
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.125 UNLOCK_PARTITION_STATSプロシージャ
このプロシージャによって、ユーザーはパーティションの統計情報をロック解除できます。
構文
DBMS_STATS.UNLOCK_PARTITION_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2);
パラメータ
表185-136 UNLOCK_PARTITION_STATSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ロック解除するスキーマの名前。 |
|
表の名前 |
|
(サブ・)パーティション名。 |
使用上のノート
このプロシージャを起動するには、表の所有者であるか、ANALYZE
ANY
権限が必要です。SYS
が所有しているオブジェクトの場合、表の所有者であるか、ANALYZE
ANY
DICTIONARY
権限またはSYSDBA
権限が必要です。
185.7.126 UNLOCK_SCHEMA_STATSプロシージャ
このプロシージャは、スキーマ内のすべての表の統計情報をロック解除します。
構文
DBMS_STATS.UNLOCK_SCHEMA_STATS ( ownname VARCHAR2);
パラメータ
表185-137 UNLOCK_SCHEMA_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プロシージャを明示的に起動する必要がなくなります。
185.7.127 UNLOCK_TABLE_STATSプロシージャ
このプロシージャは、表の統計情報をロック解除します。
構文
DBMS_STATS.UNLOCK_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2);
パラメータ
表185-138 UNLOCK_TABLE_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プロシージャを明示的に起動する必要がなくなります。
185.7.128 UPGRADE_STAT_TABLEプロシージャ
このプロシージャは、古いバージョンのユーザー統計表をアップグレードします。
構文
DBMS_STATS.UPGRADE_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2);
パラメータ
表185-139 UPGRADE_STAT_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
表の名前 |
例外
ORA-20000
: 表をアップグレードできません。
使用上のノート
このプロシージャを起動するには、表を削除および作成する権限が必要です。