日本語PDF

J Oracle Clusterwareのトラブルシューティング

この付録では、Oracle Clusterware環境の監視について説明し、動的デバッグを有効にして、Oracle Clusterwareの処理のトラブルシューティングを行う方法、また特定のコンポーネントおよび特定のOracle Clusterwareリソースのデバッグおよびトレースを有効にして、トラブルシューティングの対象を絞り込む方法について示します。

この付録の内容は次のとおりです。

クラスタ・リソース・アクティビティ・ログを使用したクラスタ・リソースの障害の監視

クラスタ・リソース・アクティビティ・ログは、診断ログとは別に、リソースの障害に関する正確で詳細な情報を提供します。

Oracle Clusterware管理リソースで障害が発生した場合、Oracle Clusterwareは障害に関するメッセージのログを、グリッド・インフラストラクチャ管理リポジトリにあるクラスタ・リソース・アクティビティ・ログに書き込みます。障害は、リソース、ホスティング・ノードまたはネットワークの問題が原因で起こる場合があります。クラスタ・リソース・アクティビティ・ログでは、リソースの障害の原因を一元的に把握できます。

クラスタ・リソース・アクティビティ・ログへの書込みは、アクティビティIDでタグ付けされます。関連するデータは同じ親アクティビティIDを取得し、親データの下にネストされます。たとえば、Oracle Clusterwareが稼働しているときに、crsctl stop clusterware -allコマンドを実行した場合、すべてのアクティビティがアクティビティIDを取得し、関連するアクティビティが同じ親アクティビティIDでタグ付けされます。ノードごとに、親ID下にサブIDが作成され、個々のアクティビティがそれぞれ対応するアクティビティIDでタグ付けされます。さらに、個々のノード上のリソースごとに親IDに基づいてサブIDが作成され、アクティビティIDの階層が構築されます。アクティビティIDの階層を使用すると、データを分析して特定のアクティビティを確認できます。

たとえば、相互に複雑な依存関係を持ち、1つのデータベース・サービスを使用している多数のリソースがあるとします。金曜日には、すべてのリソースが1つのノードで実行されていますが、月曜日には各リソースが異なるノード上で実行されているため、その理由を確認する必要があります。crsctl query calogコマンドを使用すると、それらのリソースとデータベース・サービスを含むすべてのアクティビティをクラスタ・リソース・アクティビティ・ログに問い合せることができます。出力には完全なフローが表示され、ユーザーは親サービス・フェイルオーバーID内の各サブIDを問い合せて、発生した問題とその原因を具体的に確認できます。

フィルタを使用すると、クラスタ・リソース・アクティビティ・ログ内の任意の数のフィールドを問い合せることができます。たとえば、rootなど、特定のオペレーティング・システム・ユーザーによって書き込まれたすべてのアクティビティを問い合せることができます。crsctl query calogコマンドによって生成される出力は、表形式またはXML形式で表示できます。

クラスタ・リソース・アクティビティ・ログは、現在のOracle Clusterwareのロギングおよびアラート・ログ・メッセージを補助するものです。

ノート:

Oracle Clusterwareでは、セキュリティ関連の情報を含むメッセージ(ログイン資格証明など)はクラスタ・アクティビティ・ログに書き込まれません。

クラスタ・リソース・アクティビティ・ログの内容を管理および表示するには、次のコマンドを使用します。

crsctl query calog

特定の基準に一致するリソース・アクティビティ・ログを問い合せます。

構文

crsctl query calog [-aftertime "timestamp"] [-beforetime "timestamp"]
  [-duration "time_interval" | -follow] [-filter "filter_expression"]
  [-fullfmt | -xmlfmt]

パラメータ

表J-1 crsctl query calogコマンドのパラメータ

パラメータ 説明
-aftertime "timestamp"

特定の時刻の後にログに記録されたアクティビティを表示します。

タイムスタンプをYYYY-MM-DD HH24:MI:SS[.FF][TZH:TZM]YYYY-MM-DDまたはHH24:MI:SS[.FF][TZH:TZM]の形式で指定します。

TZHおよびTZMはタイムゾーンの時間と分を意味し、FFはマイクロ秒を意味します。

[TZH:TZM]を指定する場合、crsctlコマンドは、タイムゾーンがUTCであると仮定します。[TZH:TZM]を指定しない場合、crsctlコマンドは、crsctlコマンドの実行元であるクラスタ・ノードのローカル・タイムゾーンであると仮定します。

このパラメータを-beforetimeとともに使用して、特定の時間間隔でログに記録されたアクティビティを問い合せます。

-beforetime "timestamp"

特定の時刻の前にログに記録されたアクティビティを表示します。

タイムスタンプをYYYY-MM-DD HH24:MI:SS[.FF][TZH:TZM]YYYY-MM-DDまたはHH24:MI:SS[.FF][TZH:TZM]の形式で指定します。

TZHおよびTZMはタイムゾーンの時間と分を意味し、FFはマイクロ秒を意味します。

[TZH:TZM]を指定する場合、crsctlコマンドは、タイムゾーンがUTCであると仮定します。[TZH:TZM]を指定しない場合、crsctlコマンドは、crsctlコマンドの実行元であるクラスタ・ノードのローカル・タイムゾーンであると仮定します。

