21 拡張可能オプティマイザ・インタフェース
拡張可能オプティマイザへのインタフェースを構成するファンクションおよびプロシージャについて考えます。
21.1 拡張可能オプティマイザ・インタフェース
拡張可能オプティマイザ・インタフェースは、パーティション表とドメイン索引での作業をサポートします。これには、次の2つの方法があります。
- 
                        ODCIStatsインタフェース・メソッドのパラメータである一部のシステム定義オブジェクト型に、属性が追加されています。たとえば、ODCIColInfo型は、列のパーティションに関する情報を追加するように拡張されています。
- 
                        一部の ODCIStatsメソッドについて、引数またはそのセマンティクスが変更されています。
ODCIStats2バージョンのODCIStatsインタフェースのコードを、ODCIIndex2バージョンの拡張可能索引付けインタフェースを実装する索引タイプとともに統計タイプを使用するように更新する必要があることに注意してください。
                  
21.1.2 EXPLAIN PLAN
EXPLAIN PLANでは、ドメイン索引に対するユーザー定義のCPUおよびI/OコストがPLAN_TABLEのCPU_COST列とIO_COST列に表示されます。たとえば、表Emp_tabとユーザー定義演算子Containsがあるとします。さらに、Emp_tabのResume_col列にドメイン索引EmpResume_indxがあり、EmpResume_indxの索引タイプで演算子Containsがサポートされているとします。次の問合せを考えてみます。
                        
SELECT * FROM Emp_tab WHERE Contains(Resume_col, 'Oracle') = 1
この問合せに次の計画があるとします。
| OPERATION | OPTIONS | OBJECT_NAME | CPU_COST | IO_COST | 
|---|---|---|---|---|
| SELECT STATEMENT | ||||
| TABLE ACCESS | BY ROWID | EMP_TAB | ||
| DOMAIN INDEX | EMPRESUME_INDX | 300 | 4 | 
21.1.3 INDEXヒント
INDEXヒントは、ドメイン索引に適用されます。つまり、INDEXヒントにより、オプティマイザでは、可能な場合はユーザー定義演算子に強制的にヒントとして示された索引が使用されます。
21.2 ユーザー定義ODCIStatsファンクション
ユーザー定義のODCIStatsファンクションは、表列、ファンクション、パッケージ、型、索引タイプまたはドメイン索引に使用されます。
                     
表21-1 ユーザー定義ODCIStatsファンクションの概要
| ファンクション | 説明 | 
|---|---|
| ユーザーが実装した | |
| 
 | |
| 表、表のパーティション、索引または索引のパーティションのユーザー定義統計を削除します。 | |
| ファンクションのコストを計算します。 | |
| 
 | |
| ドメイン索引スキャンのコストを計算します。 | |
| 述語の選択性を指定します。 | |
| テーブル・ファンクションと入力カーソル式のカーディナリティ統計を提供します。 | |
| パーティション・メンテナンス操作中に統計を更新します。ドメイン索引の統計にパッチを適用します。 | 
21.2.1 ODCIGetInterfaces()
ODCIGetInterfacesはサーバーによりコールされ、ユーザー定義統計タイプのメソッドにユーザーにより実装されたODCIStatsインタフェースのバージョンを検出します。 
                        
構文
FUNCTION ODCIGetInterfaces( ifclist OUT ODCIObjectList) RETURN NUMBER;
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| ifclist | OUT | 統計タイプにより実装された | 
戻り値
正常終了した場合はODCIConst.Success、それ以外の場合はODCIConst.Error。
                        
21.2.2 ODCIStatsCollect()
DBMS_STATSパッケージによりコールされ、ユーザー定義統計を収集します。
                        
| 構文 | 説明 | 
|---|---|
| FUNCTION ODCIStatsCollect( col ODCIColInfo, options ODCIStatsOptions, statistics OUT RAW, env ODCIEnv) return NUMBER; | 
 | 
| FUNCTION ODCIStatsCollect( ia ODCIIndexInfo, options ODCIStatsOptions, statistics OUT RAW, env ODCIEnv) return NUMBER; | 索引または索引のパーティションのユーザー定義統計を収集するためにコールされます。 | 
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| 
 | 統計の収集対象の列 | |
| 
 | 
 | |
| 
 | 収集されたユーザー定義統計 | |
| env | ルーチンの実行環境に関する一般情報が含まれます。 | |
| 
 | 統計の収集対象のドメイン索引。 | 
