Oracle Clusterware 11gリリース2 (11.2)では、リソースやサーバー・プールなどのいくつかのエンティティが管理されます。ただし、このリリースのインタフェースでは、タイプによるエンティティの取得(読取り)のみが許可されており、1回の取得で1つのタイプのエンティティ以外を戻すことができませんでした。そのため、異なるタイプのエンティティを取得する必要があったり、さらに決定を下すためにデータ構造の一貫したビューが必要なクライアントは、特殊なイベント順序IDを使用した回避策に頼ることになり、必要に応じて問合せリクエストを複数回にわたって再発行する必要がありました(理論上、状態/構成が変化し続けるシステムでは、このような解決策には無限に時間がかかります)。
Oracle Clusterware 12cは、複数の種類のエンティティの一貫した読取りを実行するメカニズムを備えています。このメカニズムはエンティティに対して透過的に機能するため、新しい管理対象エンティティを追加してもメカニズムを変更する必要はありません。
このために使用されるのが、clscrs_stat3 APIです。
clscrs_stat3 APIは、qlistで識別されたOracle Clusterwareエンティティに関する情報を取得します。情報はout_entitylistに戻されます。問合せは、その後の出力セットが一貫性を持つように実行されます。
clscrs_queryオブジェクトを作成し、それらをclscrs_querylistオブジェクトに追加してから、そのオブジェクトをこの関数に渡します。各エンティティ・タイプに必要な属性は、clscrs_queryオブジェクトに含まれている必要があります。属性リストが空の場合、Oracle Clusterwareによってすべての属性が戻されます。
out_entitylistは空のリストとして作成して渡す必要があります。エンティティのエラーはout_entitylistに戻されます。
出力はネストされたエンティティ・リストとして戻されます。個々の問合せの結果は、out_entitylistの各エンティティとして戻されます。個々の問合せの出力は、その特定のエンティティのエンティティ・リストとして戻されます。out_entitylistに含まれるエンティティのOracle Clusterwareエンティティ・タイプを取得するためにclscrs_crsentity_get_typeをコールすることで、エンティティの結果のタイプを確認できます。
たとえば、一方はリソース、もう一方はリソース・タイプに対する2つの問合せがある場合、out_entitylistには前述のOracle Clusterwareエンティティ・タイプそれぞれに対して1つずつ、2つのエンティティ・オブジェクトが含まれます。それらの各エンティティ・オブジェクトのエンティティ・リストには、問合せの結果が含まれます。特定のオブジェクトがどのようなタイプのエンティティ・オブジェクトかを判断するには、そのエンティティ・オブジェクトに対してclscrs_crsentity_get_type関数をコールする必要があります。問合せで0個の一致が戻された場合、そのエンティティ・オブジェクトのエンティティ・リストのサイズはゼロになります。
注意:
Oracleでは、エンティティ・タイプごとに1つのclscrs_queryオブジェクトのみがサポートされています。同じエンティティ・タイプに対して複数のclscrs_queryオブジェクトが作成された場合、Oracleではstat3 APIの動作は保証されません。