このパラメータを-aftertimeとともに使用して、特定の時間間隔でログに記録されたアクティビティを問い合せます。

-duration "time_interval" | -follow

-durationを使用して、-aftertimeパラメータの使用時に問い合せる時間間隔を指定します。

タイムスタンプをDD HH:MM:SS形式で指定します。

-followを使用して、発生したアクティビティの連続的なストリームを表示します。

-filter "filter_expression"

-filterパラメータを使用して、クラスタ・リソース・アクティビティ・ログ内の任意の数のフィールドを問い合せます。

複数のフィルタを指定するには、二重引用符("")で囲んだフィルタ式のカンマ区切りのリストを使用します。

-fullfmt | -xmlfmt

クラスタ・リソース・アクティビティ・ログのデータを表示するには、フル形式またはXML形式を選択します。

クラスタ・リソース・アクティビティ・ログのフィールド

-filterパラメータを使用して、クラスタ・リソース・アクティビティ・ログ内の任意の数のフィールドを問い合せます。

表J-2 クラスタ・リソース・アクティビティ・ログのフィールド

フィールド 説明 ユース・ケース
timestamp

クラスタ・リソース・アクティビティがログに記録された時刻。

このフィルタを使用して、特定の時刻にログに記録されたすべてのアクティビティを問い合せます。

これは-aftertime-beforetimeおよび-durationコマンド・パラメータのかわりです。

writer_process_id

クラスタ・リソース・アクティビティ・ログに書き込んでいるプロセスのID。

特定のプロセスによって生成されたアクティビティのみを問い合せます。

writer_process_name

クラスタ・リソース・アクティビティ・ログに書き込んでいるプロセスの名前。

特定のプロセスを問い合せると、CRSCTLは特定のプロセスのすべてのアクティビティを戻します。

writer_user

クラスタ・リソース・アクティビティ・ログに書き込んでいるユーザーの名前。

特定のユーザーによって書き込まれたすべてのアクティビティを問い合せます。

writer_group

クラスタ・リソース・アクティビティ・ログに書き込んでいるユーザーが属するグループの名前。

特定のユーザー・グループに属するユーザーによって書き込まれたすべてのアクティビティを問い合せます。

writer_hostname

クラスタ・リソース・アクティビティ・ログが書き込まれるホストの名前。

特定のホストによって書き込まれたすべてのアクティビティを問い合せます。

writer_clustername

クラスタ・リソース・アクティビティ・ログが書き込まれるクラスタの名前。

特定のクラスタによって書き込まれたすべてのアクティビティを問い合せます。

nls_product

NLSメッセージの製品(CRSORAsrvmなど)。

特定の製品名を持つすべてのアクティビティを問い合せます。

nls_facility

NLSメッセージの機能(CRSPROCなど)。

特定の機能名を持つすべてのアクティビティを問い合せます。

nls_id

NLSメッセージのID (42008など)。

特定のメッセージIDを持つすべてのアクティビティを問い合せます。

nls_field_count

NLSメッセージのフィールド数。

nls_field_countコマンド・パラメータを超えるか、これ未満またはこれと等しいフィールドを含むNLSメッセージに対応するすべてのアクティビティを問い合せます。

nls_field1

NLSメッセージの最初のフィールド。

NLSメッセージの最初のパラメータに一致するすべてのアクティビティを問い合せます。

nls_field1_type

NLSメッセージの最初のフィールドのタイプ。

NLSメッセージの最初のパラメータの特定のタイプに一致するすべてのアクティビティを問い合せます。

nls_format

NLSメッセージの形式(Resource '%s' has been modifiedなど)。

NLSメッセージの特定の形式に一致するすべてのアクティビティを問い合せます。

nls_message

クラスタ・リソース・アクティビティ・ログに書き込まれたNLSメッセージ全体(Resource 'ora.cvu' has been modifiedなど)。

特定のNLSメッセージに一致するすべてのアクティビティを問い合せます。

actid

各クラスタ・アクティビティ・ログの一意のアクティビティID。

特定のIDに一致するすべてのアクティビティを問い合せます。

また、部分的なactidのみを指定し、actidがアクティビティIDのサブセットであるすべてのアクティビティをリストします。

is_planned

アクティビティが計画済かどうかを確認します。

たとえば、ユーザーがノードでコマンドcrsctl stop crsを発行すると、スタックが停止し、リソースがバウンスします。

crsctl stop crsコマンドを実行すると、アクティビティが生成され、calogに記録されます。これは計画済アクションであるため、is_plannedフィールドはtrue (1)に設定されます。

その他の場合はis_plannedフィールドがfalse (0)に設定されます。

計画済または計画外のすべてのアクティビティを問い合せます。

onbehalfof_user

クラスタ・アクティビティ・ログの書込みを代理されているユーザーの名前。

特定のユーザーのために書き込まれたすべてのアクティビティを問い合せます。

entity_isoraentity

calogアクティビティが記録されているエンティティがOracleエンティティであるかどうかを確認します。

たとえば、リソース(ora.***など)が起動または停止された場合には、それらすべてのアクティビティがクラスタ・リソース・アクティビティ・ログに記録されます。

ora.***はOracleエンティティであるため、entity_isoraentityフィールドはtrue (1)に設定されます。