戻り値
このファンクションは、ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warningを戻します。
使用上の注意
- 
                              このファンクションは、 STATIC型のメソッドとして実装する必要があります。
- 
                              統計を収集するパーティションが1つのみの場合は、 ODCIColInfo型のTablePartitionフィールドにパーティション名が入力されます。それ以外の場合(全パーティションまたは表全体の統計を収集する必要がある場合)、TablePartitionフィールドはNULLです。
- 
                              パーティション表のユーザー定義統計を収集するために DBMS_STATSパッケージのメソッドが実行されると、ODCIStatsCollectコールがn+1回にわたって実行されます。ここでnは、この表のパーティション数です。最初のn回のコールは、ODCIColInfoのTablePartition属性にパーティション名が設定され、ODCIStatsOptions.CallPropertyがIntermediateCallに設定された状態で実行されます。最後のコールは、ODCIEnv.CallPropertyflagがFinalCallに設定された状態で実行され、これによって表全体の集計統計を収集できます。
- 
                              ユーザー定義統計が収集される表パーティションが1つのみの場合、 ODCIStatsCollectが2回コールされます。最初のコールでは、パーティションの統計を収集する必要があります。このコールの場合、ODCIColInfo構造のTablePartition属性が入力され、ODCIEnv.CallPropertyがFirstCallに設定されます。
- 
                              第2のコールでは、パーティションについて収集した新規統計に基づいて、表の集計統計を更新できます。このコールでは、 ODCIEnv.CallPropertyflagが第2コールを示すFinalCallに設定されます。ODCIColInfo.TablePartitionには、両方のコールでパーティション名が入力されます。
- 
                              ODCIStatsCollect()メソッドは、非パーティション・ドメイン索引、パーティション・ドメイン索引およびドメイン索引のパーティションに対して一度のみ起動されます。統計を収集するパーティションが1つのみの場合は、 ODCIIndexInfo型のIndexPartitionNumフィールドにパーティション名が入力されます。それ以外の場合、IndexPartitionNumフィールドはNULLです。
- 
                              統計の OUT RAW引数は新規のインタフェースでは使用されないため、カートリッジ開発者はユーザー定義の統計結果をユーザー定義表に格納する必要があります。
- 
                              非パーティション・ドメイン索引が ANALYZEで指定されている場合、ユーザーはドメイン索引に対して統計を収集する必要があります。
- 
                              パーティション・ドメイン索引が ANALYZEで指定されている場合、次のようになります。- 
                                    ODCIEnv.CallProperty = StatsGlobalAndPartitionは、ユーザーがドメイン索引内のすべてのパーティションの統計を収集し、すべてのパーティションで収集された統計に基づいてドメイン索引の統計を収集する必要があることを意味します。
- 
                                    ODCIEnv.CallProperty = StatsGlobalは、ユーザーがすべてのドメイン索引パーティションの統計からドメイン索引統計を集計する必要があることを意味します。
- 
                                    ODCIEnv.CallProperty = StatsPartitionは、ユーザーがドメイン索引内のすべての索引パーティションの統計を収集する必要があることを意味します。
 
- 
                                    
- 
                              1つのパーティション・ドメイン索引のみが ANALYZEで指定されている場合、次のようになります。- 
                                    ODCIEnv.CallProperty = StatsGlobalAndPartitionは、ユーザーが単一索引パーティションの統計を収集し、すべてのパーティションの統計に基づいてドメイン索引を集計する必要があることを意味します。
- 
                                    ODCIEnv.CallProperty = StatsGlobalは、ユーザーがすべてのドメイン索引パーティションの統計からドメイン索引統計を集計する必要があることを意味します。
- 
                                    ODCIEnv.CallProperty = StatsPartitionは、ユーザーが単一索引パーティションの統計を収集する必要があることを意味します。
 
- 
                                    
- 
                              ODCIEnv.CallProperty = StatsGlobalAndPartitionまたはStatsGlobalである場合、他の索引パーティションに対して収集された統計の可用性に応じて、ドメイン索引の統計を集計する必要があることに注意してください。すべての索引パーティションに対する統計が使用可能である場合、これらの統計を集計します。索引パーティションの統計がない場合は何もしないでください。
- 
                              ローカル・システム管理ドメイン索引の統計を適切に収集するには、 ODCIIndexInfo引数のIndexInfoFlagsフィールドとIndexPartitionフィールド、およびODCIEnv引数のCallPropertyを選択する必要があります。
