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の動作は保証されません。