その他の場合はentity_isoraentityフィールドがfalse (0)に設定されます。

OracleエンティティまたはOracle以外のエンティティによって記録されたすべてのアクティビティを問い合せます。

entity_type

エンティティのタイプ(クラスタ・アクティビティ・ログが書き込まれるserverなど)。

特定のエンティティに一致するすべてのアクティビティを問い合せます。

entity_name

エンティティの名前(クラスタ・アクティビティ・ログが書き込まれるfooなど)。

特定のエンティティ名に一致するすべてのクラスタ・アクティビティを問い合せます。

entity_hostname

ホストの名前(クラスタ・アクティビティ・ログが書き込まれるエンティティに関連付けられたnode1,など)。

特定のホスト名に一致するすべてのクラスタ・アクティビティを問い合せます。

entity_clustername

クラスタの名前(クラスタ・アクティビティ・ログが書き込まれるエンティティに関連付けられたcluster1など)。

特定のクラスタ名に一致するすべてのクラスタ・アクティビティを問い合せます。

.

使用上のノート

簡易フィルタを、Boolean演算子を使用した式フィルタと呼ばれる式に組み込みます。

タイムスタンプおよび時間間隔を二重引用符("")で囲みます。

フィルタ式を二重引用符("")で囲みます。

カッコまたは空白を含む値を一重引用符('')で囲みます。

一致するレコードが見つからない場合は、Oracle Clusterware Control (CRSCTL)ユーティリティにより次のメッセージが表示されます。
CRS-40002: No activities match the query.

次にフィルタの例を示します。

  • "writer_user==root": 表示をrootユーザーのみに限定します。

  • "customer_data=='GEN_RESTART@SERVERNAME(rwsbi08)=StartCompleted~'": 表示を指定された値GEN_RESTART@SERVERNAME(node1)=StartCompleted~を含むcustomer_dataに限定します。

すべてのリソース・アクティビティを問い合せ、出力をフル形式で表示するには、次のようにします。
$ crsctl query calog -fullfmt

----ACTIVITY START----
timestamp               : 2016-09-27 17:55:43.152000
writer_process_id       : 6538
writer_process_name     : crsd.bin
writer_user             : root
writer_group            : root
writer_hostname         : node1
writer_clustername      : cluster1-mb1
customer_data           : CHECK_RESULTS=-408040060~
nls_product             : CRS
nls_facility            : CRS
nls_id                  : 2938
nls_field_count         : 1
nls_field1              : ora.cvu
nls_field1_type         : 25
nls_field1_len          : 0
nls_format              : Resource '%s' has been modified.
nls_message             : Resource 'ora.cvu' has been modified.
actid                   : 14732093665106538/1816699/1
is_planned              : 1
onbehalfof_user         : grid
onbehalfof_hostname     : node1
entity_isoraentity      : 1
entity_type             : resource
entity_name             : ora.cvu
entity_hostname         : node1
entity_clustername      : cluster1-mb1
----ACTIVITY END----
すべてのリソース・アクティビティを問い合せ、出力をXML形式で表示するには、次のようにします。
$ crsctl query calog -xmlfmt

<?xml version="1.0" encoding="UTF-8"?>
<activities>
  <activity>
    <timestamp>2016-09-27 17:55:43.152000</timestamp>
    <writer_process_id>6538</writer_process_id>
    <writer_process_name>crsd.bin</writer_process_name>
    <writer_user>root</writer_user>
    <writer_group>root</writer_group>
    <writer_hostname>node1</writer_hostname>
    <writer_clustername>cluster1-mb1</writer_clustername>
    <customer_data>CHECK_RESULTS=-408040060~</customer_data>
    <nls_product>CRS</nls_product>
    <nls_facility>CRS</nls_facility>
    <nls_id>2938</nls_id>
    <nls_field_count>1</nls_field_count>
    <nls_field1>ora.cvu</nls_field1>
    <nls_field1_type>25</nls_field1_type>
    <nls_field1_len>0</nls_field1_len>
    <nls_format>Resource '%s' has been modified.</nls_format>
    <nls_message>Resource 'ora.cvu' has been modified.</nls_message>
    <actid>14732093665106538/1816699/1</actid>
    <is_planned>1</is_planned>
    <onbehalfof_user>grid</onbehalfof_user>
    <onbehalfof_hostname>node1</onbehalfof_hostname>
    <entity_isoraentity>1</entity_isoraentity>
    <entity_type>resource</entity_type>
    <entity_name>ora.cvu</entity_name>
    <entity_hostname>node1</entity_hostname>
    <entity_clustername>cluster1-mb1</entity_clustername>
  </activity>