- 
                              ODCIIndexInfo.IndexPartition内の値は、すべての索引パーティションとサブパーティションのどちらの統計を収集する必要があるかを判断するために使用できます。統計収集の対象となるパーティション・レベルを決定するには、次のフラグを選択します。- 
                                    ODCIConst.SubPartnおよびODCIConst.CompPartnが設定されている場合は、単一のサブパーティションについて統計を収集する必要があります。注意: ODCIIndexInfo.IndexPartitionが設定されていない場合は、ODCIConst.SubPartnが設定されることはありません。
- 
                                    ODCIConst.CompPartnが設定されているが、ODCIConst.SubPartnが設定されていない場合は、コンポジット・パーティションのすべてのサブパーティション、およびコンポジット・パーティション自体の統計を収集する必要があります。ODCIIndexInfo.IndexPartitionが設定されていない場合は、索引のすべてのコンポジット・パーティションについて同じ方法で統計が収集されます。
- 
                                    ODCIConst.CompPartnおよびODCIConst.SubPartnのどちらも設定されていない場合は、索引がコンポジット・パーティション化されておらず、指定されたパーティションの統計を収集する必要があります。ODCIIndexInfo.IndexPartitionが設定されていない場合は、すべてのパーティションの統計が収集されます。
 
- 
                                    
21.2.3 ODCIStatsDelete()
ODCIStatsDeleteはユーザー定義統計を削除するためにコールされます。
                        
| 構文 | 説明 | 
|---|---|
| FUNCTION ODCIStatsDelete( col ODCIColInfo, statistics OUT RAW, env ODCIEnv) return NUMBER; | 表または表のパーティションのユーザー定義統計を削除します。 | 
| FUNCTION ODCIStatsDelete( ia ODCIIndexInfo, statistics OUT RAW, env ODCIEnv) return NUMBER; | 索引または索引のパーティションのユーザー定義統計を削除します。 | 
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| 
 | 統計の削除対象の列。 | |
| 
 | OUT | パーティション表または索引の表レベル集計統計が含まれます。 | 
| 
 | ルーチンの実行環境に関する一般情報が含まれます。 | |
| 
 | 統計の削除対象のドメイン索引。 | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning。
使用上の注意
- 
                              このファンクションは、 STATICメソッドとして実装する必要があります。
- 
                              このファンクションが非パーティション表に対してコールされる場合、 ODCIStatsDeleteインタフェースのstatistics引数は無視されます。
- 
                              パーティション表の統計が削除される場合、 ODCIStatsDeleteはn+1回コールされます。最初のn回のコールでは、ODCIColInfo構造にパーティション名が入力され、ODCIEnv.CallPropertyがIntermediateCallに設定されます。最後のコールでは、ODCIEnv.CallPropertyがFinalCallに設定されます。
- 
                              最初のコールでは、特定のパーティションの統計が削除され、最後のコールでは削除された表の統計を保持するために作成された構造を削除またはクリーン・アップします。最後のコールで ODCIColInfo.TablePartitionがNULLに設定されます。最初のコールでTablePartitionフィールドに入力されます。
- 
                              統計の削除対象となるパーティションが1つのみで、 _minimal_stats_aggregationパラメータがFALSEに設定されている場合は、ODCIStatsDeleteが2回コールされます。各コールでは、ODCIColInfo.TablePartitionにパーティション名が入力されます。最初のコールでは、そのパーティションについて収集されたユーザー定義統計を削除します。2番目のコールでは、表の集計統計を更新します。
- 
                              統計の削除対象となるパーティションが1つで、 _minimal_stats_aggregationがTRUEに設定されている場合、ODCIStatsDeleteは1回のみコールされ、そのパーティションに対して収集されたユーザー定義統計を削除します。
- 
                              _minimal_stats_aggregationの初期値はTRUEです。
- 
                              ODCIStatsDelete()メソッドは、非パーティション・ドメイン索引、パーティション・ドメイン索引または索引パーティションに対して一度のみ起動されます。 
- 
                              非パーティション・ドメイン索引の統計が削除される場合、ドメイン索引のユーザー定義統計を削除する必要があります。 
- 
                              パーティション・ドメイン索引の統計が削除される場合、ユーザーは集計されたドメイン索引の統計を削除し、 ODCIEnv.CallPropertyのOptionsに応じて、オプションですべてのドメイン索引パーティションのユーザー定義統計を削除する必要があります。- 
                                    ODCIEnv.CallProperty = StatsGlobalAndPartitionは、ユーザーがすべてのドメイン索引パーティションの統計、および集計されたドメイン索引の統計を削除する必要があることを意味します。
