ヘッダーをスキップ

Oracle Enterprise Manager拡張ガイド 10gリリース5（10.2.0.5） B54134-01 |
| 目次 | 索引

戻る | 次へ |

# 4 XMLの検証

新しい管理プラグイン・ターゲット定義ファイルの定義の成功は、XMLの正確さに依存します。管理プラグインのターゲット・メタデータ・ファイルおよび収集ファイルの構文および構造が正しいことが不可欠です。XMLファイルの開発を支援するために、Enterprise ManagerにはILINTというXML検証ツールが用意されています。この章の内容は次のとおりです。

- ILINTとは

- ILINTを使用する前に

- ILINTの使用方法

## ILINTとは

インテグレータLINT（ILINT）は、新規ターゲット・タイプの定義中にターゲット・メタデータを検証するのを支援するツールです。ターゲット・メタデータの作成中にターゲット、インスタンスおよび収集メタデータに対して記述するXMLのリアルタイム検証を実行できます。ILINTでは、データの正確性を検証するために新規ターゲット・タイプのランタイム・データ収集もテストできます。

このツールをインテグレータ認証ツールとして使用して、ターゲット・タイプ・メタデータが許容される標準に準拠していることも確認できます。

### ILINTで実行される検証のタイプ

ILINTでは、XMLの正確性をチェックする静的検証と、収集されたデータの正確性をチェックする動的検証の2種類の検証を実行できます。ILINTは、ターゲット・タイプ・メタデータ・ファイルを対応するDTD（$AGENT_HOME/sysman/admin/dtds）および管理エージェント・セマンティクスと比較することにより、XML構文が適切であることを検証します。

#### 静的XML検証

ILINTは、経験則的なチェックを実行し、管理リポジトリ制約をチェックし、次のファイルでXML構文を検証することにより、静的XML検証を実行します。

- <target_metadata>.xml

  ディレクトリの場所: $AGENT_HOME/sysman/admin/metadata

- <target_collection>.xml

  ディレクトリの場所: $AGENT_HOME/sysman/admin/default_collection

- targets.xml（ターゲット・リスト・ファイル）

  ディレクトリの場所: $AGENT_HOME/sysman/emd

  注意: 一般に、targets.xmlファイルは手動で編集しないでください。ただし、新規メタデータ・ファイルの開発時には、テストの目的で特定のターゲット・インスタンス情報をターゲット・インスタンス・ファイルに追加することが必要な場合があります。管理エージェントはtargets.xmlファイルに含まれるインスタンス固有の情報に依存するため、targets.xmlファイルは構造的および構文的に正しい必要があります。

具体的には、ILINTは検証パーサーを使用して、特定のターゲット・タイプのメタデータおよびデフォルトの収集（存在する場合）を検証します。ILINTは、targets.xmlファイルで定義されているすべてのターゲット・プロパティ（静的と動的の両方）を使用します。

経験則的な制約チェック

- 収集されているメトリックが多すぎないか。特定のターゲット・タイプに対して50を超えるメトリックが収集されている場合、ILINTは警告メッセージを生成します。

- 監視されているターゲットが多すぎないか。特定のターゲット・タイプに対して50を超えるターゲットが監視されている場合、ILINTは警告メッセージを生成します。

- メトリック収集間隔が短すぎないか。特定のメトリック収集間隔が5分未満の場合、ILINTは警告メッセージを生成します。

管理リポジトリ制約に基づくターゲット・メタデータ制限

- 列名の幅が64文字を超えていないかどうかを確認します。

- 5つ以下のキー列が設定されていることを確認します。

- メタデータ名、タイプ、メトリック名および列名の文字が有効であることを確認します。

#### 動的検証

動的検証では、fetchletを通じて特定のメトリックを実行し、正確性の確認と出力の表示を行います。

動的検証により、あるターゲット・タイプに対して収集されるデータの正確性をチェックできます。ILINTの動的XML検証では、新規ターゲットに対して定義されているすべてのメトリックが実行され、メトリック・ブラウザと非常によく似た形式で出力が表示されます。メトリック・ブラウザの詳細は、「新しいターゲット・タイプ定義の検証」を参照してください。

動的検証の実行中に、ILINTは指定されたメトリックを実行し、すべてのプロパティ（動的および静的）を使用してエラーをチェックします。その後、ILINTは次の内容を含む出力表を生成します。

- ターゲット・リスト

- 各ターゲットのメトリック・リスト

- メトリック結果

#### メタデータ・バージョンのチェック

Enterprise Manager Grid Controlコンソールで特定のターゲット・タイプのメトリックを表示するためには、構文ルールに従っている必要があります。ILINTを使用して、メタデータ・ファイルの現在のバージョンが同じメタデータ・ファイルの以前のバージョンと互換性があることも確認できます。この互換性チェックは厳格です。ILINTで比較される2つのターゲット・メタデータ・ファイルが構文的に同一である必要があります。

### ILINTの出力

ILINTは、2種類のメッセージを生成します。それぞれ、STDOUTおよびSTDERRという異なる出力ファイル・ストリームに出力されます。

メッセージ・タイプ