</activities>
特定の時刻後の2時間の間隔でのリソース・アクティビティを問い合せ、出力をXML形式で表示するには、次のようにします。
$ crsctl query calog -aftertime "2016-09-28 17:55:43" -duration "0 02:00:00" -xmlfmt
<?xml version="1.0" encoding="UTF-8"?>
<activities>
  <activity>
    <timestamp>2016-09-28 17:55:45.992000</timestamp>
    <writer_process_id>6538</writer_process_id>
    <writer_process_name>crsd.bin</writer_process_name>
    <writer_user>root</writer_user>
    <writer_group>root</writer_group>
    <writer_hostname>node1</writer_hostname>
    <writer_clustername>cluster1-mb1</writer_clustername>
    <customer_data>CHECK_RESULTS=1718139884~</customer_data>
    <nls_product>CRS</nls_product>
    <nls_facility>CRS</nls_facility>
    <nls_id>2938</nls_id>
    <nls_field_count>1</nls_field_count>
    <nls_field1>ora.cvu</nls_field1>
    <nls_field1_type>25</nls_field1_type>
    <nls_field1_len>0</nls_field1_len>
    <nls_format>Resource '%s' has been modified.</nls_format>
    <nls_message>Resource 'ora.cvu' has been modified.</nls_message>
    <actid>14732093665106538/1942009/1</actid>
    <is_planned>1</is_planned>
    <onbehalfof_user>grid</onbehalfof_user>
    <onbehalfof_hostname>node1</onbehalfof_hostname>
    <entity_isoraentity>1</entity_isoraentity>
    <entity_type>resource</entity_type>
    <entity_name>ora.cvu</entity_name>
    <entity_hostname>node1</entity_hostname>
    <entity_clustername>cluster1-mb1</entity_clustername>
  </activity>
</activities>
特定の時刻のリソース・アクティビティを問い合せるには、次のようにします。
$ crsctl query calog -filter "timestamp=='2016-09-28 17:55:45.992000'"

2016-09-28 17:55:45.992000 : Resource 'ora.cvu' has been modified. : 14732093665106538/1942009/1 :

フィルタwriter_userおよびcustomer_dataを使用してリソース・アクティビティを問い合せるには、次のようにします。

$ crsctl query calog -filter "writer_user==root AND customer_data==
  'GEN_RESTART@SERVERNAME(node1)=StartCompleted~'" -fullfmt

または

$ crsctl query calog -filter "(writer_user==root) AND (customer_data==
  'GEN_RESTART@SERVERNAME(node1)=StartCompleted~')" -fullfmt
----ACTIVITY START----
timestamp               : 2016-09-15 17:42:57.517000
writer_process_id       : 6538
writer_process_name     : crsd.bin
writer_user             : root
writer_group            : root
writer_hostname         : node1
writer_clustername      : cluster1-mb1
customer_data           : GEN_RESTART@SERVERNAME(rwsbi08)=StartCompleted~
nls_product             : CRS
nls_facility            : CRS
nls_id                  : 2938
nls_field_count         : 1
nls_field1              : ora.testdb.db
nls_field1_type         : 25
nls_field1_len          : 0
nls_format              : Resource '%s' has been modified.
nls_message             : Resource 'ora.devdb.db' has been modified.
actid                   : 14732093665106538/659678/1
is_planned              : 1
onbehalfof_user         : oracle
onbehalfof_hostname     : node1
entity_isoraentity      : 1
entity_type             : resource
entity_name             : ora.testdb.db
entity_hostname         : node1
entity_clustername      : cluster1-mb1
----ACTIVITY END----
UTC+08:00の時刻2016-11-15 22:53:08の後に生成されたすべてのcalogを問い合せるには、次のようにします。
$ crsctl query calog -aftertime "2016-11-15 22:53:08+08:00"
UTC-08:00の時刻2016-11-15 22:53:08の後に生成されたすべてのcalogを問い合せるには、次のようにします。
$ crsctl query calog -aftertime "2016-11-15 22:53:08-08:00"
マイクロ秒を使用したタイムスタンプを指定してすべてのcalogを問い合せるには、次のようにします。
$ crsctl query calog -aftertime "2016-11-16 01:07:53.063000"

2016-11-16 01:07:53.558000 : Resource 'ora.cvu' has been modified. : 14792791129816600/2580/7 :
2016-11-16 01:07:53.562000 : Clean of 'ora.cvu' on 'rwsam02' succeeded : 14792791129816600/2580/8 :

crsctl get calog maxsize

Oracle Clusterware管理リソースのアクティビティ情報を格納するには、クラスタ・リソース・アクティビティ・ログに割り当てられている最大領域を問い合せます。

構文

crsctl get calog maxsize

パラメータ

crsctl get calog maxsizeコマンドにはパラメータはありません。

次の例では、アクティビティを格納するためにクラスタ・リソース・アクティビティ・ログに割り当てられている最大領域が戻されます。

$ crsctl get calog maxsize

CRS-6760: The maximum size of the Oracle cluster activity log is 1024 MB.

crsctl get calog retentiontime

クラスタ・リソース・アクティビティ・ログの保存時間を問い合せます。

構文

crsctl get calog retentiontime

パラメータ

crsctl get calog retentiontimeコマンドにはパラメータはありません。

次の例では、クラスタ・アクティビティ・ログの保存時間を時間数で戻します。

$ crsctl get calog retentiontime

CRS-6781: The retention time of the cluster activity log is 73 hours.

crsctl set calog maxsize

Oracle Clusterware管理リソースのアクティビティ情報を格納するために割り当てられる最大領域を構成します。

構文

crsctl set calog maxsize maximum_size

使用上のノート

クラスタ・リソース・アクティビティ・ログに割り当てる記憶領域の最大サイズの値をMB単位で指定します。

