この付録では、Oracle ClusterwareのApplication Program Interface(API)のコマンド・リファレンスについて説明します。内容は次のとおりです。
|
関連項目: Oracle Clusterwareを使用してアプリケーションの高可用性を実現する方法の詳細は、第5章「Oracle Clusterwareを使用したアプリケーションの高可用性の実現」を参照してください。 |
|
注意: Oracle Clusterware APIデモは、Windowsではサポートされていません。 |
この項では、Oracle Clusterwareコマンドを使用して、Oracle Clusterwareフレームワークでアプリケーションおよびアプリケーション・リソースを管理する方法について説明します。
この付録の例では、アプリケーション・プロファイルで使用するコマンド構文を示します。 シャープ記号(#)で始まる行はコメント行で、プロファイルの一部としては処理されません。 行の末尾の円記号(\)は、次の行が前の行の続きであることを示します。 プロファイルの例は、「crs_profileコマンドを使用したアプリケーション・リソース・プロファイルの作成」を参照してください。
Oracle Clusterwareでは、LinuxまたはUNIXシステムと同様のセキュリティが使用されており、所有者、グループのノード、または特定の権限の所有者に対して権限を指定できます。 また、他のユーザーに対して、デフォルトの権限を指定できます。 これらの権限は、Windowsのシステムではread、writeおよびrunで、LinuxまたはUNIXのシステムではrwxです。 デフォルトの所有権および権限は、アプリケーション・プロファイルを作成する際に設定されます。 表D-1に、Oracle Clusterwareコマンドとその所有者、および書込み権限と実行権限が必要なコマンドを示します。
表D-1 Oracle Clusterwareコマンドの所有者および権限
|
注意: グループの概念が存在しないプラットフォーム上では、グループ権限はNULLに設定されるか、何も設定されません。 |
|
注意: Oracleサポート・サービスで要求された場合またはhttps://metalink.oracle.comに示された方法でオラクル社から認定された場合を除き、接頭辞oraで始まる名前のリソースに対して、接頭辞にcrs_を持つOracle Clusterwareコマンド(crs_statを除く)は使用しないでください。 サーバー制御(SRVCTL)ユーティリティは、Oracleリソースに対して使用する適切なユーティリティです。 オラクル社が定義したリソースに基づくリソースを作成できます。 また、Oracle Clusterwareコマンドを使用して、構成およびステータスを確認できます。 |
表D-2に、この付録で説明するOracle Clusterwareコマンドをアルファベット順に示します。 -qオプションはすべてのコマンドで使用可能で、コマンドを静止モードで実行できることに注意してください。 このモードでは、コンソールにメッセージは表示されません。
表D-2 Oracle Clusterwareコマンドのサマリー
| コマンド | 説明 |
|---|---|
|
リソースに関連付けられた権限を表示します。 |
|
|
Oracle Clusterwareのアプリケーション・プロファイルを作成、検証、削除および更新します。 |
|
|
|
アプリケーションの構成情報をOCRに登録します。 |
|
|
アプリケーション・プロファイルを別のノードに再配置します。 |
|
|
リソースに関連付けられた権限を設定します。 |
|
|
アプリケーション・プロファイルのステータスを表示します。 |
|
|
登録されているアプリケーションを起動します。 |
|
|
Oracle Clusterwareアプリケーションを停止します。 |
|
|
アプリケーション・プロファイルの構成情報をOCRから削除します。 |
|
注意: グループの概念が存在しないプラットフォーム上では、グループ権限はNULLに設定されるか、何も設定されません。 |
リソースに定義された権限を表示します。 rootユーザーが作成したリソースにrootユーザー以外のユーザーがアクセスする必要がある場合は、明示的にアクセス権を付与する必要があります。 ただし、rootユーザー以外のユーザーが登録したリソースは、それを登録したユーザーが所有し、各自のリソースを確認できます。 アクセス権の定義はUNIXと同様です。
crs_getpermコマンドは、次の構文で使用します。
crs_getperm resource_name [-u user|-g group] [-q]
リソースに関連付けられた権限を取得するには、次の構文を使用します。
crs_getperm resource_name
Oracle Clusterwareのアプリケーション・プロファイルを作成、検証、削除および更新します。 プロファイルのユーザー・コピーに対して機能します。
crs_profileを使用して、テンプレート・スクリプトを生成することもできます。 crs_profileコマンドを使用すると、新しいアプリケーション・プロファイルの作成と、既存のプロファイルの検証、更新、削除または表示を実行できます。 アプリケーション・プロファイルによって、クラスタでリソースが管理または監視される方法を定義する属性に値が割り当てられます。 rootユーザーの場合、プロファイルはCRS_home/crs/profileディレクトリに書き込まれます。 権限を付与されていないユーザーの場合、プロファイルはCRS_home/crs/publicディレクトリに書き込まれます。 プロファイル内の空白の値は無視され、不要な場合は省略できます。 リソース・タイプに必要なプロファイル変数が省略されると、検証または登録が失敗する場合があります。
アプリケーション・プロファイルを作成し、crs_registerコマンドを使用してアプリケーションをOracle Clusterwareに登録した後、crs_stat、crs_start、crs_stop、crs_relocate、crs_unregisterなどの他のOracle Clusterwareコマンドをアプリケーションに対して使用できます。 他のOracle Clusterwareコマンドでアプリケーションを管理するには、crs_registerコマンドを使用してアプリケーションを登録しておく必要があります。 crs_profileコマンドには、プロファイルにユーザー定義の属性を定義する他のオプションもあります。
crs_profileコマンドは、アプリケーション・プロファイルのテンプレートを作成するために、次の構文で使用します。
crs_profile -create resource_name -t application [-a action_script] [-B executable_pathname] [-dir directory] [-d description] [-p placement_policy] [-h hosting_nodes] [-r required_resources] [-l optional_resources] [-o option,[...]] [attribute_flag attribute_value] [...] [-f] [-q] crs_profile -create resource_name -t application [-dir directory_path] [-a action_script] [-B binary_pathname] [-d description] [-h hosting_members] [-r required_resources] [-l optional_resources] [-p placement_policy] [-o as=auto_start,ci=check_interval,ft=failure_threshold, fi=failure_interval,ra=restart_attempts,fd=failover_delay, st=script_timeout,ap=active_placement,bt=rebalance, ut=uptime_threshold,rt=start_timeout,pt=stop_timeout] [-f] [-q]
アプリケーション・プロファイルのテンプレートからアプリケーション・プロファイルを作成するには、crs_profileを使用してテンプレート(cap)・ファイルを作成します。 このファイルの読取りは、capファイルからデータを読み取ってOCRに配置するcrs_registerコマンドによって自動的に行われます。 次に例を示します。
crs_profile -create resource_name -I template_file [-f] [-q]
プロファイルのアプリケーション・プロファイル構文を検証するには、次のコマンドを入力します。
crs_profile -validate resource_name [-q]
1つ以上のアプリケーション・プロファイルを表示するには、次のコマンドを入力します。
crs_profile -print [resource_name [...]] [-q]
既存のアプリケーション・プロファイルからアプリケーション・プロファイルのテンプレートを作成するには、次のコマンドを入力します。
crs_profile -template resource_name [-O template_file] [-q]
アプリケーション・プロファイルを更新するには、次のコマンドを入力します。
crs_profile -update resource_name [option [...]] [-q]
アプリケーション・プロファイルおよびそれに関連付けられたアクション・プログラムを削除するには、次のコマンドを入力します。
crs_profile -delete resource_name [-q]
|
注意: crs_profile -deleteコマンドによってリソース・プロファイルのファイルは削除されますが、アクション・スクリプト・ファイルは削除されません。 |
表D-4 crs_profileコマンドのオプション
| オプション | 説明 |
|---|---|
|
[ |
すべての crs_profile attribute_flag attribute_value このコマンドは、生成されたプロファイル内の特定の値( crs_profile -validate resource_name |
|
[ |
アプリケーションのアクション・プログラムを指定します。 アクション・プログラムには、Oracle Clusterwareによってコールされる、起動、停止およびチェックのエントリ・ポイントがあります。 スクリプト・ファイルのフルパス名またはそのファイル名のいずれかを指定できます。 |
|
[ |
アプリケーションの実行可能ファイルの位置を指定して、 |
|
|
指定したオプションに従って、選択したアプリケーションのリソース・プロファイルを作成します。 |
|
[ |
アプリケーションの説明を指定します。 説明に空白が含まれている場合は、二重引用符( |
|
[ |
プロファイルが格納されているファイルの位置を指定します。 |
|
[ |
アプリケーションのホスティングが可能なノードのリストを指定します。リストは、空白で区切って順序付けします。 複数のノードが存在する場合、リストを二重引用符( |
|
[ |
オプション・リソースのリストを指定します。リストは、空白で区切って順序付けします。 複数のオプション・リソースを指定する場合、リストを二重引用符( |
|
[ |
属性オプション名およびその値のカンマ区切りのリストを指定します。 属性オプション名のリストを表示するには、表D-5「-oフラグのオプション」を参照するか、 |
|
[ |
Oracle Clusterwareでアプリケーションが起動または再起動されるノードを選択する場合に従うポリシーを指定します。 |
|
|
静止モードでコマンドを実行します(コンソールにメッセージは表示されません)。 |
|
[ |
アプリケーションが依存するリソースのリストを指定します。リストは、空白で区切って順序付けします。 これらのリソースは、アプリケーションが実行されているすべてのノードでアクティブである必要があります。 複数の必須リソースが存在する場合、リストを二重引用符( |
|
|
アプリケーションまたはアプリケーションのリソース・タイプを指定します。 |
|
|
プロファイルのアプリケーション・プロファイル構文を検証します。 |
表D-5 -oフラグのオプション
| オプション | 説明 |
|---|---|
|
|
|
|
|
クラスタを再起動した後に、Oracle Clusterwareによってリソースを自動的に起動するかどうかを示します。
注意: |
|
アプリケーションのアクション・プログラムのチェック・エントリ・ポイントが実行される時間(秒単位)を設定します。 チェックの間隔は、Oracle Clusterwareがアプリケーションの再起動を試行する前に、そのアプリケーションがクライアントで使用できなくなる可能性がある最大時間です。 デフォルトのチェックの間隔は60秒です。 |
|
|
|
Oracle Clusterwareがアプリケーション・リソースの再配置を試行する前に待機する秒数を指定します。 障害が発生したクラスタ・ノード上で実行されていたアプリケーション・リソースは、そのクラスタ・ノードがフェイルオーバー遅延期間内に使用可能になると、すぐに再起動します。 複数のアプリケーション・リソースが、アプリケーション・プロファイルで定義された必須リソースによって相互に依存している場合、すべての相互依存アプリケーション・リソースは、いずれかのリソースで定義されている最大のフェイルオーバー遅延期間の間、待機します。 デフォルトのフェイルオーバー遅延は |
|
|
障害しきい値が計算および適用される時間(秒単位)を指定します。 デフォルトの障害間隔は |
|
|
アプリケーションまたはアプリケーション・リソースを使用不可としてマーク付けし、その監視を停止するまでに、障害間隔内でOracle Clusterwareがアプリケーションまたはアプリケーション・リソースの障害を検出する回数を指定します。 値は |
|
|
Oracle Clusterwareが再配置を試行する前に、現行ノード上でアプリケーションまたはアプリケーション・リソースの再起動を試行する回数を指定します。 デフォルトの再起動試行回数は |
|
|
アクション・プログラムを実行可能な最大時間(秒)を設定します。 Oracle ClusterwareコマンドおよびOracle Clusterwareデーモンでは、アクション・プログラムのエントリ・ポイントを呼び出したときにスクリプトの実行がこの時間内に完了しなかった場合、エラー・メッセージを戻して、イベント・マネージャ(EVM)にイベントを通知します。 デフォルトは60秒です。 |
次の例では、crs_profileコマンドを使用して、postmanアプリケーションのアプリケーション・プロファイルを作成します。
crs_profile -create postman \ -t application \ -a postman.sh \ -o ci=5,ra=2"
次の例では、crs_profileコマンドを使用して、dtcalcという名前のアプリケーション・プロファイルを検証します。
crs_profile -validate dtcalc
-aまたは-Bオプションのいずれも指定しない場合、アクション・プログラム値のないプロファイルが作成されます。 アプリケーションを起動しようとする前に、読取り可能で実行可能なスクリプトを作成し、このスクリプトの値を使用してプロファイルを更新する必要があります。 -aオプションのみを指定する場合、指定するアクション・プログラムは、指定する位置、または(パスが指定されていない場合は)デフォルト・ディレクトリに存在する必要があります。 そうでない場合、コマンドは失敗します。
各アプリケーションのresource_nameパラメータで指定された1つ以上のアプリケーションを登録します。 このコマンドを実行するには、ターゲット・アプリケーションへの書込みアクセス権が必要です。 このコマンドは、プロファイルがデフォルトの位置または-dirオプションで指定されたディレクトリに存在する場合のみ正常に実行されます。 Oracle Clusterwareでリソースを監視するか、あるいはアプリケーション・リソースに関連付けられた高可用性アプリケーションを起動、再起動または再配置するには、アプリケーションが登録されている必要があります。 アプリケーション・プロファイルに対する変更を有効にするには、アプリケーションの登録を更新する必要があります。 また、このコマンドに必要な権限の詳細は、「セキュリティおよび権限」を参照してください。
CRSデーモンがアクティブで、Oracle Clusterwareのアプリケーション・プロファイルがアプリケーションのプロファイル・ディレクトリに存在する場合のみ、そのアプリケーションを登録または更新できます。 アプリケーション・プロファイルからフィールドが欠落している場合、そのプロファイルはデフォルトのプロファイル・テンプレートとマージされ、デフォルトのプロファイル・テンプレートの値が使用されます。
アプリケーションの所有権およびデフォルトの権限は、登録処理時に設定されます。 ファイルの権限でreadおよびwriteが許可されているかぎり、任意の.capファイルを登録できます。たとえば、crs_profileおよびcrs_registerでは、そのファイルを読取り可能である必要があります。 デフォルトでは、アプリケーションを登録したユーザーが、そのアプリケーションの所有者になります。 プロファイルを登録できない場合、その原因を説明するメッセージが表示されます。 アプリケーションが登録されていることを確認するには、crs_statコマンドを使用します。
crs_registerコマンドを使用して、アプリケーションを登録および更新できます。 アプリケーションを登録するには、次のcrs_register構文を使用します。
crs_register resource_name [-dir directory_path] [...] [-u] [-f] [-q] crs_register resource_name -update [-a action_script] [-d description] [-h hosting_members] [-r required_resources] [-l optional_resources] [-p placement_policy] [-o as=auto_start,ci=check_interval,ft=failure_threshold, fi=failure_interval,ra=restart_attempts,fd=failover_delay, st=script_timeout,ap=active_placement,bt=rebalance, ut=uptime_threshold,rt=start_timeout,pt=stop_timeout] [-q]
resource_name [...]パラメータには、アプリケーション・プロファイルで指定された1つ以上のアプリケーション・リソースの名前を指定できます。 どのオプションも指定しない場合、指定された各アプリケーション・リソースは、その配置ポリシーおよび必須リソースのリストに従って、crs_relocateコマンドで再配置されます。 相互に依存するアプリケーション・リソースが存在する場合、-fオプションを指定しないかぎり、リソースは再配置されません。 アプリケーションを登録する場合、そのアプリケーションのプロファイルが存在する必要があります。
表D-6 crs_registerコマンドのオプション
| オプション | 説明 |
|---|---|
|
[ |
|
|
|
1つ以上の必要なリソースに対する実行権限がなくても、リソースを登録できます。 |
|
|
変更をすぐに有効にします。 |
|
[ |
すべてのcrs_profileコマンドは次の形式を使用します。 crs_profile attribute_flag attribute_value このコマンドは、生成されたプロファイル内の特定の値( crs_profile -validate resource_name |
|
[ |
アプリケーションのアクション・プログラムを指定します。 アクション・プログラムには、Oracle Clusterwareによってコールされる、起動、停止およびチェックのエントリ・ポイントがあります。 スクリプト・ファイルのフルパス名またはそのファイル名のいずれかを指定できます。 |
|
[ |
アプリケーションの説明を指定します。 説明に空白が含まれている場合は、二重引用符( |
|
[ |
アプリケーションのホスティングが可能なノードのリストを指定します。リストは、空白で区切って順序付けします。 複数のノードが存在する場合、リストを二重引用符( |
|
[ |
オプション・リソースのリストを指定します。リストは、空白で区切って順序付けします。 複数のオプション・リソースを指定する場合、リストを二重引用符( |
|
[ |
属性オプション名およびその値のカンマ区切りのリストを指定します。 属性オプション名のリストを表示するには、表D-5「-oフラグのオプション」を参照するか、 |
|
[ |
Oracle Clusterwareでアプリケーションが起動または再起動されるノードを選択する場合に従うポリシーを指定します。 |
|
|
静止モードでコマンドを実行します(コンソールにメッセージは表示されません)。 |
|
[ |
アプリケーションが依存するリソースのリストを指定します。リストは、空白で区切って順序付けします。 これらのリソースは、アプリケーションが実行されているすべてのノードでアクティブである必要があります。 複数の必須リソースが存在する場合、リストを二重引用符( |
登録済のアプリケーションを更新するには、次のcrs_registerコマンド構文を使用します。
crs_register resource_name -update [option ...] [-o option,...] [-q]
使用するコマンド・オプションで指定されたアプリケーションとアプリケーション・リソース、およびアプリケーション・プロファイル内のエントリを再配置します。 アプリケーションまたはアプリケーション・リソースを再配置するには、指定するアプリケーションまたはアプリケーション・リソースが、クラスタ環境のOracle Clusterwareで登録および実行されている必要があります。 使用できないクラスタ・ノードを指定したか、再配置が失敗した場合、コマンドによってメッセージが表示されます。 また、このコマンドに必要な権限の詳細は、「セキュリティおよび権限」を参照してください。
crs_relocateコマンドを発行すると、まずアクション・プログラムが現在実行されているノード上の、アクション・プログラムの停止エントリ・ポイントが実行されます。 次に、アクション・プログラムの起動エントリ・ポイントが実行され、新しいノード上でアクション・プログラムが起動されます。
アクション・プログラムのエラーによって、現行ノード上のアプリケーションまたはアプリケーション・リソースの停止に失敗した場合、その状態はUNKNOWNとマーク付けされます。 この状態で、リソースに対してcrs_relocateコマンドを発行できません。 かわりに、crs_stop -fコマンドをリソースに対して実行し、crs_startコマンドを発行してそのリソースを再起動し、ONLINE状態に戻してから、再配置を試行します。 Oracle Clusterwareでアプリケーション・リソースの再起動に失敗した場合、リソースのアクション・プログラムを確認する必要があります。
アクション・プログラムの起動エントリ・ポイントを正常に実行できなかった場合、停止エントリ・ポイントが実行されます。 停止エントリ・ポイントを正常に実行できなかった場合、その状態はUNKNOWNとマーク付けされ、再配置は停止されます。 停止エントリ・ポイントが正常に終了した場合、その状態はOFFLINEに設定されます。 ただし、ターゲット状態はONLINEのままであるため、後続のクラスタ・ノードでの障害の発生または再起動によって、アプリケーションの再起動が試行される場合があります。 再配置先のノードを指定しておらず、配置条件を満たしている使用可能なクラスタ・ノードが存在する場合、それらの使用可能なノードのいずれかでアプリケーションの起動が試行されます。
1つ以上のユーザー定義の属性がアプリケーション・リソースに定義されている場合、crs_relocateコマンドを使用してアプリケーションを再配置する際に、これらの属性に対して値を指定できます。 指定した値は、属性の名前が付いた環境変数として、アクション・プログラムへ渡されます。
アプリケーション・リソースを再配置する際にOracle Clusterwareで実行された処理は、コマンドラインにエコーされます。 イベント・マネージャ(EVM)を使用してそれらを監視することもできます。 crs_relocateコマンドによって起動されたリソースのアクション・プログラムからの標準エラーおよび標準出力は、crs_relocateコマンドの標準エラーおよび標準出力にリダイレクトされます。 Oracle Clusterwareデーモンがアプリケーションを起動した場合、アクション・プログラムの標準エラーおよび標準出力は失われることに注意してください。 アクション・プログラム内で理由コードを使用することによって、ユーザーによるアクション・プログラムの呼出しをチェックできます。
crs_relocateコマンドは、次の構文で使用します。
crs_relocate resource_name [...] [-c cluster_node] [-f] [-q] crs_relocate resource_name [-c cluster_node] [-q] crs_relocate [USR_attribute_name=value] [...] resource_name [-c cluster_node] [-q] crs_relocate -s source_node [-c cluster_node] [-q]
表D-7 crs_relocateコマンドのオプション
| オプション | 説明 |
|---|---|
|
|
指定された各アプリケーションまたはアプリケーション・リソースを、その配置ポリシーに関係なく、指定されたノードに再配置します。 必須リソースが宛先ノードで使用できないか、アプリケーション・リソースが宛先ノードで制限されている場合、 |
|
|
指定したアプリケーション、それらに依存しているすべてのアプリケーション、およびそれらが依存しているすべてのアプリケーションを強制的に再配置します。 このオプションは、別のアプリケーションを必要とするアプリケーションまたは |
|
|
実行中のすべてのアプリケーションまたはアプリケーション・リソースを、 |
|
|
すべてのリソースの情報を表形式で表示します。 |
|
|
静止モードでコマンドを実行します(コンソールにメッセージは表示されません)。 |
|
[ |
リソースが起動されると、このオプションは指定された属性をCRSリソースの環境内の特定の値に設定します。 |
次の例では、rac1というノードにアプリケーション・リソースを再配置します。
crs_relocate postman -c rac1 Attempting to stop `postman` on node `rac2` Stop of `postman` on node `rac1` succeeded Attempting to start `postman` on node `rac1` Start of `postman` on node `rac1` succeeded
次の例では、ノードrac2からノードrac1への、すべてのアプリケーション・リソースの再配置を試行します。
crs_relocate -s rac2 -c rac1 Attempting to stop `postman` on node `rac2` Stop of `postman` on node `rac2` succeeded. Attempting to start `postman` on node `rac1` Start of `postman` on node `rac1` succeeded. Attempting to stop `calc` on node `rac2` Stop of `calc` on node `rac2` succeeded. Attempting to start `calc` on node `rac1` Start of `calc` on node `rac1` succeeded.
ユーザー定義の属性USR_DEBUGが定義されている場合、次の例では、環境変数USR_DEBUGがFALSEに設定されているアクション・プログラムの停止および起動のエントリ・ポイントを実行します。 これによって、アプリケーション・プロファイルに設定されているすべての値は無効になります。 対応するアクション・プログラムで、アクション・プログラムの適切なセクションに次の行を追加すると、値を表示できます。
echo $USR_DEBUG
その後、次のコマンドを発行します。
# crs_relocate USR_DEBUG=false database
リソースに関連付けられた権限を変更します。 このコマンドは、LinuxおよびUNIXのシステムのchmodコマンド、Windowsのデスクトップ・オプションの「ファイル」→「プロパティ」→「セキュリティ」→「アクセス許可」に類似しています。
クラスタ・ノード上のリソースのステータス情報を表示します。 crs_statコマンドを使用してリソースの問合せを行うには、CRSリソース権限に対する読取り権限および実行権限(LinuxおよびUNIXのシステムでのrおよびxの権限)が必要です。 -gオプションは例外で、任意のユーザーがこのオプションを使用して、リソースが存在するかどうかを確認できます。
STATE属性に示されるように、リソースはONLINEまたはOFFLINEのいずれかです。 ONLINE状態のアプリケーション・リソースは、クラスタ・ノード上で正常に実行されています。 このようなクラスタ・ノードは、その状態とともに表示されます。
TARGETの値は、リソースの設定が試行される対象の状態を示します。 TARGETの値がONLINEで、クラスタ・ノードに障害が発生している場合、可能であれば、別のノード上でアプリケーションの再起動が試行されます。 必須リソースがOFFLINEである場合など、リソースのSTATEがOFFLINEに強制的に設定されてしまう条件が存在する場合、TARGETの値はONLINEのままとなり、その条件が修正されるとアプリケーションまたはアプリケーション・リソースの起動が試行されます。
すべての非アプリケーション・リソースのTARGETの値は、リソースの障害カウントが障害しきい値を超えないかぎり、ONLINEになります。しきい値を超えた場合、TARGETはOFFLINEに変更されます。 このとき、そのリソースはSTATEがOFFLINEである場合と同様に処理されます。 STATEがONLINEで、TARGETがOFFLINEである場合、crs_startコマンドを使用して、TARGETの値をONLINEにリセットできます。
冗長ステータスを指定する-vでは、特にトラブルシューティングに役立つ追加情報が表示されます。 RESTART_COUNTの値は、単一のクラスタ・ノード上でアプリケーション・リソースが再起動された回数を示します。 Oracle Clusterwareでアプリケーションの再起動が停止されるまでの、再起動の最大回数は、RESTART_ATTEMPTSの値と同じです。 FAILURE_COUNTは、アプリケーション・プロファイルで定義されているFAILURE_INTERVALの間に、リソースに障害が発生した回数を示します。 Oracle Clusterwareでアプリケーションの再起動の試行が停止されるまでの、障害の最大発生回数は、FAILURE_THRESHOLDパラメータに設定されている値と同じです。 クラスタ・ノードに障害が発生し、アプリケーションがプロファイルのFAILOVER_DELAY属性に従って再配置を待機している場合、冗長ステータスにFAILOVER_STATUSフィールドも表示されます。 それ以外の場合にFAILOVER_STATUSフィールドが表示されることはありません。 FAILOVER_STATUSフィールドには、アプリケーションに問題が発生したノードと、アプリケーションが別のノードで再起動されるまでにそのノードの再起動を待機する残り時間が表示されます。
crs_statコマンドは、次の構文で使用します。
crs_stat [resource_name [...]] [-v] [-l] [-q] [-c cluster_node] crs_stat [resource_name [...]] -t [-v] [-q] [-c cluster_node] crs_stat -p [resource_name [...]] [-q] crs_stat [-a] resource_name -g crs_stat [-a] resource_name -r [-c cluster_node] crs_stat -f [resource_name [...]] [-q] [-c cluster_node] crs_stat -ls resource_name
すべてのリソースの情報を表示するには、引数を指定せずにコマンドを入力します。
表D-9 crs_statコマンドのオプション
| オプション | 説明 |
|---|---|
|
|
|
|
|
指定したクラスタ・ノード上のアプリケーションまたはアプリケーション・リソースの情報を表示します。 |
|
|
拡張情報( |
|
|
指定したアプリケーションまたはアプリケーション・リソースがOracle Clusterwareに登録されている場合は |
|
|
ステータスをリスト形式(非表形式)で表示します。 これはデフォルトの形式です。 |
|
|
リソース、所有者およびすべてのリソースに対する権限を表示します。 |
|
|
リソース、所有者および指定したリソースに対する権限を表示します。 |
|
|
指定したリソースのメモリー内プロファイルのステータスを示します。 リソースを指定していない場合、登録済のすべてのリソースのメモリー内プロファイルのステータスが表示されます。 リソースが登録されていない場合は、そのステータスは表示されません。 |
|
|
静止モードでコマンドを実行します(コンソールにメッセージは表示されません)。 |
|
|
指定したアプリケーションまたはアプリケーション・リソースがOracle Clusterwareで実行されている場合は |
|
|
すべてのリソースの情報を表形式で表示します。 |
|
|
リソースの障害間隔内における、リソースでの再起動や障害発生の回数、リソースで許可されている再起動や障害発生の最大回数、およびアプリケーションのターゲット状態を表示します。 また、このオプションでは通常のステータス情報も表示されます。 このオプションは、リソースのステータスに関する拡張情報を表示します。 表示される追加属性には、 |
次の例では、postmanアプリケーションのステータス情報を表示します。
crs_stat postman NAME=postman TYPE=application TARGET=ONLINE STATE=ONLINE on rac2
次の例では、ステータス情報を表形式で表示します。
crs_stat -t Name Type Target State Host ---------------------------------------------------------------- cluster_lockd application ONLINE ONLINE rac2 dhcp application OFFLINE OFFLINE
次の例では、ノードrac2に対して、-vオプションを指定してcrs_statコマンドを実行した場合の出力結果を表示します。
crs_stat -v NAME=cluster_lockd TYPE=application RESTART_ATTEMPTS=30 RESTART_COUNT=0 FAILURE_THRESHOLD=0 FAILURE_COUNT=0 TARGET=ONLINE STATE=ONLINE on rac2
アプリケーションまたはアプリケーション・リソースのターゲット状態をONLINEに設定し、指定した登録済のアプリケーションまたはアプリケーション・リソースの起動を試行します。 ターゲット状態とは、Oracle Clusterwareが実現しようとする状態です。 また、このコマンドに必要な権限の詳細は、「セキュリティおよび権限」を参照してください。
crs_startを使用してアプリケーションを起動する際に、いくつかのユーザー定義属性を使用できます。 指定した値は、属性の名前が付いた環境変数として、アクション・プログラムへ渡されます。
アプリケーションを起動するノードを指定していないとき、配置条件を満たす使用可能なクラスタ・ノードが存在する場合、それらの使用可能ないずれかのノードでアプリケーションの起動が試行されます。 再起動の前に、障害が発生したリソースを停止する必要があります。 また、アクション・プログラムに障害が発生している原因を確認する必要があります。
crs_startコマンドを使用すると、アプリケーション・プロファイルのREQUIRED_RESOURCEフィールドに定義されている依存リソースを起動できます。 登録済のリソースが起動されたら、その実行を終了するにはcrs_stopコマンドを使用する必要があります。
crs_startコマンドを使用すると、ステータス・メッセージや、(アプリケーションの起動に問題がある場合は)フィードバックを表示できます。 crs_startコマンドによって起動されたリソースのアクション・プログラムからの標準エラーおよび標準出力は、crs_startの標準エラーおよび標準出力にリダイレクトされます。 CRSデーモンがアプリケーションを起動した場合、アクション・プログラムの標準エラーおよび標準出力が失われることに注意してください。 アクション・プログラム内で理由コードを使用することによって、ユーザーによるアクション・プログラムの呼出しをチェックできます。
crs_startコマンドは、次の構文で使用します。
crs_start resource_name [...] [-c cluster_node] [-q] [-f] crs_start -all [-q] crs_start [USR_attribute_name=value] [...] resource_name [-c node_name] [-q]
resource_name [...]は、アプリケーション・プロファイルで指定された、起動される1つ以上のリソースの名前です。 リソースは、Oracle Clusterwareに登録されている必要があります。
表D-10 crs_startコマンドのオプション
| オプション | 説明 |
|---|---|
|
|
アクティブなクラスタ・ノード上で、登録済のすべてのOracle Clusterwareアプリケーションまたはアプリケーション・リソースを、それらの配置ポリシーおよび必須リソースのリストに従って起動します。 |
|
|
配置ポリシーおよびリソース依存性によってクラスタ・ノードが使用可能になっている場合、指定されたノード上で指示された各リソースを起動します。 指定されたクラスタ・ノードが配置ポリシーおよびリソース依存性によって使用可能になっていない場合、 |
|
|
すべての必須リソースが使用可能または起動可能である場合、指定したアプリケーションまたはアプリケーション・リソースを強制的に起動します。 指定されたアプリケーション・プロファイルの必須リソースのリストに含まれるすべてのアプリケーションまたはアプリケーション・リソースは、現在実行中でない場合は起動され、別のクラスタ・ノード上で実行中の場合は再配置されます。 このオプションは、一度に1つのアプリケーション・リソースのみを指定して使用してください。 |
|
-q |
静止モードでコマンドを実行します(コンソールにメッセージは表示されません)。 |
|
[ |
次の例では、postmanという名前のアプリケーションを起動します。
crs_start postman Attempting to start `postman` on node `rac1` Start of `postman` on node `rac1` succeeded.
次の例では、特定のクラスタ・ノードrac2上でアプリケーションを起動します。
crs_start -c rac2 postman Attempting to start `postman` on node `rac2` Start of `postman` on node `rac2` succeeded.
指定したノード上のアプリケーションを停止します。 crs_statコマンドを実行して、指定したアプリケーションが停止されていることを確認できます。
crs_stop resource_name [...] [-f] [-q] crs_stop -c cluster_node [...] [-q] crs_stop -all [-q] crs_stop [USR_attribute_name=value] [...] resource_name [-q] -c cluster_node [...]
すべてのアプリケーションまたはアプリケーション・リソースを停止する1つ以上のアクティブなクラスタ・ノードを指定します。 表D-11に示されているオプションを使用できます。
表D-11 crs_stopコマンドのオプション
| オプション | 説明 |
|---|---|
|
|
アクティブなクラスタ・ノードで、すべての登録済のアプリケーションまたはアプリケーション・リソースを停止します。 |
|
|
指定したクラスタ・ノード上のアプリケーションまたはアプリケーション・リソースを停止します。 |
|
|
指示したアプリケーションまたはアプリケーション・リソース、およびそのリソースに依存するすべてのアプリケーション・リソースを強制終了します。 このオプションは、指定したリソースに依存するアプリケーション・リソースが原因で |
|
-q |
静止モードでコマンドを実行します(コンソールにメッセージは表示されません)。 |
Oracle Clusterwareのバイナリ形式のレジストリ・データベースから、Oracle Clusterwareリソースの登録情報を削除します。 これによって、そのリソースはOracle Clusterwareに認識されなくなります。 登録解除されたリソースに関連付けられたアプリケーションの高可用性は失われます。 また、このコマンドに必要な権限の詳細は、「セキュリティおよび権限」を参照してください。
crs_unregisterコマンドが正常に完了すると、オンラインのOracle Clusterware環境からリソースが削除されます。 別のリソースの必須リソースであるリソースを登録解除することはできません。 登録解除は、crs_stopコマンドを使用してリソースを停止してから実行する必要があります。
この項で説明するAPIによって、Oracle Clusterwareで管理されているリソースの動作を制御できます。 ユーザー・アプリケーションは、APIを使用してOracle Clusterwareシステムに登録され、高可用性アプリケーションとしてOracle Clusterwareで管理されます。 アプリケーションが登録されると、そのアプリケーションの起動およびその状態の問合せが可能になります。 アプリケーションを実行する必要がなくなった場合、そのアプリケーションを停止して、Oracle Clusterwareから登録解除できます。 Oracle Clusterwareのサービスは、CRSDプロセスなどの、データベース・サーバーの外部で実行されている別のプロセスによって提供されます。 APIは、IPCメカニズムを使用してCRSDプロセスと通信します。
|
注意: Oracle Databaseのクライアント・インストール・メディアから、Oracle Clusterwareの高可用性Application Program Interface(API)をインストールできます。 |
Oracle Clusterwareとの通信のためのコンテキストを初期化します。
正しいノード名を戻します。 構成済のクラスタ内でこのコマンドを発行する場合、クラスタウェアで認識されている名前です。 クラスタ内で発行しない場合、他のクラスタウェアの手段によって認識される名前です。 ノード名を取得する場合、最初のコールで多くのリソースが必要な場合があります(特に、既存のCSSコンテキストでCLSCRSが初期化されていない場合)。
Oracle Clusterwareコールに対するパラメータを説明するコール環境を作成します。 メモリーは、clscrs_env_deleteへのコールで解放されるclscrsによって所有されます。
Oracle Clusterwareコールの環境を削除します。 その環境を使用するには、再度作成する必要があります。 環境を削除してから新しいパラメータを作成することはできません。
Oracle Clusterwareを使用して、指定したリソースのセットを起動します。 ホストを指定した場合、そのホストで起動します。ホストを指定しなかった場合、対象のリソースの配置ポリシーに従って起動します。 フラグがasyncの場合、Oracle Clusterwareへのコールが初期化された後、msgfはコールされず、ステータスOKが戻されます。実際の起動は非同期で実行され、msgfはコールされません。 フラグがasyncでなく、msgfがNULLでない場合、起動プログラムから収集された出力を使用して、msgfが1行ずつ実行されます。
Oracle Clusterwareを使用して、指定したリソースのチェック・アクションを実行します。 サーバーでのチェック・アクションの実行を待機する遅延時間を、秒数で指定できます。 この遅延はコールが戻された後に発生します。 別の操作を実行してからチェックを実行する際に使用できます。 in_splistで指定された各リソースに対して、そのリソースが存在するかどうか、およびコール元にそのリソースに対する操作の実行権限があるかどうかを示すステータスが、op_statusに戻されます。 パターン照合なしで名前が明示的に指定されたリソースの場合、NOTFOUNDエラーが発生する可能性があります。 パターンが一致しない場合は、エラーは戻されません。 リソースに対して戻される有効な属性は存在しません。 チェックが実際に実行されたタイミングまたは完了したタイミングを特定することはできません。 指定されたすべてのリソースの操作ステータスがSUCCESSの場合、SUCCESSが戻されます。そうでない場合、FAILUREを戻されて、特定のステータスがop_statusエントリに表示されます。 コール元では、コールの前にop_statusリストを作成し、コールの完了後にリストを破棄する必要があります。
入力リソース・リストにリソースを登録します。 リソースの属性は、入力リソース・リストにカプセル化されます。 出力op_statusリストには、各リソースの登録操作の結果が含まれ、有効なリソースの属性は含まれません。 コール元ではin_reslistを作成および移入し、op_statusリストを作成する必要があります。 リストは両方とも、コール元で破棄する必要があります。 op_statusリストは、別のAPIコールで再利用することはできません。各APIコールに対してリストを作成および破棄する必要があります。登録済のリソースの1つ以上の属性は、CLSCRS_FLAG_REG_UPDATEフラグを渡すことによって変更できます。 フラグは、入力リソース・リストのすべてのリソースに適用されます。
in_reslist [in]: 登録するリソースのリスト
flags [in]: CLSCRS_FLAG_REG_UPDATEまたは0(ゼロ)
op_status [out]: 各リソースの登録操作のステータスを保持するリソース・リスト
リソース名の入力リスト内のリソースを登録解除します。 出力op_statusリストには、各リソースの登録解除操作の結果が含まれます。 コール元ではrqlistを作成および移入し、op_statusリストを作成する必要があります。 リストは両方とも、コール元で破棄する必要があります。 op_statusリストは、別のAPIコールで再利用することはできません。 各APIコールに対してリストを作成および破棄する必要があります。
rqlist [in]: 登録解除するリソース名のリスト
flags [in]: オプション・フラグ
op_status [out]: 各リソースの登録解除操作のステータスを保持するリソース・リスト
rqlistで指定されたリソースに関する情報を取得します。 リソースは、nodenameパラメータに示された特定のノードに制限できます。 情報は出力out_reslistに戻されます。rqlistがNULLの場合、登録済のすべてのリソースに関する情報が戻されます。 ノード名がNULLでない場合、結果は特定のノード上で実行中のリソースに制限されます。 それ以外の場合、クラスタ内のすべてのノードが対象となります。res_flagsは、一致するリリース・ドメインを指定するために使用します。 このパラメータに指定する値はありません。 res_attrsは、out_reslistに戻される属性を指定します。 コール元では、対象となる属性の特定のリストを作成するか、またはCLSCRS_ATTRS_NONE、CLSCRS_ATTRS_ALL、CLSCRS_ATTRS_STATEまたはCLSCRS_ATTRS_SHORTのいずれかのマクロによって戻される定義済リストを使用できます。 属性リストは、rqlistに指定されたすべてのリソースに適用されます。 リソースのすべてのエラーは、出力out_reslistに戻されます。
rqlist [in]: 問合せを行うリソース名のリスト
nodename [in]: 特定のノード上でのみ実行されるリソースの問合せ(オプション、NULLを指定可能)
res_attrs [in]: 各リソースで戻される属性を指定するためのリスト
res_flags [in]: 一致するリソースを制限するフラグ
out_reslist [out]: 戻されたリソース情報を保持するリスト
この項では、リソースおよびリソースに関連付けられた属性を作成、管理および破棄するファンクションについて説明します。 この項では、次の構造を使用します。
clscrs_sp: 文字列ペア(sp)構造です。 名前および値の文字列が含まれます。 値にはNULLを指定できます。 この構造は作成および破棄され、その内容の検証および値の置換が可能です。 spは、1つの文字列ペア・リスト(splist)のみのメンバーである必要があります。
clscrs_splist: この文字列ペア・リスト(splist)は、様々なコンテキストで使用される0(ゼロ)以上の文字列ペアのリストです。 リストには、名前および値が含まれている場合もあれば、名前のみが含まれている場合もあります。 リストは作成および破棄され、そのメンバーは名前による取得、追加、削除、置換が可能です。また、firstおよびnext操作によって横断できます。
clscrs_res: リソース名およびそのリソースが使用されるコンテキストに関する追加データを含むリソース抽象化を示します。 リソース属性のデータが含まれている場合もあれば、操作に関するステータスおよび戻りメッセージが含まれている場合もあります。 リソースは、1つのリソース・リストにのみ含まれている必要があります。
clscrs_reslist: このリソース・リストは、0(ゼロ)以上のリソースに関する情報を含めるために使用される抽象化です。 リソース・リストは作成、追加、反復および破棄されます。
この項で説明するエクスポート操作は次のとおりです。
この項では、文字列ペアの操作について説明します。
文字列ペアの値の部分を変更します。 新しい値にはNULLを指定できます。 コールが戻されたら、値のメモリーを再利用できます。
パラメータ
sp [in]: 値を設定する文字列ペア
value [in]: 文字列ペアの値のコンポーネント(NULLを指定可能)
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: sp引数がNULLの場合
構文
clscrsret clscrs_sp_set(clscrs_sp *sp, const oratext *value);
文字列ペアの名前および値のコンポーネントを取得します。
パラメータ
sp [in]: 名前および値を取得する文字列ペア
name [out]: 文字列ペアの名前のコンポーネント
value [out]: 文字列ペアの値のコンポーネント(NULLを指定可能)
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADARG: sp引数がNULLの場合
構文
clscrsret clscrs_sp_get(clscrs_sp *sp, oratext **name, oratext **value);
この項では、splistの操作について説明します。
新しい文字列ペア・リストを作成します。 splistのメモリーはファンクションによって割り当てられます。
パラメータ
ctx [in]: clscrsコンテキスト
splist [out]: 作成される新しい文字列ペア・リスト
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADCTX: コンテキストがNULLの場合
構文
clscrsret clscrs_splist_create(clscrs_ctx *ctx, clscrs_splist **splist);
新しい文字列ペア・リスト(splist)を作成し、リスト内の最初の文字列ペアに名前および値を設定します。 splistのメモリーはファンクションによって割り当てられます。
パラメータ
ctx [in]: clscrsコンテキスト
name [in]: 文字列ペアの名前のコンポーネント
value [in]: 文字列ペアの値のコンポーネント(NULLを指定可能)
sp [out]: 作成される新しい文字列ペア
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADCTX: コンテキストがNULLの場合
clscrsretBADARG: 名前引数がNULLの場合
構文
clscrsret clscrs_splist_create_and_set(clscrs_ctx *ctx, const oratext *name, const oratext *value, clscrs_splist **splist);
文字列ペア・リスト(splist)に新しい文字列ペア(sp)を追加します。
パラメータ
splist [in]: 新しい{name, value}文字列ペアを追加するsplist
name [in]: 文字列ペアの名前のコンポーネント
value [in]: 文字列ペアの値のコンポーネント(NULLを指定可能)
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADARG: 名前引数がNULLの場合
構文
clscrsret clscrs_splist_append(clscrs_splist *splist, const oratext *name, const oratext *value);
文字列ペア・リスト(splist)から、最初の文字列ペア(sp)を取得します。
パラメータ
name [in]: 最初のspを取得するsplist
sp [out]: 指定したsplistの最初のsp
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: splistがNULLの場合
clscrsretEMPTY: splistに文字列ペア要素が存在しない場合
構文
clscrsret clscrs_splist_first(clscrs_splist *splist, clscrs_sp **sp);
文字列ペア・リスト(splist)から、現在の文字列ペアの次の文字列ペア(sp)を取得します。 このファンクションは、splist内の文字列ペアに対して反復されます。
パラメータ
name [in]: 次のspを取得するsplist
sp [out]: 指定したsplist内の次のsp {name, value}
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: splistがNULLの場合
clscrsretENDLIST: splistにそれ以上文字列ペア要素が存在しない場合
構文
clscrsret clscrs_splist_next(clscrs_splist *splist, clscrs_sp **sp);
文字列ペア・リスト(splist)内の文字列ペア(sp)の値を置換します。
パラメータ
splist [in]: 新しい{name, value}文字列ペアを追加するsplist
name [in]: 置換する値の名前
value [in]: 指定した名前に対して置換する値(NULLを指定可能)
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: 名前引数がNULLの場合
clscrsretBADARG: 名前引数がNULLの場合
構文
clscrsret clscrs_splist_replace(clscrs_splist *splist, const oratext *name, const oratext *value);
文字列ペア・リスト(splist)から文字列ペア(sp)を削除します。
パラメータ
splist [in]: {name, value}文字列ペアを削除するsplist
splist [in]: 指定したsplistから削除する名前
戻り値
clscrsretSUCC: 成功した場合
clscrsretNONAME: 指定した名前と一致する文字列ペアが存在しない場合
clscrsretBADARG: 名前引数がNULLの場合
構文
clscrsret clscrs_splist_delete_sp(clscrs_splist *splist, const oratext *name);
文字列ペア・リスト(splist)内の文字列ペア(sp)の値を検索します。
パラメータ
splist [in]: 検索するsplist
name [in]: 検索する値の名前
value [out]: 指定したsplist内で指定した名前に関連付けられた値
戻り値
clscrsretSUCC: 成功した場合
clscrsretNONAME: 指定した名前と一致する文字列ペアが存在しない場合
clscrsretBADARG: 名前引数がNULLの場合
構文
clscrsret clscrs_splist_find(clscrs_splist *splist, const oratext *name, oratext **value);
文字列ペア・リスト(splist)内の文字列ペア(sp)の数をカウントします。
パラメータ
splist [in]: 文字列ペアの数をカウントするsplist
count [out]: 指定したsplist内の文字列ペアの数
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: splistがNULLの場合
構文
clscrsret clscrs_splist_count(clscrs_splist *splist, ub4 *count);
文字列ペア・リスト(splist)のメモリーを解放します。
パラメータ
splist [in]: 破棄するsplist
戻り値
clscrsretSUCC: 成功した場合
構文
clscrsret clscrs_splist_destroy(clscrs_splist **splist);
新しいリソースを作成します。 リソース構造のメモリーはファンクションによって割り当てられます。 リソース・リスト(clscrs_reslist)がclscrs_reslist_destroy()によって破棄されると、メモリーが解放されます。
パラメータ
ctx [in]: clscrsコンテキスト
resname [in]: リソースの名前
res [out]: 作成される新しいリソース
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADCTX: コンテキストがNULLの場合
clscrsretBADARG: リソース名がNULLの場合
構文
clscrsret clscrs_res_create(clscrs_ctx *ctx, const oratext *resname, clscrs_res **res);
リソースの名前を取得します。
パラメータ
res [in]: 名前を取得するリソース
name [out]: リソースの名前
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: リソース引数がNULLの場合
構文
clscrsret clscrs_res_get_name(clscrs_res *res, oratext **name);
リソースに対してリソース属性を設定します。
パラメータ
res [in]: 属性を設定するリソース
attrname [in]: リソース属性の名前
value [in]: リソース属性の値(NULLを指定可能)
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: 属性名がNULLの場合
clscrsretNOMEM: メモリーを割り当てることができない場合
構文
clscrsret clscrs_res_set_attr(clscrs_res *res, const oratext *attrname, const oratext *value);
リソースのリソース属性を取得します。
パラメータ
res [in]: 属性を取得するリソース
attrname [in]: リソース属性の名前
value [out]: リソース属性の値
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: 属性名がNULLの場合
clscrsretNOMEM: メモリーを割り当てることができない場合
構文
clscrsret clscrs_res_get_attr(clscrs_res *res, const oratext *attrname, oratext **value);
リソースの属性リストを取得します。 属性リストは、文字列ペアのリストです。 クライアントでは、属性リストのメモリーは割り当てられません。
パラメータ
res [in]: 属性リストを取得するリソース
attrlist [out]: 指定したリソースの属性のリスト
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: リソースがNULLの場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretNOATTRS: リソースに対して属性が設定されていない場合
構文
clscrsret clscrs_res_get_attr_list(clscrs_res *res, clscrs_splist **attrlist);
リソースの属性リストを設定します。 属性リストは、文字列ペアのリストです。 リストはclscrs_splist_createコールによって作成されます。
パラメータ
res [in]: 属性リストを設定するリソース
attrlist [in]: 指定したリソースに設定される属性のリスト
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: リソースがNULLの場合
構文
clscrsret clscrs_res_set_attr_list(clscrs_res *res, clscrs_splist *attrlist);
リソースの属性の数を取得します。
パラメータ
res [in]: 属性の数を取得するリソース
count [out]: 指定したリソースの属性の数
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: リソースがNULLの場合
構文
clscrsret clscrs_res_attr_count(clscrs_res *res, ub4 *count);
リソースの操作ステータスを取得します。 メッセージのメモリーはファンクションによって割り当てられます。
パラメータ
res [in]: 操作ステータスを取得するリソース
status [out]: 指定したリソースでの操作ステータス
msg [out]: リソース上での操作の結果に対するテキスト・メッセージ
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretNOMSG: 有効なメッセージが存在しない場合
clscrsretBADARG: リソースがNULLの場合
構文
clscrsret clscrs_res_get_op_status(clscrs_res *res, CLSCRS_STAT *status, oratext **msg);
リソースの登録ステータスを取得します。
パラメータ
res [in]: 操作ステータスを設定するリソース
registered [out]: リソースが登録されているかどうかを示すブール
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADARG: リソースがNULLの場合
構文
clscrsret clscrs_res_get_registered(clscrs_res *res, boolean *registered);
現在リソースをホスティングしているノード・リストを取得します。リソースのホストが存在しない場合または属性が存在しない場合は、NULLを取得します。 コール元でノード・リストのメモリーを割り当てる必要はありません。
パラメータ
res [in]: ノード・リストを取得するリソース
nodelist [out]: ノードを保持しているsplist
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: リソースがNULLの場合
構文
clscrsret clscrs_res_get_node_list(clscrs_res *res, clscrs_splist **nodelist);
リソースのメモリーを解放します。
パラメータ
res [in]: メモリーを解放するリソース
戻り値
clscrsretSUCC: 成功した場合
構文
clscrsret clscrs_res_destroy(clscrs_res **res);
新しいリソース・リストを作成します。 リソース・リストのメモリーはファンクションによって割り当てられます。
パラメータ
ctx [in]: clscrsコンテキスト
reslist [out]: 作成される空のリソース・リスト
戻り値
clscrsretSUCC: 成功した場合
clscrsretNOMEM: メモリーを割り当てることができない場合
clscrsretBADCTX: コンテキストがNULLの場合
構文
clscrsret clscrs_reslist_create(clscrs_ctx *ctx, clscrs_reslist **reslist);
リソース・リストにリソースを追加します。
パラメータ
reslist [in]: リソースを追加するリソース・リスト
res [in]: 追加するリソース
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: reslistがNULLの場合
clscrsretRESEXISTS: リソースがすでにreslistに存在する場合
構文
clscrsret clscrs_reslist_append(clscrs_reslist *reslist, clscrs_res *res);
リソース・リストの最初のリソースを取得します。
パラメータ
reslist [in]: 最初のリソースを取得するリソース・リスト
res [out]: リソース・リストの最初のリソース
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: reslistがNULLの場合
clscrsretEMPTY: リストにリソースが存在しない場合
構文
clscrsret clscrs_reslist_first(clscrs_reslist *reslist, clscrs_res **res);
リソース・リストから、現在のリソースの次のリソースを取得します。 このファンクションは、リソース・リスト内のリソースに対して反復されます。
パラメータ
reslist [in]: 最初のリソースを取得するリソース・リスト
res [out]: リソース・リストの次のリソース
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: reslistがNULLの場合
clscrsretENDLIST: リストにそれ以上リソースが存在しない場合
構文
clscrsret clscrs_reslist_next(clscrs_reslist *reslist, clscrs_res **res);
リソース・リスト内のリソースを検索します。
パラメータ
reslist [in]: 作成される空のリソース・リスト
name [in]: 取得するリソースの名前
res [out]: 指定した名前に対応するリソース
戻り値
clscrsretSUCC: 成功した場合
clscrsretNORES: リソースが見つからない場合
clscrsretBADARG: reslistまたは名前がNULLの場合
構文
clscrsret clscrs_reslist_find(clscrs_reslist *reslist, const oratext *name, clscrs_res **res);
リソース・リスト内のリソースの数をカウントします。
パラメータ
reslist [in]: カウントを取得するリソース・リスト
count [out]: リソース・リスト内のリソースの数
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: reslistがNULLの場合
構文
clscrsret clscrs_reslist_count(clscrs_reslist *reslist, ub4 *count);
リソース・リストからリソースを削除します。
パラメータ
reslist [in]: リソースを削除するリソース・リスト
name [in]: 削除するリソースの名前
戻り値
clscrsretSUCC: 成功した場合
clscrsretBADARG: reslistまたは名前がNULLの場合
clscrsretNORES: リソースがreslistで見つからない場合
構文
clscrsret clscrs_reslist_delete_res(clscrs_reslist *reslist,
リソース・リストのメモリーを解放します。
パラメータ
reslist [in]: メモリーを解放するリソース・リスト
戻り値
clscrsretSUCC: 成功した場合
構文
clscrsret clscrs_reslist_destroy(clscrs_reslist **reslist);
clscrs APIからのリターン・コードに対応するエラー・メッセージを取得します。 エラー・メッセージのメモリーはコール元によって割り当てられます。 バッファの大きさが十分でない場合、その長さがmsg_lenに戻されます。
パラメータ
ctx [in]: clscrsコンテキスト
err_code [in]: clscrs APIから戻されたエラー・コード
msg [out]: err_codeに対応するメッセージ
msg_len [inout]: メッセージ・バッファの長さ
戻り値
clscrsretSUCC: 成功した場合
構文
clscrsret clscrs_get_error_message(clscrs_ctx *ctx, clscrsret err_code, oratext *msg, sb4 msg_len);
この項では、リソース・ファンクションについて説明します。 clscrs_resリソース抽象化には、リソース名およびそのリソースが使用されるコンテキストに適切な追加データが含まれます。 操作に関するステータスおよび戻されたエラーの情報を伴う場合もあります。 また、操作に対する入力としての属性データが含まれる場合もあります。 リソースは、1つのリソース・リストにのみ含まれている必要があります。 その場合、その後続のリソースをNEXT操作で検出できます。
CLSCRSRET clscrs_res_create(clscrs_cts *ctx, const oratext *resname, clscrs_res **res)
単一リソースを作成し、ハンドルを書き込みます。 resnameを指定する必要があります(NULLは指定できません)。
CLSCRSRET clscrs_res_get_name (clscrs_res *res, oratext **name);
リソース名のポインタを戻します。 戻された名前のポインタはリソースが存在している間のみ有効です。
CLSCRSRET clscrs_res_get_op_status (clscrs_res *res, CLSCRS_STAT *stat, oratext **msg)
リソースに有効な操作エラー値が存在する場合、状態およびエラー・メッセージへのポインタを書き込み、SUCCESSを戻します。 メッセージにはNULLを指定することもできます。 有効な操作ステータスが存在しない場合は、INVALIDを戻します。
clscrs_splist *clscrs_res_get_node_list(clscrs_res *res);
現在リソースをホスティングしているノードを保持するsplistを戻します。リソースのホストが存在しない場合または属性が存在しない場合は、NULLを戻します。 リストのカウントを取得し、リストに対して反復することもできます。 リストはリソースによって所有され、リソースが破棄されるとリストも破棄されます。 これは、現行のホスティング・メンバー・リストを保持している可能性がある属性のセマンティックを解析する特別な操作です。 リストには指定された順序付けはありません。
CLSCRSRET clscrs_res_get_attr(clscrs_res *res, const oratext *attrname, oratext **value) ;
指定した名前を持つ属性の値へのポインタを書き込み、名前が検出されたらSUCCESSを戻します。指定した名前がリソースの属性セットに存在しない場合はFAILUREを戻し、リソースに属性リストが存在しない場合はINVALIDを戻します。 無効なリソース・ハンドルが指定された場合はアサートする場合があります。
CLSCRSRET clscrs_res_set_attr(clscrs_res *res, oratext *attrname, oratext *value) ;
指定した名前を持つ属性の値を設定して、SUCCESSを戻します。指定した名前がリソースの属性セットに存在しない場合はFAILUREを戻します。 属性がすでに存在する場合は、現行の値は置換されます。 値が戻される際、名前および値のメモリーは再利用できます。
CLSCRSRET clscrs_res_attr_count( clscrs_res *res, ub4 *count );
attrIterを使用したスキャンで戻される属性の数を書き込みます。 属性が存在する場合はSUCCESSを戻します。 属性が存在しない場合は、INVALIDを戻しますが、カウントは0(ゼロ)に設定します。
CLSCRSRET clscrs_res_get_attr_list(clscrs_res *res, clscrs_splist **attrlist);
リソースの属性のsplistを戻します。スキャンでnext()操作を実行できます。 リストはリソースによって所有され、リソースが破棄されるとリストも破棄されます。 属性リストがリソースに存在する場合はSUCCESSを戻し、存在しない場合はINVALIDを戻します。 リストには指定された順序付けはありません。
この項では、リソース・リストの操作について説明します。 clscrs_reslistリソース・リストは、0(ゼロ)以上のリソースに関する情報を含む抽象化です。 リストは作成、追加、反復および破棄されます。
CLSCRSRET clscrs_reslist_create(clscrs_ctx *ctx, clscrs_reslist **reslist)
リソース・リストを作成し、ハンドルを書き込みます。
CLSCRSRET clscrs_reslist_count(clscrs_reslist *reslist, ub4 *count)
リスト内のリソースの数を書き込みます。
CLSCRSRET clscrs_reslist_first(clscrs_reslist *reslist, clscrs_res **first)
リソース・リストの最初のリソースへのハンドルを書き込みます。 リストが空の場合は、NULLを書き込みます。
CLSCRSRET clscrs_reslist_next(clscrs_reslist *reslist, clscrs_res **next)
リソース・リストの次のリソースへのハンドルを書き込みます。 リストが空の場合は、NULLを書き込みます。
CLSCRSRET clscrs_reslist_find(clscrs_reslist *reslist, const oratext *name, clscrs_res **res)
reslist内のリソースを名前で検索し、検出されたリソースへのハンドルを書き込みます。 リソースが見つからない場合は、NULLを書き込みます。 パターン照合なしで、完全一致検索を実行します。
CLSCRS_RES *clscrs_reslist_destroy(clscrs_res *res)
リソース・リストおよびそのリストに現在含まれているすべてのリソースを削除します。