- 情報/警告: XMLが技術的に正確であっても、データ収集/解釈の不正確性またはフレームワーク・パフォーマンスの問題の原因となる可能性がある場合に生成されます。動的検証中に生成される表形式データも、このメッセージ・クラスの一部です。

  情報および警告メッセージはSTDOUTに出力されます。

- エラー: XMLが技術的に不正確であるか、指定されたパラメータが管理リポジトリ制約に違反しています。

  エラー・メッセージはSTDERRに出力されます。

別の出力ファイルの指定

ILINTの実行中に、別のSTDOUTおよびSTDERR出力ファイルを指定できます。ファイル指定は、環境で使用されているオペレーティング・システムまたはシェル（あるいはその両方）によって異なります。

例4-1 STDOUTおよびSTDERRの指定（ksh、bashおよびsh）

    emctl ilint ... 1>my_stdout_file 2>my_stderr_file

例4-2 STDOUTおよびSTDERRの指定（cshおよびtcsh）

    (emctl ilint ... >my_stdout_file) >&my_stderr_file

構文的に書式設定されたXML出力の生成

ILINTでは、オプションで、構文的に一貫性のあるメタデータ・ファイルのビューを生成できます。ILINTのオプションおよび有効なXMLの生成の詳細は、「構文的に正しいXMLの生成」を参照してください。

## ILINTを使用する前に

XMLファイルを検証するために、ILINTは、検証されるXMLに関連付けられているDTD（Document Type Declaration）の場所を認識する必要があります。適切なDTDへの相対パスを指定するDOCTYPEディレクティブが各XMLファイルに含まれていることを確認してください。

Enterprise Managerフレームワークでは次のDTDが使用されます。

- $AGENT_HOME/sysman/admin/dtds/TargetMetadata.dtd

- $AGENT_HOME/sysman/admin/dtds/TargetCollection.dtd

- $AGENT_HOME/sysman/admin/dtds/TargetInstance.dtd

次の例では、$AGENT_HOME/sysman/admin/default_collectionディレクトリにあるターゲット収集XMLファイルまたは$AGENT_HOME/sysman/admin/collectionディレクトリにあるインスタンス固有の収集ファイルをテストする場合に使用する必要のあるDOCTYPE宣言を示します。

例4-3 DOCTYPE宣言

    <!DOCTYPE TargetCollection SYSTEM "../dtds/TargetCollection.dtd">

プライベート外部DTD（複数のドキュメント間で共有され、1人の作成者または作成者のグループによる使用を意図しているDTD）は、キーワードSYSTEMにより識別されます。この場合、管理エージェントを実行しているマシンに対して適切なOS権限を持つ人物が作成者とみなされます。

## ILINTの使用方法

ILINTは、Enterprise Managerコマンドライン・ユーティリティの一部であり、emctlオプションとしてアクセスされます。ILINTは次の構文を使用します。

emctl ilint [-o <test_name> [-p]] -m <target_metadata.xml> [-m2 <compare_metadata.xml][-c <target_collection.xml>] [-i <target_instance.xml>] [-t <target_name>] [-r <metric_name>] [-d <0|1|2|3>]

表4-1 ILINTオプション

オプション | 説明
--- | ---
-o <test_name> | メタデータ・ディレクトリ、デフォルトの収集ディレクトリと収集ファイルおよびtargets.xmlファイルを自動的に探します。 -oオプションが指定されている場合は、次の条件が適用されます。 オプション-m、-m2、-c、-iのいずれかの値を指定する場合は、フルパスとファイル名ではなくファイル名のみを使用する必要があります。 通常は、オプション-c（ターゲット収集ファイル）を省略する必要があります。 通常は、オプション-i（ターゲット・インスタンス・ファイル）を省略する必要があります。 -pが指定されている場合、書式設定されたメタデータ出力ファイルには接頭辞としてtest_nameが必要です。
-p | 構文的に書式設定されたXMLをメタデータ・ファイルに対して生成します。このオプションは、-oオプションが指定されている場合にのみ使用できます。
-m <target_metadata.xml> | チェックするメタデータ・ファイルのフルパスとファイル名。注意: -oオプションが指定されている場合、値はファイル名のみとし、フルパスは省略する必要があります。これは、ILINTの唯一の必須オプションです。
-m2 <compare_metadata.xml> | -mオプションで指定されたターゲット・メタデータ・ファイルと比較する第2のメタデータ・ファイルのフルパスおよびファイル名。このオプションを使用して、メタデータ・ファイル間のバージョンの互換性をチェックできます。注意: -oオプションが指定されている場合、値はファイル名のみとし、フルパスは省略する必要があります。
-c <target_collection.xml> | ターゲット収集ファイルのフルパスとファイル名。注意: -oオプションが指定されている場合、値はファイル名のみとし、フルパスは省略する必要があります。
-i <target_instance.xml> | ターゲット・インスタンス・ファイルのフルパスとファイル名。注意: -oオプションが指定されている場合、値はファイル名のみとし、フルパスは省略する必要があります。
-t <target_name> | 検証するターゲットの名前（targets.xmlファイルで指定されています）。
-r <metric_name> | 実行するメトリックの名前。
-d (0-3) | デバッグ・レベルを設定します（デフォルト値は1です）。このオプションは、ILINTで提供される情報のタイプを指定します。 0=エラー・メッセージのみ 1=警告メッセージとエラー・メッセージ 2=情報メッセージ、警告メッセージおよびエラー・メッセージ 3=すべてのメッセージ（デバッグ・メッセージ、情報メッセージ、警告メッセージおよびエラー・メッセージ）