ノート:

記憶領域の容量を減らすと、記憶域のコンテンツが失われます。

次の例では、Oracle Clusterware管理リソースのアクティビティ情報を格納するための最大領域を1024 MBに設定します。

$ crsctl set calog maxsize 1024

crsctl set calog retentiontime

クラスタ・リソース・アクティビティ・ログの保存時間を構成します。

構文

crsctl set calog retentiontime hours

パラメータ

crsctl set calog retentiontimeコマンドは時間数をパラメータに取ります。

使用上のノート

クラスタ・リソース・アクティビティ・ログの保存時間を時間単位で指定します。

次の例では、クラスタ・リソース・アクティビティ・ログの保存時間を72時間に設定します。

$ crsctl set calog retentiontime 72

Oracle Clusterwareの診断およびアラート・ログ

次の内容を確認し、Oracle ClusterwareによるADRの使用方法におけるクラスタウェア固有の側面を理解します。

Oracle Clusterwareは、Oracle Database障害診断インフラストラクチャを使用して診断データとアラート・ログを管理します。このため、ほとんどの診断データは自動診断リポジトリ(ADR)(インストール時に指定したベース・ディレクトリ内のディレクトリとファイルのコレクション)に含まれます。

ADRディレクトリ構造

Oracle Clusterware ADRデータは、ADRベースと呼ばれるルート・ディレクトリに書き込まれます。ADR以外のコンポーネントもこのディレクトリを使用するため、Oracleベースと呼ばれることもあります。ベースとして使用するファイル・システム・パスをOracle Grid Infrastructureのインストール時に指定します。これを変更するには、Oracle Grid Infrastructureを再インストールするしかありません。

ADRファイルはADRホーム・ディレクトリに存在します。任意のホストで実行するOracle ClusterwareでもADRホームの構造は常に次のようになります。

ORACLE_BASE/diag/crs/host_name/crs

この例で、ORACLE_BASEはOracle Grid Infrastructureのインストール時に指定したOracleベース・パス、host_nameはホストの名前です。Windowsプラットフォームでは、円記号(\)でパスのディレクトリ名が区切られます。

ADRホーム内には、特定のタイプのADRデータのための様々なディレクトリがあります。最重要のディレクトリはincidentです。traceディレクトリには、Oracle Clusterwareデーモンとコマンドライン・プログラムによって書き込まれる正常なトレース・ファイルすべて(インシデント以外)と、Oracle Clusterwareアラート・ログの単純なテキスト・バージョンが含まれます。この構成は、Oracle Clusterware 12cリリース1 (12.1.0.2)より前のバージョンとは大幅に異なります。以前のバージョンでは診断ログ・ファイルはデーモンごとに個別のディレクトリに書き込まれていました。

ログ・レベルを変更するには、ORACLE_BASE/crsdata/host_name/crsdiag/ocrcheck.iniファイルを編集します。

traceディレクトリのファイル

Oracle Clusterware 12cリリース1 (12.1.0.2)以降、Oracle Clusterwareプログラムによって書き込まれる診断データ・ファイルは、トレース・ファイルと呼ばれ、.trcファイル拡張子が付けられて、ADRホームのtraceサブディレクトリにまとめられます。これらのファイルのネーミング規則では、通常、ファイル名として実行可能プログラム名が使用され、プログラムの種類によって他のデータが追加されることもあります。

Oracle Clusterwareコマンドライン・プログラムによって書き込まれるトレース・ファイルでは、同じコマンド・プログラムの複数の呼出しとデータを区別するために、オペレーティング・システム・プロセスID (PID)がトレース・ファイル名に含まれます。たとえば、CRSCTLによって書き込まれるトレース・データの名前は、crsctl_PID.trcのような構造になります。この例では、PIDは、10進数として表示されるオペレーティング・システム・プロセスIDです。

Oracle Clusterwareデーモン・プログラムによって書き込まれるトレース・ファイルはファイル名にPIDを含みません。また、ファイル・ローテーション・メカニズムの対象であり、名前に影響があります。ローテーションでは、現在のデーモン・トレース・ファイルが特定のサイズになると、そのファイルが閉じて名前が変更され、新しいトレース・ファイルが開きます。これが決められた回数行われます。その後、デーモンの一番古いトレース・ファイルが破棄され、ローテーション・セットが設定されたサイズに保たれます。

ほとんどのOracle Clusterwareデーモンで使用されるファイル・サイズの制限は25MB、ローテーション・セット・サイズは10ファイルです。この場合、合計250MBのトレース・データが保存されます。特定のデーモンの現在のトレース・ファイルでは、ファイル名としてプログラム名が使用されます。ローテーション内の古いファイルにはファイル名に番号が付けられます。たとえば、Oracle高可用性サービス・デーモン(OHASD)が現在書き込んでいるトレース・ファイルの名前はohasd.trcです。直前にローテーションされたトレース・ファイルの名前はohasd_n.trcです(nは増分する10進数)。nが最も大きいファイルは、最も新しくアーカイブされたトレースです。nが最も小さいファイルは最も古いトレースです。