- 
                                    ODCIEnv.CallProperty = StatsGlobalは、ユーザーが集計されたドメイン索引の統計を削除する必要があることを意味します。
- 
                                    ODCIEnv.CallProperty = StatsPartitionは有効なオプションではありません。
 
- 
                                    
- 
                              削除される索引パーティションの統計が1つのみである場合、索引パーティションのユーザー定義統計を削除する必要があります。 
21.2.4 ODCIStatsFunctionCost()
ファンクションのコストを計算します。
構文
FUNCTION ODCIStatsFunctionCost(
   func ODCIFuncInfo, 
   cost OUT ODCICost, 
   args ODCIArgDescList, 
   list,
   env ODCIEnv) 
return NUMBER;| パラメータ | IN/OUT | 説明 | 
|---|---|---|
|  | コストを計算するファンクションまたは型のメソッド。 | |
|  | OUT | 計算されたコスト(必ず正の整数)。 | 
| args | ファンクションまたは型のメソッドのコールに使用された実引数の説明。ファンクションにn個の引数がある場合、 | |
|  | 
 | ファンクションまたは型のメソッドの実パラメータのリスト。各引数の数、位置および型は、ファンクションまたは型のメソッドと同じである必要があります。 | 
| env | ルーチンの実行環境に関する一般情報が含まれます。 | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning。
使用上の注意
このファンクションは、静的な型のメソッドとして実装する必要があります。
21.2.5 ODCIStatsExchangePartition()
ALTER TABLE EXCHANGE PARTITION ... INCLULDING INDEXESコマンドの発行時にドメイン索引の統計を交換します。
                        
構文
FUNCTION ODCIStatsExchangePartition( ia ODCIIndexInfo, ia1 ODCIIndexInfo, env ODCIEnv) return NUMBER;
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
|  | 交換する必要のある索引パーティションに関する情報 | |
|  | パーティションが交換された非パーティション表の索引に関する情報 | |
| env | 
 | ルーチンの実行環境に関する一般情報が含まれます。 | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning
使用上の注意
- 
                              このメソッドは、 STATIC型として実装する必要があります。
- 
                              このメソッドにより、非パーティション・ドメイン索引に関連付けられた統計にドメイン索引パーティションに関連付けられた統計を変換でき、またその逆も可能です。索引または索引パーティションの1つが欠落している統計の場合、その統計を削除できます。 
21.2.6 ODCIStatsIndexCost()
ドメイン索引スキャンのコストを計算します。索引全体のスキャンまたは1つ以上の索引パーティションのスキャン(ローカル・ドメイン索引を作成済の場合)について計算されます。
構文
FUNCTION ODCIStatsIndexCost( ia ODCIIndexInfo, sel NUMBER, cost OUT ODCICost, qi ODCIQueryInfo, pred ODCIPredInfo, args ODCIArgDescList, start operator_return_type, stop operator_return_type, list, env ODCIEnv) return NUMBER;
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
|  | 統計の収集対象のドメイン索引。 | |
|  | ユーザー計算による述語の選択性。 | |
|  | 計算されたコスト(必ず正の整数)。 | |
|  | 
 | 問合せに関する情報。 | 
| pred | 
 | 述語に関する情報。 | 
| args | 
 | 演算子がコールされたときの | 