### ILINTの例

次の例では、前に説明した一般的なILINT使用方法を示します。

#### 静的検証

使用方法

    emctl ilint
    -o <test_name>
    -d <0-3>
    -i targets.xml
    -m <target_metadata.xml>
    -t <target_name>

例4-4 ターゲット・メタデータ・ファイルの検証

    > emctl ilint -o meta_test -d 0 -i targets.xml -m my_database.xml -t my_database3

メタデータ・ディレクトリおよびファイル（-m my_database.xml）が自動的に特定され、テスト名meta_test（-o meta_test）と関連付けられます。メタデータ・ファイルは、targets.xmlファイルで定義されているデータベースmy_database3（-t my_database3）に照らして検証されます。エラー・メッセージのみ返されます（-d 0）。

例4-5 ターゲット収集ファイルの検証

    > emctl ilint -o collect_test -d 3 -i targets.xml -m co_database.xml -c my_collection.xml -t my_database3

収集ディレクトリおよびファイル（-c my_collection.xml）が自動的に特定され、テスト名collect_test（-o collect_test）と関連付けられます。この検証は完全デバッグ・モード（-d 3）で実行されるため、すべてのエラー、警告および情報メッセージが返されます。

例4-6 制限されたメタデータ検証（ターゲット・タイプ・メタデータ・ファイルの検証のみ）

    emctl ilint -o test_name -d 0 -i non_existent_targets.xml -d 0 -m my_target_metadata.xml -t non_existent_target

この例で示すように、存在しないtargets.xmlファイルと存在しないターゲットを指定することにより、制限されたターゲット・タイプ・メタデータ・ファイルXML検証を実行できます。制限された検証では、ターゲット・メタデータ・ファイルで使用されるXML構文およびリポジトリ制約によるメタデータ内の制限が迅速にチェックされます。

#### 動的検証

使用方法

    emctl ilint
    -o <test_name>
    -d <0-3>
    -i targets.xml
    -m <target_metadata.xml>
    -t <target_name>
    -r <metric_name>

例4-7 メトリックの検証

    emctl ilint -o test_dynamic -d 0 -i targets.xml -m database.xml -t payroll_db -r Database_Resource_Usage

この例では、ILINTはデータベース・メトリックDatabase_Resource_Usageを検証します。メタデータ・ディレクトリおよびファイル（-m database.xml）が自動的に特定され、テスト名test_dynamic（-o test_dynamic）と関連付けられます。メトリックは、targets.xmlファイルで定義されているpayroll_db（-t payroll_db）という名前のターゲット・データベースに照らして検証されます。エラー・メッセージのみ返されます（-d 0）。

#### メタデータ・バージョンの互換性のチェック

使用方法

    emctl ilint
    -o <test_name>
    -d <0-3>
    -i targets.xml
    -m <current_target_metadata.xml>
    -m2 <old_target_metadata.xml>
    -t <target_name>

例4-8 ターゲット・メタデータ・バージョンの検証

    emctl ilint -o version_test -d 3 -i targets.xml -m database.xml -m2 database.xml -t payroll_db

この例では、ILINTはターゲット・タイプ・メタデータ・ファイルdatabase.xmlの2つのバージョンを比較します。-oオプションが使用されているため、ILINTはdatabase.xmlの最新バージョンを$AGENT_HOME/sysman/admin/metadataで探し、このファイルの旧バージョンを$AGENT_HOME/sysman/admin/metadata/oldで探します。

注意: デフォルトのディレクトリの場所を使用しない場合は、-o <test_name>オプションを省略し、-mおよび-m2に絶対パス名を指定します。

#### 構文的に正しいXMLの生成

使用方法

    emctl ilint
    -o <test_name>
    -i targets.xml
    -m <target_metadata.xml>
    -m2 <old_target_metadata.xml> (optional)
    -p

XML出力は、<test_name>.xml.tmp1という名前のファイルに送信されます。

例4-9 構文的に正しいXMLの生成

    emctl ilint -o test_generate -i targets.xml -m my_database.xml -p

この例からのXML出力は、ファイルtest_generate.xml.tmp1に自動的に送信されます。-m2オプションが指定されている場合、第2のターゲット・メタデータ・ファイルのXML出力はtest_generate.xml.tmp2に送信されます。

### 使用上の注意

- XML/DTDを解析/検証できない場合は、エラー・メッセージが解釈しにくくなる傾向があります。Java XMLパーサーは、より情報的なメッセージを生成します。

- XMLファイル内のDOCTYPEディレクティブ内のDTDパスは相対パスである必要があります。

- デバッグ・モードでは、収集がValidIf要素の値に依存するメトリックに関する詳細情報が表示されません。