Oracle Clusterwareエージェントはデーモン・プログラムです。このトレース・ファイルには、エージェントの生成元(OHASDとCluster Ready Servicesデーモン(CRSD)のどちらによって生成されたか)と、エージェントを実行しているオペレーティング・システム・ユーザー名を示す特別なネーミング規則があります。つまり、エージェントでの名前の構造は次のようになります。

origin_executable_user_name

ノート:

この名前構造の最初の2つのアンダースコア(_)は、リテラルとしてトレース・ファイル名に含まれます。user_nameのアンダースコアは、ファイルのネーミング規則の一部ではありません。

この例で、originohasdまたはcrsdexecutableは実行可能プログラム名、user_nameはオペレーティング・システム・ユーザー名です。また、これらはデーモンであるため、エージェント・トレース・ファイルは前述のローテーション・メカニズムの対象になります。ローテーションが発生すると、ファイルに_n接尾辞が追加されます。

Oracle Clusterwareアラート・ログ

トレース・ファイルの他に、Oracle Clusterware ADRホームのtraceサブディレクトリには単純なテキストのOracle Clusterwareアラート・ログが含まれます。名前は常にalert.logです。アラート・ログは、ADRホームのalertサブディレクトリにXMLファイルとしても書き込まれますが、テキスト・アラート・ログは簡単に読むことができます。

Oracle Clusterwareで問題が発生した場合に、まず確認するのがアラート・ログです。Oracle Databaseインスタンスのアラート・ログとは異なり、Oracle Clusterwareアラート・ログのメッセージは、識別番号が付き、ドキュメント化とローカライズ(翻訳)が行われています。Oracle Clusterwareアラート・メッセージは、発生した重要なイベントまたはエラーのほとんどに対して書き込まれます。

ノート:

Oracle Clusterwareトレース・ファイルに書き込まれるメッセージとデータは、通常はドキュメント化も翻訳も行われません。主にMy Oracle Supportが問題を診断するために使用します。

インシデント・トレース・ファイル

Oracle Clusterwareプログラムで特定のエラーが発生すると、ADRインシデントが発生します。ほとんどのケースで、このようなエラーは診断のためにMy Oracle Supportに報告する必要があります。通常、1つのインシデントが発生すると、1つ以上の説明メッセージがOracle Clusterwareアラート・ログに生成されます。

アラート・メッセージに加えて、インシデントの影響を受けたプログラムによって、エラーに関連する診断データを含む特別なトレース・ファイルが別に生成されます。このようなインシデント固有のトレース・ファイルは、ADRホームのtraceサブディレクトリではなくincidentサブディレクトリに収集されます。エラーを報告する際に、通常のトレース・ファイルとインシデント・トレース・ファイルが収集されてオラクル社に提出されます。

関連項目:

インシデントとデータ収集の詳細は、『Oracle Database管理者ガイド』を参照してください。

その他の診断データ

Oracle Clusterwareでは、ADRデータの他にも問題の診断に関連する他のデータを収集または使用します。Oracle Clusterware 12cリリース1 (12.1.0.2)以降、このデータはADRによって使用される同じベース・パス内の別のディレクトリ構造(ORACLE_BASE/crsdata/host_nameという形式)に存在します。この例で、ORACLE_BASEはGrid Infrastructureのインストール時に指定したOracleベース・パス、host_nameはホストの名前です。

任意のホストで、このディレクトリにはいくつかのサブディレクトリが含まれます。問題の発生時に重要になる2つのサブディレクトリの名前は、coreoutputです。coreディレクトリは、コア・ファイルのために使用する通常のADRの場所が使用できない場合(ADRサービスがプログラムで初期化される前など)に、Oracle Clusterwareデーモン・コア・ファイルが書き込まれるところです。outputディレクトリは、Oracle ClusterwareデーモンがC標準出力と標準エラー・ファイルをリダイレクトする場所です。通常、これらのファイルの名前は、実行可能ファイル名にOUTという語と.trcファイル拡張子(トレース・ファイルと同様)が付いて構成されます。たとえば、Cluster Time Synchronization Serviceデーモンからリダイレクトされる標準出力の名前はoctssdOUT.trcです。一般的に、デーモンによってこれらのファイルに書き込まれる内容はごくわずかですが、特定の障害シナリオでは重要なデータが書き込まれる場合があります。

診断収集スクリプト

Oracle Clusterwareでエラーが発生する場合は、diagcollection.pl診断収集スクリプトを実行して、Oracle Clusterwareからトレース・ファイルに診断情報を収集します。診断によって、My Oracle Supportが問題を解決するための追加情報を取得できます。Grid_home/binディレクトリから、このスクリプトをrootとして実行します。

構文

diagcollection.plスクリプトは、次の構文で使用します。

diagcollection.pl {--collect [--crs | --acfs | -all] [--chmos [--incidenttime time [--incidentduration time]]]
   [--adr location [--aftertime time [--beforetime time]]]
   [--crshome path | --clean | --coreanalyze}]

ノート:

diagcollection.plスクリプトのすべての引数の前には、2本のダッシュ(--)を付けます。

パラメータ

表J-3に、diagcollection.plスクリプトで使用されるパラメータのリストおよび説明を示します。

表J-3 diagcollection.plスクリプトのパラメータ

パラメータ 説明
--collect