| start | 
 | 演算子の下限(述語 | 
| stop | 
 | 演算子の上限(述語 | 
|  | 
 | 演算子の実パラメータ(2番目以降)のリスト。各引数の数、位置および型は、演算子と同じである必要があります。 | 
| env | 
 | ルーチンの実行環境に関する一般情報が含まれます。 | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning
使用上の注意
- 
                              問合せ内の各表について、オプティマイザはパーティション・プルーニングを使用して、アクセス可能なパーティションの範囲を決定します。これらのパーティションは、興味のあるパーティションと呼ばれます。表の興味のあるパーティション・セットは、その表のすべてのドメイン索引の興味のあるパーティション・セットでもあります。ドメイン索引のコストは興味のあるパーティション・セットによって異なる場合があるため、オプティマイザは、列である引数について、 ODCIStatsIndexCostにargs引数として興味のある索引パーティションのリストを渡します(この引数の型であるODCIArgDescListは、ODCIArgDesc引数記述子型のリストです)。非パーティション・ドメイン索引の場合や、パーティション・プルーニングが不可能な場合は、ODCIStatsIndexCostにパーティション・リストが渡されないため、索引全体がアクセスされると想定する必要があります。
- 
                              ドメイン索引キーには、複数列の引数(たとえば、結合順序で先に指定されている他の表の索引付けされた列および列引数など)を含めることができます。 args引数には、索引キーに示される列ごとに表について興味のあるパーティションのリストが含まれます。たとえば、次の索引キーを考えてみます。op(T1.c1, T2.c2) = 1 この場合、表 T1およびT2がパーティション化されていて、そのパーティション・プルーニングが存在していれば、オプティマイザは2つの表について興味のあるパーティションのリストを渡します。
- 
                              このファンクションは、静的な型のメソッドとして実装する必要があります。 
- 
                              パーティション表または非パーティション表の問合せに対して、 ODCIStatsIndexCost()ファンクションが1回のみコールされます。パーティション表の問合せの場合は、ODCIStatsIndexCost()ファンクションで追加情報が渡されます。ODCIStatsIndexCost()に渡されたリスト内の一部のパーティションは、実際には問合せでアクセスできない場合があることに注意してください。興味のあるパーティションのリストは、主としてアクセスされないことが確実なパーティションを除外するためのものです。
- 
                              ODCIStatsIndexCost()ファンクションのコール時に、ユーザーはコスト属性のIndexCostInfoフィールドに文字列を入力して、有効な追加情報を提供できます。実行計画によりドメイン索引スキャンが選択されると、EXPLAIN PLAN出力のOPTIONS列に文字列(最大255文字)が表示されます。
- 
                              このファンクションを実装するユーザーは、 ODCIGetInterfaces()コールで'SYS.ODCISTATS2'を戻す必要があります。
21.2.7 ODCIStatsSelectivity()
述語の選択性を指定します。1つの表の列が関係する述語の選択性は、その表における述語を満たす行の割合です。複数の表の列が関係する述語(結合述語など)の場合は、選択性を各表のデカルト積における行の割合として計算する必要があります。
構文
FUNCTION ODCIStatsSelectivity( pred ODCIPredInfo, sel OUT NUMBER, args ODCIArgDescList, start function_return_type, stop function_return_type, list, env ODCIEnv) return NUMBER;
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| 
 | 選択性の計算対象の述語。 | |
| 
 | 計算された選択性。パーセンテージを表す0から100の数値で表されます。 0より小さい数値または100より大きい数値は無効な値として無視されます。計算された選択性が0.5%未満の場合は、出力パラメータ | |
| 
 | ファンクション、型メソッドまたは演算子がコールされたときの | |
| 
 | 
 | ファンクションの下限(述語 | 
| 
 | 
 | ファンクションの上限(述語 | 
| 
 | 
 | ファンクションまたは型のメソッドの実パラメータのリスト。各引数の数、位置および型は、ファンクション、型のメソッドまたは演算子と同じである必要があります。 | 
| 
 | 
 | ルーチンの実行環境に関する一般情報が含まれます。 | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning
使用上の注意
- 
                              ODCIStatsIndexCostと同様、args引数には、選択性の計算対象である述語で参照されている列を含む表の興味のあるパーティションのリストが含まれています。これらの興味のあるパーティションは、パーティション・プルーニングでアクセス可能な候補として排除できないパーティションです。興味のあるパーティションのセットがファンクションに渡されるのは、パーティション・プルーニングが発生した場合(つまり、興味のあるパーティションが全パーティションの厳密なサブセットである場合)のみです。
- 
                              たとえば、述語の選択性を計算するために ODCIStatsSelectivityがコールされるとします。f(T1.c1, T2.c2) > 4 この場合、パーティション・プルーニングが可能であれば、オプティマイザは表 T1について興味のあるパーティションのリストを(列T1.c1の引数のディスクリプタで)渡します。表T2の場合も同様です。述語に複数の表の列が含まれている場合、この情報は pred引数のFlags属性に設定されたフラグ・ビットPredMultiTableで示されます。
- 
                              このファンクションは、静的な型のメソッドとして実装する必要があります。 
- 
                              このインタフェースを実装するユーザーは、 ODCIGetInterfacesコールで'SYS.ODCISTATS2'を戻す必要があります。
- 
                              1つの表の列が関係する述語の選択性は、その表における述語を満たす行の割合です。複数の表の列が関係する述語(結合述語など)の場合は、選択性を各表のデカルト積における行の割合として計算する必要があります。パーティション・プルーニングを使用する表の場合は、関係する表の興味のあるパーティションのカーディナリティを基準にした選択性を表す必要があります。 パーティション表の列が関係する述語の選択性は、興味のあるパーティションの行を基準にして計算されます。次の述語の選択性を考えてみます。 g(T1.c1) < 5 この選択性は、この述語を満たす興味のあるパーティションのセット(または、パーティション・プルーニングが不可能な場合はすべてのパーティション)に含まれる行のパーセンテージです。複数の表の列が関係する述語の場合、選択性は各表のデカルト積に含まれる行数を基準とする必要があります。 
- 
                              たとえば、次の述語を考えてみます。 f(T1.c1, T2.c2) > 4 興味のあるパーティションの行数が、 T1の場合は1000、T2の場合は5000であるとします。この述語の選択性は、T1およびT2のデカルト積のうち述語を満たす5,000,000行のパーセンテージとして表す必要があります。
- 
                              述語に複数の表の列が含まれている場合、この情報は pred引数のFlags属性に設定されたフラグ・ビットPredMultiTableで示されます。
- 
                              単一表の述語または結合順序の前の方にある他の結合に基づいて表のカーディナリティ(および他の統計)が減らされている場合、関係する表のベース・カーディナリティを基準として表される選択性は、実際の選択性の概算にすぎない可能性があります。ただし、ほとんどのアプリケーションでは、実際の選択性に対するこのような概算は許容可能です。 
- 
                              パーティション表または非パーティション表の問合せに対して、 ODCIStatsSelectivityファンクションが1回のみコールされます。パーティション表の問合せの場合は、ODCIStatsSelectivityファンクションのコール時に追加情報が渡されます。
21.2.8 ODCIStatsTableFunction()
このファンクションは、テーブル・ファンクションと入力カーソル式のカーディナリティ統計を提供します。
構文
STATIC FUNCTION ODCIStatsTableFunction(
   func IN SYS.ODCIFuncInfo, 
   outStats OUT SYS.ODCITabFuncStats, 
   argDesc IN SYS.ODCIArgDescList, 
   list)
RETURN NUMBER;| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| 
 | テーブル・ファンクション名。 | |
| 
 | 戻されると思われる行数。 | |
| 
 | テーブル・ファンクションの引数の説明。 | |
| 
 | 
 | 引数のコンパイル時の値。実行時にのみ値を持つ式は、NULLで表されます。 | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning。
21.2.9 ODCIStatsUpdPartStatistics()
パーティション・メンテナンス操作中に統計を更新します。これにより、統計タイプはドメイン索引統計を修正して、パーティション・メンテナンス操作を適切に反映します。
構文
STATIC FUNCTION ODCIStatsCollect( ia ODCIIndexInfo, palist ODCIPartInfoList, env ODCIEnv) RETURN NUMBER
| パラメータ | IN/OUT | 説明 | 
|---|---|---|
| 
 | ドメイン索引に関する情報が含まれます。パーティションの特定情報は含まれません。 | |
| palist | 削除または追加されるパーティションに関する情報が含まれます。 | |
| env | 
 | ルーチンに渡される環境ハンドル | 
戻り値
ODCIConst.Success、ODCIConst.ErrorまたはODCIConst.Warning。
- 
                              SYSTEM MANAGEDアプローチを使用して統計タイプが指定される場合、ODCIStatsUpdPartStatistics()メソッドはPMO時に一度のみ起動します。メソッド実装ではDMLおよび問合せのみが許可されます。
- 
                              グローバル非パーティション表のドメイン索引統計をメンテナンスする場合、削除したパーティションのユーザー定義統計のエントリを削除する必要があります(またはオプションで、追加パーティションに NULLエントリを追加します)。ODCIEnv.CallPropertyがStatsGlobalAndPartitionまたはStatsPartitionである場合は、チェック可能です。ODCIEnv.CallPropertyがStatsGlobalAndPartitionである場合、使用可能なすべての索引パーティションの統計を集計する必要があります。ODCIEnv.CallPropertyがStatsPartitionの場合、集計統計を単に削除するか、そのままにしておくことも可能です。ODCIEnv.CallPropertyはこのコールに対してStatsGlobalになりません。
- 
                              ユーザーは ODCIEnv.CallPropertyによって渡された情報を使用して、削除および調整する統計タイプを決定する必要があります。
- 
                              メソッドが ODCIConst.Errorに戻ると、エラーは無視されパーティション管理作業が継続されます。