このパラメータは、次のいずれかの引数とともに使用します。

  • --crs: Oracle Clusterwareの診断情報を収集する場合に、この引数を使用します。

  • --acfs: Oracle ACFSの診断情報を収集する場合に、この引数を使用します。

    ノート: この引数は、UNIXシステムでのみ使用できます。

  • --all: CHM (OS)データを除くすべての診断情報を収集する場合に、この引数を使用します。

    ノート: これはデフォルトです。

  • --chmos: 次のCHMの診断情報を収集する場合に、この引数を使用します。

    --incidenttime time: 指定した時刻からCHM (OS)データを収集する場合に、この引数を使用します。

    ノート: 時刻書式はMM/DD/YYYYHH24:MM:SSです。

    --incidentduration time: 指定した時刻の後の期限内にCHM (OS)データを収集する場合に、この引数を--incidenttimeとともに使用します。

    ノート: 時刻書式はHH:MMです。--incidentdurationを使用しない場合は、--incidenttimeで指定した時刻の後にすべてのCHM (OS)データが収集されます。

  • --adr location: 自動診断リポジトリ・コマンド・インタプリタ(ADRCI)はこの引数を使用して、ADRのために診断情報を収集する場所を指定します。

    関連項目: ADRCIの詳細は、『Oracle Databaseユーティリティ』を参照してください。

  • --aftertime time: 指定した時刻の後にアーカイブを収集する場合に、この引数を--adr引数とともに使用します。

    ノート: 時刻書式はYYYYMMDDHHMISS24です。

  • --beforetime time: 指定した時刻の前にアーカイブを収集する場合に、この引数を--adr引数とともに使用します。

    ノート: 時刻書式はYYYYMMDDHHMISS24です。

  • --crshome path: Oracle Clusterwareホームの場所を上書きする場合に、この引数を使用します。

    ノート: diagcollection.plスクリプトは、通常、システム構成(olr.locファイルまたはWindowsレジストリのいずれか)からOracle Clusterwareホームの場所を導出するため、この引数は不要です。

--clean

diagcollection.plスクリプトで収集された診断情報をクリーンアップする場合に、このパラメータを使用します。

ノート: このパラメータは、--collectとともに使用することはできません。

--coreanalyze

コア・ファイルから情報を抽出してテキスト・ファイルに格納する場合に、このパラメータを使用します。

ノート: このパラメータは、UNIXシステムでのみ使用できます。

Oracle拡張クラスタの記憶域の分割

複数の異なるサイト間のプライベート・ネットワークがオンラインで使用可能になったが、その記憶域の分割が失敗した場合に記憶域の分割が発生します。

Oracle Automatic Storage Management (Oracle ASM)が、3つのサイト(2つのデータ・サイトと1つのクォーラム・サイト)を持つ一般的な拡張クラスタ構成で記憶域の分割を検出すると、いずれかのデータ・サイトが終了し、それ自体およびそこに含まれていたノードは他から隔離されます。Oracle ASMが隔離されたサイトで起動しようとすると、エラーCRS-2971が発生します。

次のように問題を解決します。

  1. 記憶域の分割の原因となったサイト間接続の問題を解決します。
  2. 次のようにして、すべてのOracle ASMディスク・グループが、隔離されていないサイト上にマウントされていることを確認します。
    SELECT group_number, name, state FROM v$asm_diskgroup_stat;
  3. ディスク・グループごとに次のコマンドを実行して、これらのディスク・グループに属するオンライン・ディスクのリストを取得します。
    SELECT path FROM v$asm_disk_stat WHERE group_number=group_number AND state = 'NORMAL' AND mode_status = 'ONLINE';
    
  4. 前のステップで取得したパスごとに、次のように、隔離されたサイトからディスクにアクセスできることを確認します。
    asmcmd lsdsk -I --member 'path'
  5. 前述の検証が成功した場合は、次のように隔離されたサイトを再インスタンス化します。
    crsctl modify cluster site site_name -s rejuvenate

ローリング・アップグレードおよびドライバのインストールに関する問題

アップグレード中に、Oracle Clusterware root.shスクリプトを実行していると、次のメッセージが表示される場合があります。

  • ACFS-9427 「ADVM/ACFSドライバのアンロードに失敗しました。」システムの再起動をお薦めします。

  • ACFS-9428 「ADVM/ACFSドライバのロードに失敗しました。」システムの再起動をお薦めします。

初期(最初の)ノードのアップグレード中にこのようなエラー・メッセージが表示された場合、次の手順を行います。

  1. クラスタ内の他のすべてのノードでアップグレードを完了します。

  2. 初期ノードを再起動します。

  3. 初期ノードで、root.shスクリプトを再度実行します。

  4. Oracle Grid InfrastructureをインストールしたユーザーとしてGrid_home/gridSetup -executeConfigToolsスクリプトを実行し、アップグレードを完了します。

初期ノード(インストールを開始したノード)以外のノード:

  1. エラーが発生したノードを再起動します。

  2. エラーが発生するノードで、rootとしてorainstRoot.shスクリプトを実行します。

  3. ディレクトリをGridホームに変更し、エラーが発生するノードでroot.shスクリプトを実行します。

ゾーン委任のテスト

関連項目:

この手順で言及されているCRSCTLコマンドの使用の詳細は、「Oracle Clusterware制御(CRSCTL)ユーティリティ・リファレンス」を参照してください。

次の手順を使用して、ゾーン委任をテストします。

  1. rootとして次のコマンドを実行し、GNS VIPを起動します。

    # crsctl start ip -A IP_name/netmask/interface_name
    

    interface_nameは、パブリック・ネットワークのパブリック・インタフェースおよびネットマスクである必要があります。

  2. 次のコマンドを実行し、GNS VIPでテストDNSサーバーを起動します(ポート番号が1024より小さい場合はrootとしてこのコマンドを実行する必要があります)。

    # crsctl start testdns -address address [-port port]
    

    このコマンドによって、指定したIPおよびポートで、DNSが転送したパケットをリスニングするテストDNSサーバーが起動されます。

  3. rootとして次のコマンドを実行し、GNS VIPが他のノードから到達可能であることを確認します。

    crsctl status ip -A IP_name
    
  4. 次のコマンドを実行し、直接DNSサーバーに問い合せます。

    crsctl query dns -name name -dnsserver DNS_server_address
    

    このコマンドは、次のエラーが発生して失敗します。

    CRS-10023: 名前asdf.foo.comのドメイン名参照に失敗しました。オペレーティング・システム・エラー: ホスト名参照エラー

    Grid_home/log/host_name/client/odnsd_*.logを参照して、問合せがテストDNSサーバーで受信されたかどうかを確認します。これにより、DNS問合せがファイアウォールによってブロックされていないことが確認されます。

  5. 次のコマンドを実行し、GNSドメイン問合せのDNS委任を問い合せます。

    crsctl query dns -name name

    ノート:

    このステップと前のステップの違いは、-dnsserver DNS_server_addressオプションを指定しないことのみです。これにより、コマンドは/etc/resolv.confで構成されているネーム・サーバーに問い合せます。前のステップと同様に、コマンドは同じエラーが発生して失敗します。再度、odnsd*.logを参照して、odnsdで問合せが受信されたことを確認します。ステップ5が成功し、ステップ6が成功しない場合は、DNS構成を確認する必要があります。

  6. 次のコマンドを実行し、テストDNSサーバーを停止します。

    crsctl stop testdns -address address
    
  7. rootとして次のコマンドを実行し、GNS VIPを停止します。

    crsctl stop ip -A IP_name/netmask/interface_name

Oracle Clusterwareアラート

すでに説明したように、Oracle Clusterwareによって様々な重要なイベントに関するメッセージがADRアラート・ログに書き込まれます。通常、アラート・ログのメッセージはローカライズ(翻訳)され、メッセージの詳細の検索に使用できるメッセージIDが付いています。Oracle Clusterwareに問題があるように見える場合には、まずアラート・ログを確認します。

次に、2つの異なるCRSデーモン・プロセスのアラート・ログ・メッセージの例を示します。

2014-07-16 00:27:22.074 [CTSSD(12817)]CRS-2403:The Cluster Time Synchronization Service on host stnsp014 is in observer mode.
2014-07-16 00:27:22.146 [CTSSD(12817)]CRS-2407:The new Cluster Time Synchronization Service reference node is host stnsp013.
2014-07-16 00:27:22.753 [CTSSD(12817)]CRS-2401:The Cluster Time Synchronization Service started on host stnsp014.
2014-07-16 00:27:43.754 [CRSD(12975)]CRS-1012:The OCR service started on node stnsp014.
2014-07-16 00:27:46.339 [CRSD(12975)]CRS-1201:CRSD started on node stnsp014.

次に、クラスタ再構成後のOracleクラスタ時刻同期化サービス(OCTSS)の起動例を示します。

2014-07-15 23:51:17.532 [CTSSD(12813)]CRS-2403:The Cluster Time Synchronization Service on host stnsp014 is in observer mode.
2014-07-15 23:51:18.292 [CTSSD(12813)]CRS-2407:The new Cluster Time Synchronization Service reference node is host stnsp013.
2014-07-15 23:51:18.961 [CTSSD(12813)]CRS-2401:The Cluster Time Synchronization Service started on host stnsp014.

Diagnostic Record Unique IDを使用したアラート・メッセージ

Oracle Database 11gリリース2(11.2)以降では、特定のOracle Clusterwareメッセージに、「(:」および「:)」で囲まれたテキスト識別子が含まれます。通常、この識別子は「Details in...」で始まるメッセージ・テキストの一部で、次の例のようなOracle Clusterware診断ログ・ファイルのパスおよび名前が含まれます。この識別子はDRUID (Diagnostic Record Unique ID)と呼ばれます。

2014-07-16 00:18:44.472 [ORAROOTAGENT(13098)]CRS-5822:Agent
 '/scratch/12.1/grid/bin/orarootagent_root' disconnected from server. Details at
 (:CRSAGF00117:) in /scratch/12.1/grid/log/stnsp014/agent/crsd/orarootagent_
root/orarootagent_root.log.

DRUIDは、外部製品のメッセージを、診断ログ・ファイルのエントリおよび内部Oracle Clusterwareプログラム・コードの場所に関連付けるために使用されます。これらはユーザーには直接関係ありませんが、主に、問題を診断するときにMy Oracle Supportによって使用されます。