プライマリ・コンテンツに移動
Oracle® Enterprise Manager Cloud Control管理者ガイド
12c リリース5 (12.1.0.5)
B65081-16
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 通知の使用

通知システムによって、特定のインシデント、イベントまたは問題が発生したときにEnterprise Manager管理者に通知できます。


注意:

この章では、インシデント管理に精通していることを前提とします。インシデント管理を介したITインフラストラクチャの監視と管理の詳細は、第3章「インシデント管理の使用」を参照してください。

管理フレームワークの重要な部分として、通知は、特定のインシデント、イベントまたは問題の発生時にオペレーティング・システム・コマンド(スクリプトを含む)やPL/SQLプロシージャの実行などのアクションも実行できます。この機能により、ITプラクティスを自動化できます。たとえば、インシデント(データベースの動作(稼働/停止)ステータスの監視など)が発生したときに、通知システムによってOSスクリプトを介して社内のトラブル・チケットを自動的に開き、担当のITスタッフが適時に応答できるようにします。

また、Enterprise Managerの通知システムでは、Simple Network Management Protocol(SNMP)トラップを使用して、HP OpenViewなどのSNMP対応サード・パーティ・アプリケーションにEnterprise Managerで発行されたイベントのトラップを送信できます。一部の管理者は、特定のメトリックがしきい値を超えた時点でサード・パーティ・アプリケーションに通知を送信する場合があります。

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

4.1 通知の設定

すべてのEnterprise Manager管理者は、各自の電子メール通知を設定できます。スーパー管理者は、他のEnterprise Manager管理者の通知も設定できます。

4.1.1 通知用のメール・サーバーの設定

Enterprise Managerで電子メール通知の送信を行うには、あらかじめ、通知システムで使用する送信メール(SMTP)サーバーを設定する必要があります。設定後は、自分の電子メール通知を定義できます。スーパー管理者権限を持っている場合は、他のEnterprise Manager管理者の通知も定義できます。

送信メール(SMTP)サーバーは、通知メソッド・ページ(図4-1)で指定します。通知メソッド・ページを表示するには、「設定」メニューから、「通知」「通知メソッド」の順に選択します。


注意:

Enterprise Managerの通知システムを構成するには、スーパー管理者権限が必要です。このような権限には、次のものがあります。
  • SMTPサーバーの設定

  • 通知メソッドの定義

  • 通知電子メール形式のカスタマイズ


1つ以上の送信メール・サーバー名、(必要な場合は)メール・サーバー認証資格証明(「ユーザー名」、「パスワード」および「パスワードの確認」)、通知メッセージの送信者として表示する名前、および電子メール通知の送信に使用する電子メール・アドレスを指定します。送信者のメール・アドレスと呼ばれるこのアドレスは、指定する各メール・サーバー上で有効なアドレスである必要があります。電子メール通知の送信時に問題が発生した場合は、この電子メール・アドレスにメッセージが送信されます。例4-1は通知メソッド・エントリの例を示しています。

例4-1 メール・サーバーの設定

  • 送信メール(SMTP)サーバー - smtp01.example.com:587, smtp02.example.com

  • ユーザー名 - myadmin

  • パスワード - ******

  • パスワードの確認 - ******

  • 送信者ID - Enterprise Manager

  • 送信者の電子メール・アドレス - mgmt_rep@example.com

  • セキュアな接続を使用: いいえ: 電子メールは暗号化されません。SSL: 電子メールはSecure Sockets Layer protocolを使用して暗号化されます。使用可能な場合はTLS: メール・サーバーがTransport Layer Security(TLS)プロトコルをサポートしている場合、電子メールはTLSを使用して暗号化されます。サーバーがTLSをサポートしない場合、電子メールは自動的にプレーン・テキストで送信されます。

図4-1 メール・サーバーの定義

図4-1の説明は図の下
「図4-1 メール・サーバーの定義」の説明


注意:

このページで指定する電子メール・アドレスは、通知の送信先の電子メール・アドレスではありません。この電子メール・アドレス(通知の送信先)はパスワードおよび電子メール・ページで指定する必要があります。「設定」メニューから、「プリファレンス」「Enterprise Managerのパスワードおよび電子メール」の順に選択します。

標準的な使用方法として、各ユーザーは独自の電子メール・アドレスを持つ必要があります。


電子メール・サーバーの構成後、「メール・サーバーのテスト」をクリックして電子メール設定を検証します。「送信者の電子メール・アドレス」フィールドで指定した電子メール・アカウントで、電子メール・メッセージが受信されていることを確認する必要があります。

複数のメール・サーバーを定義すると、電子メール通知配信の信頼性が向上します。少なくとも1つの電子メール・サーバーが稼働している場合は、電子メール通知が配信されます。通知の負荷はOMSによって複数の電子メール・サーバーに分散され、20通の電子メールが送信された後でOMSがこれらのサーバーを切り替えます(サーバーは可用性に従って割り当てられます)。切替えは、oracle.sysman.core.notification.emails_per_connection emomsプロパティで制御されます。

SLB使用時のCloud ControlコンソールURLの設定

サーバー・ロード・バランサ(SLB)がOMSインスタンス用に構成された複数OMS環境がある場合、Enterprise Managerからの電子メールが、電子メールの発信元である特定のOMS URLではなく、SLB URLを介してEnterprise Managerコンソールにユーザーを向けるように、コンソールURLを更新する必要があります。

コンソールURLを変更する手順:

  1. 「設定」メニューから、「Cloud Controlの管理」を選択し、「状態の概要」を選択します。管理サービスとリポジトリ・ページが表示されます。

  2. 管理サービスとリポジトリ・ページの「概要」セクションで、「コンソールURL」ラベルの「追加/編集」をクリックします。

    コンソールURLの編集

    コンソールURLページが表示されます。コンソールURLの変更ページ

  3. コンソールURLをSLB URLに変更します。

    次に例を示します。

    http://www.example.com

    https://www.example.com:4443.

    パス(一般的に/em)は指定しないでください。

  4. 「OK」をクリックします。

4.1.2 自分用の電子メールの設定

電子メールで通知を受信するには、パスワードおよび電子メール・ページ(「設定」メニューから、「プリファレンス」「Enterprise Managerのパスワードおよび電子メール」の順に選択)で自分の電子メール・アドレスを指定する必要があります。通知用の電子メール・アドレスを定義するのみでなく、電子メール・アドレスで使用する通知メッセージ形式(長い、短い、ページャ)を関連付けます。

電子メールを設定するには、次の3つの手順を実行します。

手順1: 電子メール・アドレスの定義

手順2: 通知スケジュールの設定

手順3: 電子メールを受信するためのインシデント・ルールのサブスクライブ。

4.1.2.1 電子メール・アドレスの定義

電子メール・アドレスには最大128文字を使用できます。電子メール・アドレスの数の上限はありません。

電子メール・アドレスを追加する手順は、次のとおりです。

  1. 「ユーザー名」ドロップダウン・メニューから、「Enterprise Managerのパスワードおよび電子メール」を選択します。

  2. 「行の追加」をクリックして、新規の電子メール入力フィールドを「電子メール・アドレス」表に作成します。

  3. Enterprise Managerアカウントに関連付けられている電子メールを指定します。Enterprise Managerから受信するすべての電子メール通知が、指定した電子メール・アドレスに送信されます。

    たとえば、user1@myco.comなどになります。

    電子メール・アドレスの電子メール・タイプ(メッセージ形式)を選択します。電子メール(長い形式)では、詳細情報を含むHTML形式の電子メールが送信されます。例4-2は、長い書式を使用する一般的な通知を示します。

    電子メール(短い形式)「ページャ(短い形式)」(例4-3)は、構成可能な文字数に制限された短いテキストの電子メールを送信するため、電子メールをSMSメッセージまたはページャとして受信できます。メッセージの内容は、すべて件名またはすべて本文に入れるか、または表題と本文に分割して送信できます。

    たとえば、最後のケースでは、件名には重大度タイプ(「クリティカル」など)とターゲット名が含まれます。本文には、重大度の発生時刻と重大度メッセージが含まれます。メッセージの長さは制限されているため、この情報の一部が切り捨てられることがあります。切り捨てられた場合、メッセージの最後は省略記号になります。「ページャ(短い形式)」アドレスは、インシデント・ルールでページャ機能をサポートするために使用されます。インシデント・ルールで、ルールの作成者は、一部のユーザーがクリティカルな問題のページャを受け取るように指定できます。

  4. 「適用」をクリックして電子メール・アドレスを保存します。

例4-2 メトリック・アラート用の長い電子メール通知

Target type=Host Target name=machine6140830.example.com Message=Filesystem / has 54.39% available space, fallen below warning (60) or critical (30) threshold. Severity=Warning Event reported time=Apr 28, 2011 2:33:55 PM PDT Event Type=Metric Alert Event name=Filesystems:Filesystem Space Available (%) Metric Group=FilesystemsMetric=Filesystem Space Available (%)Metric value=54.39Key Value=/Key Column 1=Mount PointRule Name=NotifRuleSet1,Event rule1 Rule Owner=SYSMAN

例4-3 アラート用の短い書式の電子メール通知

Subject is :
EM:Unreachable Start:myhost
Body is :
Nov 16, 2006 2:02:19 PM EST:Agent is Unreachable (REASON = Connection refused) 
but the host is UP

電子メール(短い形式)および「ページャ(短い形式)」形式の詳細

Enterprise Managerでは、ページングやSMSなどのメッセージ・サービスを直接はサポートしていませんが、かわりに外部のゲートウェイを使用し、電子メールからページへの変換などを実行しています。Enterprise Manager 12cからは、通知システムで、「ページ」または「電子メール」として電子メール・アドレスを明示的にタグ付けできるようになりました。この2つの通知方法の明示的なシステムの違いにより、インシデント・ルールの複数アクション機能を利用できます。たとえば、電子メールとページの違いは、イベント重大度が「警告」の場合に電子メールを送信し、重大度が「クリティカル」の場合にページを表示する場合に必要です。この機能をサポートするために、短い形式の電子メールの省略バージョンを送信するページャ形式が使用可能になりました。


注意:

ページャを受け取るには、「インシデント・ルール」の「ページ通知」オプションに管理者を追加する必要があります。

4.1.2.2 通知スケジュールの設定

電子メール通知アドレスの定義後、通知スケジュールを定義する必要があります。たとえば、電子メール・アドレスがuser1@myco.com、user2@myco.comおよびuser3@myco.comの場合、通知スケジュールの各期間について、これらの電子メール・アドレスの中から1つ以上を選択して使用できます。ユーザー・プリファレンス(Enterprise Managerのパスワードと電子メールページ)で指定した電子メール・アドレスのみを通知スケジュールで使用できます。


注意:

最初に電子メール・アドレスを入力すると、常時毎週の通知スケジュールが自動的に設定されます。監視要件に合わせてこのスケジュールを確認し、変更できます。

通知スケジュールとは、コール時スケジュール(Enterprise Managerにより通知の送信に使用される期間および電子メール・アドレス)を指定するときに使用する反復スケジュールです。各管理者には、通知スケジュールが1つのみ存在します。管理者に通知を送信する必要がある場合、Enterprise Managerにより管理者の通知スケジュールが参照され、使用する電子メール・アドレスが決定されます。スーパー管理者であるか、通常のEnterprise Manager管理者であるかによって、通知スケジュールを定義するプロセスは若干異なります。

図4-2 「通知スケジュール」ページ

図は、「通知スケジュール」ページを示しています。

通常のEnterprise Manager管理者が自分の通知スケジュールを定義する手順は、次のとおりです。

  1. 「設定」メニューから、「通知」「通知スケジュール」の順に選択します。

  2. 「通知スケジュール」ページの指示に従い、電子メールを受け取る時刻を指定します。

4.1.2.3 インシデント・ルールの電子メールを受信するようにサブスクライブ

インシデント・ルールとは、インシデントを構成する特定のイベントについて通知を送信する基準を指定する、ユーザー定義のルールです。インシデント・ルール・セットは、名前が示すように、同じインシデントに関連付けられている1つ以上のルールから構成されます。

インシデント・ルールの作成時に、関心のあるターゲット、ルールを適用するイベントのタイプなどの基準を指定します。具体的に、指定されたルールでは、対象となる基準と、これらの通知の送信に使用する通知メソッド(電子メールなど)を指定できます。たとえば、データベースが停止した場合やデータベース・バックアップ・ジョブが失敗した場合に、電子メールが送信され、ログ・トラブル・チケット通知メソッドがコールされるようなルールを設定できます。または、ホストのCPUまたはメモリー使用率がクリティカル重大度に到達した場合に、SNMPトラップが他の管理コンソールに送信されるルールを定義することもできます。単一のルールで、特定の条件に基づく複数のアクションを実行できるという事実により、通知の柔軟性がさらに向上します。例: マシンのメモリー使用状況などの条件を監視する場合、「警告」のインシデント重大度(メモリー使用率が80%)に対して管理者に電子メールを送信し、重大度が「クリティカル」(メモリー使用率が99%)の場合は管理者に即時にページを表示します。

すでに作成したルールをサブスクライブできます。

  1. 「設定」メニューで「インシデント」「インシデント・ルール」の順に選択します。

  2. インシデント・ルール - すべてのエンタープライズ・ルール・ページで、該当するインシデントのエスカレーション・ルールを含むルール・セットをクリックし、「編集」をクリックします。ルールはルール・セットのコンテキストで作成されます。

    注意: 既存のルール・セットがない場合は、「ルール・セットの作成」をクリックしてルール・セットを作成します。次に、ルール・セットの作成の一環としてルールを作成します。

  3. ルール・セットの編集ページの「ルール」セクションで、変更するエスカレーション・ルールをハイライトして「編集」をクリックします。

  4. アクションの追加ページに移動します。

  5. インシデントをエスカレートするアクションを選択し、「編集」をクリックします。

  6. 「通知」セクションで、「電子メールCc」リストにDBAを追加します。

  7. 「続行」をクリックしてルール・セットの編集ページに戻り、「保存」をクリックします。

即時利用可能なインシデント・ルール

Enterprise Managerには、最も一般的な監視条件に対応する次の2つのインシデント・ルール・セットが付属しています。

  • すべてのターゲットのインシデント管理ルールセット

  • 自己更新のイベント管理ルールセット

即時利用可能なインシデント・ルールで定義された条件が要件を満たす場合は、前の項で説明したサブスクライブ手順を使用して、ルールに定義されている条件の電子メール通知を受信するようにサブスクライブできます。

すべてのターゲットに設定されている即時利用可能なインシデント・ルールは、デフォルトで警告アラートの電子メールを生成しません。

独自のインシデント・ルールの作成

独自のカスタム・ルールを定義できます。次の手順では、スーパー管理者ではない管理者がインシデント・ルールを作成するプロセスを説明します。

独自のインシデント・ルールを作成する手順は、次のとおりです。

  1. 「設定」メニューで「インシデント」「インシデント・ルール」の順に選択します。

    インシデント・ルール・ページが表示されます。このページから、新しいルールを追加できる新しいルール・セットを作成できます。または、必要な権限がある場合は、新しいルールを既存のルール・セットに追加できます。

  2. 「ルール・セットの作成...」をクリックします。

    ルール・セットの作成ページが表示されます。

  3. 「名前」「説明」およびルール・セットを適用する「ターゲット」を指定します。

  4. 「ルール」タブをクリックし、「作成」をクリックします。

  5. ルールを適用する着信インシデント、イベントまたは問題を選択します。詳細は、「ルール・セットの設定」を参照してください。

  6. 「続行」をクリックします。

    Enterprise Managerに、インシデント・ルールの作成ページが表示されます。各ページで、インシデント・ルールの作成に必要な情報を入力します。

  7. ウィザードの指示に従ってルールを作成します。

    ルールの定義が完了すると、ルール・セットの作成ページに戻ります。

  8. 「保存」をクリックしてインシデント・ルール・セットを保存します。

4.1.3 他の管理者のための電子メールの設定

スーパー管理者権限を持っている場合は、他のEnterprise Manager管理者のために電子メール通知を設定できます。他のEnterprise Manager管理者のために電子メール通知を設定するには、次の手順を実行する必要があります。

手順1: 各管理者アカウントに電子メール・アドレスが関連付けられていることの確認

電子メール通知の送信宛先の各管理者は、有効な電子メール・アドレスを持っている必要があります。

  1. 「設定」メニューから、「セキュリティ」「管理者」の順に選択します。

  2. 管理者ごとに、電子メール・アドレスを定義します。これにより、指定されたすべての電子メール・アドレスを使用するこのユーザー向けに常時通知スケジュールが設定されます。デフォルトでは、これにより、タイプが電子メール(長い形式)に設定された電子メールIDが追加されます。ここでは「電子メール・タイプ」オプションを指定することはできません。

Enterprise Managerでは、管理者の通知スケジュールを編集する際に、管理者のアドレスも指定できます。

手順2: 管理者の通知スケジュールの定義

各管理者の電子メール通知アドレスを定義後、それぞれの通知スケジュールを定義する必要があります。初めて電子メール・アドレスを指定した際には、デフォルトの常時通知スケジュールが作成されますが、通知スケジュールの内容を再確認し、適宜編集する必要があります。

  1. 「設定」メニューから、「通知」「通知スケジュール」の順に選択します。

    垂直ナビゲーション・バーの「スケジュール」をクリックします(「通知」の下にあります)。「通知スケジュール」が表示されます。

  2. 編集する通知スケジュールを所有する管理者を指定し、「変更」をクリックします。

  3. 「スケジュール定義の編集」をクリックします。スケジュール定義の編集: 期間ページが表示されます。必要に応じて、ローテーション・スケジュールを変更します。

  4. 「続行」をクリックします。スケジュール定義の編集: 電子メール・アドレス・ページが表示されます。

  5. スケジュール定義の編集: 電子メール・アドレス・ページ上の指示に従って、通知スケジュールを変更します。

  6. 終了後、「終了」をクリックします。

  7. 管理者ごとに、手順3から手順7までを繰り返します。

手順3: 管理者へのインシデント・ルールの割当て

通知スケジュールを設定後、指定した管理者ごとに適切なインシデント・ルールを割り当てる必要があります。

  1. 「設定」メニューで「インシデント」「インシデント・ルール」の順に選択します。

  2. 目的の「ルールセット」を選択し、「編集」をクリックします。

  3. 「ルール」タブをクリックし、目的のルールを選択して「編集」をクリックします。

  4. 「アクションの追加」をクリックし、目的のアクションを選択して「編集」をクリックします。

  5. 基本通知リージョンの「電子メールの宛先」または「電子メールCc」フィールドに管理者名を入力します。

  6. 「続行」「次へ」「次へ」「続行」の順にクリックし、最後に「保存」をクリックします。

4.1.4 電子メールのカスタマイズ

Enterprise Managerでは、スーパー管理者は、すべてのイベント、インシデント、問題、およびインストールされている特定のイベント・タイプに対して、グローバルな電子メール通知をカスタマイズできます。「デフォルト・イベント電子メール・テンプレート」をカスタマイズすることで、すべてのイベントのデフォルトの動作を変更できます。また、イベント・タイプのテンプレートをカスタマイズすることで、特定のイベント・タイプの動作をさらにカスタマイズできます。たとえば、メトリック・アラート・イベント・タイプのメトリック・アラート・イベント・テンプレートをカスタマイズできます。簡単なスクリプト内に含まれる、事前定義されたビルディング・ブロック(属性およびラベルと呼ばれる)を使用して、スーパー管理者は、様々な情報コンテンツから選択することで、アラート電子メールをカスタマイズできます。

電子メールをカスタマイズする手順は、次のとおりです。

  1. 「設定」メニューから、「通知」「電子メール形式のカスタマイズ」の順に選択します。

  2. 「タイプ」および「形式」を選択します。

  3. 「カスタマイズ」をクリックします。電子メール・テンプレートのカスタマイズ・ページが表示されます。

電子メール・テンプレートのカスタマイズ・ページから、Enterprise Managerが電子メール通知の生成に使用する電子メール・テンプレートの内容を変更できます。「電子メール・テンプレートの編集」ページからは、組込みのアシスタントやオンライン・ヘルプを利用して、スクリプトの書式設定、構文およびオプションに関する広範囲な情報が利用できます。

図4-3 電子メールのカスタマイズ

図4-3の説明は図の下
「図4-3 電子メールのカスタマイズ」の説明

4.1.4.1 電子メールのカスタマイズのリファレンス

次のリファレンスでは、電子メールを定義するために使用される、疑似言語の語義およびコンポーネントの構文を簡潔に示します。疑似言語により、電子メール通知をカスタマイズするための単純な、ただし柔軟な方法が提供されます。次に、疑似言語の変換/制限のサマリーを示します。

  • --で始まる個別の行を使用して、コメント(または任意の自由形式テキスト)を追加できます。コメントは、行の終わりに付加することもできます。

  • 属性を使用できます。

  • IF、ELSE、ENDIF制御構造を使用できます。ANDまたはORによって、複数の条件を使用することもできます。ネストされたIF文はサポートされていません。

  • 書式設定の目的でスペースを挿入できます。実際の電子メールでは、行頭のスペースは無視されます。行頭にスペースを挿入するには、[SP]属性を使用します。

  • エスケープするには/を使用し、属性名、演算子またはIF句を追加するには、[または]を使用します。

  • HTMLはサポートされません。

予約語および予約演算子

次の表に、電子メール・スクリプトの変更で使用されるすべての予約語と予約演算子を示します。

表4-1 予約語および予約演算子

予約語および予約演算子 説明

IF、ELSIF、ENDIF、ELSE

IF-ELSE構造の中で使用されます。

AND、OR

ブール演算子 - IF-ELSE構造でのみ使用されます。

NULL

属性に関して、NULL値をチェック - IF-ELSE構造でのみ使用されます。

|


パイプ演算子 - 属性のリスト内で最初の非NULL値を示すのに使用されます。

次に例を示します。

METRIC_NAME|SEVERITY

EQ、NEQ

EqualおよびNot-Equal演算子 - NULL、STRING、NUMERIC値に適用できます。

/


エスケープ文字 - 予約語および予約演算子をエスケープするのに使用します。エスケープ文字は、それに続く文字が別の意味で解釈されることを表します。

[ , ]

区切り文字は、属性名とIF節の境界を決定します。


構文の要素

リテラル・テキスト

電子メール・コンテンツの一部として任意のテキストを指定できます。テキストは電子メールの中に表示され、Oracle Management Services(OMS)の言語設定が変更されても翻訳されません。たとえば、my Oracle Homeは、生成された電子メールの中では、my Oracle Homeと表示されます。

事前定義された属性

事前定義された属性/ラベルは、特定のコンテキストで実際の値に置き換えられます。事前定義された属性/ラベルを指定するには、次の構文を使用します。

[PREDEFINED_ATTR]

属性名は、大文字でも小文字でも構いません。構文解析のプロセスでは、大/小文字が区別されません。

一組の大カッコを使用して、事前定義された属性とリテラル・テキストとを区別します。たとえば、ジョブの電子メール通知の場合、実際のジョブ名は[EXECUTION_STATUS]で置き換えられます。メトリック・アラート通知の場合、[METIRC_COLUMN]は実際のメトリック列の名前で置換されます。

エスケープ文字/を使用して、単語を指定し、それらを事前定義されたラベル/属性として解釈されないようにできます。たとえば、/[NEW/]は、解釈される際、事前定義された属性である[NEW]とはみなされません。

演算子

EQ、NEQ - テキストおよび数値に使用します。

NULL: テキストおよび数値に使用します。

GT、LT、GE、LE - 数値に使用します。

制御構造

次の表に、使用可能なスクリプト制御構造を示します。

表4-2 制御構造

制御構造 説明

パイプ|

2つ以上の属性を|文字で区切ることができます。次に例を示します。

[METRIC_NAME|SEVERITY]

この例では、現在のアラートのコンテキスト内の該当する属性のみが電子メールの中で使用されます(実際の値で置き換えられます)。複数の属性が該当する場合、一番左の属性のみが使用されます。

IF

テキスト・ブロックが条件文になります。1レベルのIFおよびELSIFのみサポートされます。ネストされたIF構造はサポートされていません。

NULL値にEQ/NEQ演算子を使用すると、IFまたはELSIF評価ですべての属性が使用できます。他の演算子は、SEVERITYとREPEAT_COUNTでのみ使用可能です。

IFブロック内では、値を引用符" "で囲む必要があります。Enterprise Managerは、EQ、およびand、orなどその他のキーワードの位置に基づいて属性名およびその値を抽出します。次に例を示します。

[IF REPEAT_COUNT EQ ”1” AND SEVERITY EQ ”CRITICAL” THEN]

前述の文は、アラートの属性が次の条件に一致する場合に真になります。

  • 属性名: REPEAT_COUNT

  • 属性値: 1

  • 属性名: SEVERITY

  • 属性値: CRITICAL

IFブロックの例:

[IF EXECUTION_STATUS NEQ NULL]
       [JOB_NAME_LABEL]=[EXECUTION_STATUS] 
       [JOB_OWNER_LABEL]=[JOB_OWNER] 
[ENDIF] 
 
[IF SEVERITY_CODE EQ CRITICAL ]
       [MTRIC_NAME_LABEL]=[METRIC_GROUP] 
       [METRIC_VALUE_LABEL]=[METRIC_VALUE] 
       [TARGET_NAME_LABEL]=[TARGET_NAME] 
       [KEY_VALUES] 
[ENDIF] 

IFとELSEIFブロックの例:

[IF SEVERITY_CODE EQ CRITICAL]           statement1[ELSIF SEVERITY_CODE EQ WARNING]           statement2[ELSIF SEVERITY_CODE EQ CLEAR]           statement3[ELSE]           statement4[ENDIF]

コメント

1行のテキストの先頭に、ハイフンを2つ(--)付加することによって、スクリプトにコメントを追加できます。次に例を示します。

 -- Code added on 8/3/2009     [IF REPEAT_COUNT NEQ NULL]     . . . 

コメントは、テキスト行の最後にも配置できます。

[IF SEVERITY_SHORT EQ W] -- for Warning alert

カスタマイズの内容に含まれるHTMLタグ

HTMLタグの使用はサポートされません。

Enterprise Managerでは、電子メール・スクリプトを解析する際、HTMLタグに含まれる“<”および“>”の文字をエンコードした形式(&lt;および&gt;)に変換します。これにより、宛先のシステムでは、HTMLタグがHTMLとして扱われなくなります。

電子メールのカスタマイズ・テンプレート・スクリプトでは、次の3つの主要な演算子をサポートします。

  • 比較演算子: EQ/NEQ/GT/LT/GE/LE論理演算子: AND/ORパイプライン演算子: |

4.1.5 繰返し通知の設定

繰返し通知を使用すると、インシデントが通知されるか、「繰返し通知の最大数」の値に到達するまで、繰り返し通知できます。Enterprise Managerでは、すべての通知メソッド(電子メール、OSコマンド、PL/SQLプロシージャおよびSNMPトラップ)向けの繰返し通知をサポートします。

繰返し通知のグローバル構成

通知メソッドで繰返し通知を(グローバルに)有効にするには、「通知メソッド」ページの「繰返し通知の送信」オプションを選択します。繰返し通知の最大回数の設定に加えて、通知送信の時間間隔も設定できます。


重要:

Oracleデータベース・バージョン10以上では、aq_tm_processes init.oraパラメータを変更しないことをお薦めします。ただし、このパラメータを変更する必要がある場合は、繰返し通知機能の値を1以上にする必要があります。Enterprise Managerリポジトリ・データベース・バージョンが9.2の場合は、aq_tm_processes init.oraパラメータを少なくとも1に設定して、繰返し通知の機能を有効化します。

インシデント・ルールを通じた繰返し通知の構成

通知メソッド・レベルでグローバルに繰返し通知を設定する場合、柔軟性が不十分な可能性があります。たとえば、イベント・タイプに基づいて異なる繰返し通知設定を使用する場合などが考えられます。Enterprise Managerでは、個別のインシデント・ルール・セットまたはルール・セット内の個別のルールに繰返し通知を設定することでこれを実現します。ルール・レベルで設定した繰返し通知は、通知メソッド・レベルで定義されたものより優先されます。


重要:

繰返し通知は、「繰返し通知の送信」オプションが「通知メソッド」ページで有効化されている場合のみ送信されます。

電子メール以外の繰返し通知

電子メール以外の繰返し通知(PL/SQL、OSコマンドおよびSNMPトラップの通知メソッド)では、各メソッドを有効にして繰返し通知をサポートする必要があります。新しい通知メソッドを追加、または既存のメソッドを編集する際に、「繰返し通知のサポート」オプションを選択できます。

図4-4 OSコマンド通知メソッド用に繰返し通知を有効化

図4-4の説明が続きます。
「図4-4 OSコマンド通知メソッド用に繰返し通知を有効化」の説明

4.2 電子メール以外の通知の拡張

通知メソッドは、通知が送信されるメカニズムです。Enterprise Managerスーパー管理者は、「電子メール」通知メソッドを構成することで電子メール通知を設定できます。多くの場合、これはOracle Management Serviceのインストールの一環としてすでに設定されています。

Enterprise Managerスーパー管理者は、他のカスタム通知メソッドを定義することもできます。たとえば、イベント通知をサード・パーティのトラブル・チケット・システムに転送することが必要な場合があります。サード・パーティのトラブル・チケット・システムへのAPIが使用可能であると想定した場合、カスタム通知メソッドを作成して、適切なAPIを持つカスタムOSスクリプトをコールできます。カスタム通知メソッドは、「トラブル・チケットのログ」など、ユーザーフレンドリな形式で名前を付けることができます。カスタム・メソッドが定義されると、管理者は、トラブル・チケット・システムにアラートを送信する必要があるたびに、「トラブル・チケットのログ」というグローバルに使用可能な通知を呼び出すのみで済みます。

カスタム通知メソッドは、カスタムOSスクリプトまたは任意のカスタムPL/SQLプロシージャに基づいて、またはSNMPトラップを送信することで定義できます。4番目のタイプの通知メソッド(Javaコールバック)は、Oracle内部機能をサポートするために存在し、Enterprise Manager管理者が作成または編集することはできません。

「OSコマンド」、「PL/SQL」および「SNMPトラップ」の通知メソッドを定義できるのはスーパー管理者のみです。ただし、Enterprise Managerの管理者は誰でも、(スーパー管理者が定義した)これらの通知メソッドをインシデント・ルールにアクションとして追加できます。

「通知メソッド」ページでは、次の内容を実行できます。

  • インシデント・ルールを使用した電子メール通知を送信する場合の、送信メール・サーバーの設定

  • OSおよびPL/SQLスクリプトとSNMPトラップを使用した、他のカスタム通知メソッドの作成。

  • グローバルな繰返し通知の設定

4.3 OSコマンドおよびスクリプトを使用した通知の送信

通知システムは、インシデント・ルールがOSコマンド拡張通知アクションと一致した場合にカスタム・スクリプトを呼び出すことができます。カスタム・スクリプトは、環境変数を通じて、一致するイベント、インシデントおよび問題の通知を受信します。

環境変数の値の長さは、デフォルトで512文字に制限されています。デフォルト制限を変更するには、oracle.sysman.core.notification.oscmd.max_env_var_lengthという名前のemomsプロパティを構成します。


重要:

OSコマンドに基づく通知メソッドは、スーパー管理者権限を持つ管理者が構成する必要があります。


OSコマンド・スクリプトを実行すると、次のようになります。

通知を受信するために「sudo」などのOSコマンドを実行すると、コマンドにはOMSアカウントの読取り権限がないため失敗します。OMSアカウントには、通知を送信するためにOSコマンドに対する読取り権限が必要です。

権限の問題を解決するには、コマンドをOMS管理者アカウントが読取り可能なラッパー・スクリプトに埋め込みます。コマンドがラッパー・スクリプトに含まれたら、OSコマンドのかわりにこのスクリプトを指定します。


カスタム・スクリプトの登録

カスタム・スクリプトを使用するには、最初にそのスクリプトを通知システムに登録する必要があります。これは、次の4つの手順で実行します。

  1. OSコマンドまたはスクリプトを定義します。

  2. 各管理サービス・ホスト上にスクリプトをデプロイします。

  3. OSコマンドまたはスクリプトを新規の通知メソッドとして登録します。

  4. 通知メソッドをインシデント・ルールに割り当てます。

手順1: OSコマンドまたはスクリプトの定義

インシデント・ルールがOSコマンド拡張通知アクションと一致する場合に通知システムによってコールされるOSコマンドまたはスクリプトを指定できます。スクリプト本体で、インシデント、イベントまたは問題のコンテキスト情報、修正処理の実行ステータス、およびジョブ実行ステータスを使用できます。このコンテキスト情報をOSコマンド/スクリプトに渡すと、自動化されたレスポンス固有イベント条件をカスタマイズできます。たとえば、OSスクリプトで社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開く場合、スクリプトに重大度レベル(クリティカル、警告など)を渡すことによって、該当する詳細とともにトラブル・チケットを開いて問題を提示できます。特定タイプの情報をOSコマンドまたはスクリプトに渡す方法の詳細は、次の各項を参照してください。

手順2: 各管理サービス・ホスト上へのスクリプトのデプロイ

管理リポジトリに接続する各管理サービス・ホスト・マシン上に、OSコマンドまたはスクリプトをデプロイする必要があります。OSコマンドは、管理サービスを開始したユーザーで実行されます。OSコマンドまたはスクリプトは、各管理サービス・ホスト・マシン上の同じ場所にデプロイする必要があります。


重要:

スクリプトとOSコマンドは、両方とも絶対パスを使用して指定する必要があります。たとえば、/u1/bin/logSeverity.shなどです。

このコマンドは、管理サービスを開始したユーザーによって実行されます。OSコマンドの実行中にエラーが発生した場合は、終了コード100を返すことで、OSコマンドへの通知の送信を再試行するように通知システムに指示できます。プロシージャの再試行は、最初は1分後に、次は2分後、3分後に、最後は30分後に行われます。これ以降、プロシージャの再試行は、通知が24時間経過するまで、30分ごとに行われます。その後、通知はパージされます。

例4-4に、管理サービスにより中断されることなくOSコマンドを実行できる期間を制御するemoms.propertiesのパラメータを示します。これによって、OSコマンドが過度に長い時間実行されるため他の通知の転送を妨げることが回避できます。デフォルトでは、コマンドは中断されるまで30秒間実行できます。oracle.sysman.core.notification.os_cmd_timeout emomsプロパティを構成して、デフォルトのタイムアウト値を変更できます。

例4-4 oracle.sysman.core.notification.os_cmd_timeout emomsプロパティの変更

emctl set property -name oracle.sysman.core.notification.os_cmd_timeout value 30
 

手順3: OSコマンドまたはスクリプトを新規の通知メソッドとして登録

このOSコマンドをインシデント・ルールでコールできる通知メソッドとして追加します。スーパー管理者としてログインします。「設定」メニューから、「通知」「通知メソッド」の順に選択します。このページから、「OSコマンド」タイプに基づいて新しい通知を定義します。「OSコマンドおよびスクリプトを使用した通知の送信」を参照してください。

各OSコマンドの通知メソッドには次の情報が必要です。

  • 名前

  • 説明

    他の管理者がこのメソッドの機能を理解できるようにするため、名前と説明は両方とも明快で直観的なものにします。

  • OSコマンド

「OSコマンド」フィールドには、OSコマンドまたはスクリプトをフルパスで入力する必要があります(例: /u1/bin/myscript.sh)。複数の管理サービスを使用している環境では、管理サービスが存在する各マシン上のパスとまったく同じパスを入力します。フルパスの後にコマンドライン・パラメータを追加できます(例: /u1/bin/myscript.sh arg1 arg2)。

例4-5は、通知メソッドに必要な情報を示しています。

例4-5 OSコマンド通知メソッド

Name Trouble Ticketing
Description Notification method to log trouble ticket for a severity occurrence
OS Command /private/mozart/bin/logTicket.sh

注意:

システムごとに複数のOSコマンドが構成されている場合があります。

図4-5 通知メソッド: OSコマンドの追加

OSコマンドの追加

手順4: 通知メソッドのインシデント・ルールへの割当て。

既存のルールを編集(または新規のインスタンス・ルールを作成)後、メソッド・ページを表示できます。「設定」メニューから、「インシデント」「インシデント・ルール」の順に選択します。インシデント・ルール・ページから、使用可能なすべてのルール・セットにアクセスできます。

OSコマンドまたはスクリプトにイベント、インシデントおよび問題情報を渡す方法の詳細は、「OSコマンドまたはスクリプトへのイベント、インシデント、問題情報の受渡し」を参照してください。

4.3.1 スクリプト例

例4-6に示すOSスクリプトの例では、ログ・ファイルに環境変数エントリが付加されています。この例のスクリプトでは、ファイル・サーバーの重大度の発生が記録されます。ファイル・サーバーに接続できない場合、終了コード100が返され、Oracle Management Service通知システムで通知が再試行されます。

例4-6 OSコマンド・スクリプトの例

#!/bin/ksh

LOG_FILE=/net/myhost/logs/event.log
if test -f $LOG_FILE
then
echo $TARGET_NAME $MESSAGE $EVENT_REPORTED_TIME >> $LOG_FILE
else
   exit 100
fi

例4-7には、oscmdNotify.logファイルにインシデントとイベントの両方のアラート情報を記録するOSスクリプトが示されています。ファイルは/net/myhost/logsディレクトリに保存されます。

例4-7 アラート・ロギング・スクリプト

#!/bin/sh#
  LOG_FILE=/net/myhost/logs/oscmdNotify.log

  echo '-------------' >> $LOG_FILE

  echo 'issue_type=' $ISSUE_TYPE >> $LOG_FILE
  echo 'notif_type=' $NOTIF_TYPE >> $LOG_FILE
  echo 'message=' $MESSAGE >> $LOG_FILE
  echo 'message_url'  = $MESSAGE_URL >>$LOG_FILE
  echo 'severity=' $SEVERITY >> $LOG_FILE
  echo 'severity_code'  = $SEVERITY_CODE >>$LOG_FILE
  echo 'ruleset_name=' $RULESET_NAME >> $LOG_FILE
  echo 'rule_name=' $RULE_NAME >> $LOG_FILE
  echo 'rule_owner=' $RULE_OWNER >> $LOG_FILE
  echo 'repeat_count=' $REPEAT_COUNT >> $LOG_FILE
  echo 'categories_count'  = $CATEGORIES_COUNT >>$LOG_FILE
  echo 'category_1'  = $CATEGORY_1 >>$LOG_FILE
  echo 'category_2'  = $CATEGORY_2 >>$LOG_FILE
  echo 'category_code_1'  = $CATEGORY_CODE_1 >>$LOG_FILE
  echo 'category_code_2'  = $CATEGORY_CODE_2 >>$LOG_FILE
  echo 'category_codes_count'  = $CATEGORY_CODES_COUNT >>$LOG_FILE

# event
if [ $ISSUE_TYPE -eq 1 ]
then
  echo 'host_name=' $HOST_NAME >> $LOG_FILE
  echo 'event_type=' $EVENT_TYPE >> $LOG_FILE
  echo 'event_name=' $EVENT_NAME >> $LOG_FILE
  echo 'event_occurrence_time=' $EVENT_OCCURRENCE_TIME >> $LOG_FILE
  echo 'event_reported_time=' $EVENT_REPORTED_TIME >> $LOG_FILE
  echo 'sequence_id=' $SEQUENCE_ID >> $LOG_FILE
  echo 'event_type_attrs=' $EVENT_TYPE_ATTRS >> $LOG_FILE
  echo 'source_obj_name=' $SOURCE_OBJ_NAME >> $LOG_FILE
  echo 'source_obj_type=' $SOURCE_OBJ_TYPE >> $LOG_FILE
  echo 'source_obj_owner=' $SOURCE_OBJ_OWNER >> $LOG_FILE
  echo 'target_name'  = $TARGET_NAME >>$LOG_FILE
  echo 'target_url'  = $TARGET_URL >>$LOG_FILE
  echo 'target_owner=' $TARGET_OWNER >> $LOG_FILE
  echo 'target_type=' $TARGET_TYPE >> $LOG_FILE
  echo 'target_version=' $TARGET_VERSION >> $LOG_FILE
  echo 'lifecycle_status=' $TARGET_LIFECYCLE_STATUS >> $LOG_FILE
  echo 'assoc_incident_escalation_level'  = $ASSOC_INCIDENT_ESCALATION_LEVEL >>$LOG_FILE
  echo 'assoc_incident_id'  = $ASSOC_INCIDENT_ID >>$LOG_FILE
  echo 'assoc_incident_owner'  = $ASSOC_INCIDENT_OWNER >>$LOG_FILE
  echo 'assoc_incident_acknowledged_by_owner'  = $ASSOC_INCIDENT_ACKNOWLEDGED_BY_OWNER >>$LOG_FILE
  echo 'assoc_incident_acknowledged_details'  = $ASSOC_INCIDENT_ACKNOWLEDGED_DETAILS >>$LOG_FILE
  echo 'assoc_incident_priority'  = $ASSOC_INCIDENT_PRIORITY >>$LOG_FILE
  echo 'assoc_incident_status'  = $ASSOC_INCIDENT_STATUS >>$LOG_FILE
  echo 'ca_job_status'  = $CA_JOB_STATUS >>$LOG_FILE
  echo 'event_context_attrs'  = $EVENT_CONTEXT_ATTRS >>$LOG_FILE
  echo 'last_updated_time'  = $LAST_UPDATED_TIME >>$LOG_FILE
  echo 'sequence_id'  = $SEQUENCE_ID >>$LOG_FILE
  echo 'test_date_attr_noref'  = $TEST_DATE_ATTR_NOREF >>$LOG_FILE
  echo 'test_raw_attr_noref'  = $TEST_RAW_ATTR_NOREF >>$LOG_FILE
  echo 'test_str_attr1'  = $TEST_STR_ATTR1 >>$LOG_FILE
  echo 'test_str_attr2'  = $TEST_STR_ATTR2 >>$LOG_FILE
  echo 'test_str_attr3'  = $TEST_STR_ATTR3 >>$LOG_FILE
  echo 'test_str_attr4'  = $TEST_STR_ATTR4 >>$LOG_FILE
  echo 'test_str_attr5'  = $TEST_STR_ATTR5 >>$LOG_FILE
  echo 'test_str_attr_ref'  = $TEST_STR_ATTR_REF >>$LOG_FILE
  echo 'total_occurrence_count'  = $TOTAL_OCCURRENCE_COUNT >>$LOG_FILE
fi

# incident
if [ $ISSUE_TYPE -eq 2 ]
then
  echo 'action_msg=' $ACTION_MSG >> $LOG_FILE
  echo 'incident_id=' $INCIDENT_ID >> $LOG_FILE
  echo 'incident_creation_time=' $INCIDENT_CREATION_TIME >> $LOG_FILE
  echo 'incident_owner=' $INCIDENT_OWNER >> $LOG_FILE
echo 'incident_acknowledged_by_owner'  = $INCIDENT_ACKNOWLEDGED_BY_OWNER >>$LOG_FILE
  echo 'incident_status'  = $INCIDENT_STATUS >>$LOG_FILE
  echo 'last_modified_by=' $LAST_MODIFIED_BY >> $LOG_FILE
  echo 'last_updated_time=' $LAST_UPDATED_TIME >> $LOG_FILE
  echo 'assoc_event_count=' $ASSOC_EVENT_COUNT >> $LOG_FILE
  echo 'adr_incident_id=' $ADR_INCIDENT_ID >> $LOG_FILE
  echo 'occurrence_count=' $OCCURRENCE_COUNT >> $LOG_FILE
  echo 'escalated=' $ESCALATED >> $LOG_FILE
  echo 'escalated_level=' $ESCALATED_LEVEL >> $LOG_FILE
  echo 'priority=' $PRIORITY >> $LOG_FILE
  echo 'priority_code'  = $PRIORITY_CODE >>$LOG_FILE
  echo 'ticket_id=' $TICKET_ID >> $LOG_FILE
  echo 'ticket_status=' $TICKET_STATUS >> $LOG_FILE
  echo 'ticket_url=' $TICKET_ID_URL >> $LOG_FILE
  echo 'total_duplicate_count=' $TOTAL_DUPLICATE_COUNT >> $LOG_FILE
  echo 'source_count=' $EVENT_SOURCE_COUNT >> $LOG_FILE
  echo 'event_source_1_host_name'  = $EVENT_SOURCE_1_HOST_NAME >>$LOG_FILE
  echo 'event_source_1_target_guid'  = $EVENT_SOURCE_1_TARGET_GUID >>$LOG_FILE
  echo 'event_source_1_target_name'  = $EVENT_SOURCE_1_TARGET_NAME >>$LOG_FILE
  echo 'event_source_1_target_owner'  = $EVENT_SOURCE_1_TARGET_OWNER >>$LOG_FILE
  echo 'event_source_1_target_type'  = $EVENT_SOURCE_1_TARGET_TYPE >>$LOG_FILE
  echo 'event_source_1_target_url'  = $EVENT_SOURCE_1_TARGET_URL >>$LOG_FILE
  echo 'event_source_1_target_lifecycle_status'  = $EVENT_SOURCE_1_TARGET_LIFECYCLE_STATUS >>$LOG_FILE
  echo 'event_source_1_target_version'  = $EVENT_SOURCE_1_TARGET_VERSION >>$LOG_FILE
fi
exit 0

例4-8には、Enterprise Manager Cloud ControlからHP OpenViewコンソールにアラートを送信するスクリプトが示されています。メトリック・アラートがトリガーされるとEnterprise Manager Cloud Controlではアラートが表示されます。次にHP OpenViewスクリプトがコールされ、opcmsgを起動し、HP OpenView管理サーバーに情報を転送します。

例4-8 HP OpenViewスクリプト

/opt/OV/bin/OpC/opcmsg severity="$SEVERITY" app=OEM msg_grp=Oracle msg_text="$MESSAGE" object="$TARGET_NAME"

4.3.2 12cより前のOSコマンド・スクリプトの移行

この項では、12cより前のOSコマンド通知シェル環境変数を12c OSコマンド・シェル環境変数にマップする方法を説明します。


重要:

12cより前の通知ルールは、イベント・レベル・ルールにのみマップされます。インシデント・レベル・ルールへのマッピングは許可されていません。


注意:

ポリシー違反は、Enterprise Manager 12cリリース以上ではサポートされなくなりました。

4.3.2.1 メトリック・アラート・イベント・タイプの移行

次の表は、event_typeがmetric_alertの場合のOSコマンド・シェル環境変数のマッピングです。

表4-3 12cより前/12cのmetric_alert環境変数のマッピング

12cより前の環境変数 対応する12cの環境変数

ACKNOWLEDGED

ASSOC_INCIDENT_ACKNOWLEDGED_BY_OWNER

ACKNOWLEDGED_BY

ASSOC_INCIDENT_OWNER

CYCLE_GUID

CYCLE_GUID

HOST

HOST_NAME

KEY_VALUE

注意: 後述の詳細な説明を参照してください。

KEY_VALUE_NAME

注意: 後述の詳細な説明を参照してください。

MESSAGE

MESSAGE

METRIC

METRIC_COLUMN

NOTIF_TYPE

NOTIF_TYPE。第2.3.5項のマップを使用します。

REPEAT_COUNT

REPEAT_COUNT

RULE_NAME

RULESET_NAME

RULE_OWNER

RULE_OWNER

SEVERITY

SEVERITY

TARGET_NAME

TARGET_NAME

TARGET_TYPE

TARGET_TYPE

TIMESTAMP

EVENT_REPORTED_TIME

METRIC_VALUE

VALUE

VIOLATION_CONTEXT

EVENT_CONTEXT_ATTRS

VIOLATION_GUID

SEVERITY_GUID

POLICY_RULE

マッピングなし。Enterprise Manager 12cリリース以上では使用中止になりました。


KEY_VALUE_NAMEおよびKEY_VALUEを取得するには、次の手順を実行します。

  • $NUM_KEYS変数がnullの場合、$KEY_VALUE_NAMEと$KEY_VALUEはnullです。

  • $NUM_KEYSが1の場合

    KEY_VALUE_NAME=$KEY_COLUMN_1

    KEY_COLUMN_1_VALUE

  • $NUM_KEYSが1より大きい場合

    KEY_VALUE_NAME="$KEY_COLUMN_1;$KEY_COLUMN_2;..;KEY_COLUMN_x"

    KEY_VALUE="$KEY_COLUMN_1_VALUE;$KEY_COLUMN_2_VALUE;..;KEY_COLUMN_x_VALUE "

    xは$NUM_KEYSの値で、";"はセパレータです。

4.3.2.2 ターゲット可用性イベント・タイプの移行

次の表は、event_typeが"target_availability"の場合のOSコマンド・シェル環境変数のマッピングです。

表4-4 12cより前/12cのtarget_availability環境変数のマッピング

12cより前の環境変数 対応する12cの環境変数

TARGET_NAME

TARGET_NAME

TARGET_TYPE

TARGET_TYPE

METRIC

ステータス

CYCLE_GUID

CYCLE_GUID

VIOLATION_CONTEXT

EVENT_CONTEXT_ATTRS

SEVERITY

TARGET_STATUS

HOST

HOST_NAME

MESSAGE

MESSAGE

NOTIF_TYPE

NOTIF_TYPE。第2.3.5項のマップを使用します。

TIMESTAMP

EVENT_REPORTED_TIME

RULE_NAME

RULESET_NAME

RULE_OWNER

RULE_OWNER

REPEAT_COUNT

REPEAT_COUNT

KEY_VALUE

""

KEY_VALUE_NAME

""


4.3.2.3 ジョブ・ステータス変更イベント・タイプの移行

次の表は、event_typeがjob_status_changeの場合のOSコマンド・シェル環境変数のマッピングです。

表4-5 12cより前/12cのjos_status_change環境変数のマッピング

12cより前の環境変数 対応する12cの環境変数

JOB_NAME

SOURCE_OBJ_NAME

JOB_OWNER

SOURCE_OBJ_OWNER

JOB_TYPE

SOURCE_OBJ_SUB_TYPE

JOB_STATUS

EXECUTION_STATUS

NUM_TARGETS

$ TARGET_NAMEがnullでない場合は1、それ以外の場合は0

TARGET_NAME1

TARGET_NAME

TARGET_TYPE1

TARGET_TYPE

TIMESTAMP

EVENT_REPORTED_TIME

RULE_NAME

RULESET_NAME

RULE_OWNER

RULE_OWNER


4.3.2.4 修正処理関連のOSスクリプトの移行

修正処理の通知受信時の次の環境変数のマッピングは、「メトリック・アラート・イベント・タイプの移行」の項を参照してください。

KEY_VALUE

KEY_VALUE_NAME

METRIC

METRIC_VALUE

RULE_NAME

RULE_OWNER

SEVERITY

TIMESTAMP

VIOLATION_CONTEXT

他の環境変数のマッピングには、次のマップを使用します。

表4-6 12cより前/12cの修正処理環境変数のマッピング

12cより前の環境変数 対応する12cの環境変数

NUM_TARGETS

1

TARGET_NAME1

TARGET_NAME

TARGET_TYPE1

TARGET_TYPE

JOB_NAME

CA_JOB_NAME

JOB_OWNER

CA_JOB_OWNER

JOB_STATUS

CA_JOB_STATUS

JOB_TYPE

CA_JOB_TYPE


4.3.2.5 通知タイプのマッピング

表4-7 12cより前/12cのnotif_typeのマッピング

notif_type(12c) notif_type(12cより前)

NOTIF_NORMAL

1

NOTIF_REPEAT

4

NOTIF_DURATION

9

NOTIF_RETRY

2


4.4 PL/SQLプロシージャを使用した通知の送信

ユーザー定義PL/SQLプロシージャは、一致するイベント、インシデントおよび問題の通知を受信できます。


注意:

Enterprise Managerをリリース12cより前から12cにアップグレードする場合、12cより前の既存のPL/SQL拡張通知メソッドが変更なしで機能を続けます。ただし、プロシージャを更新して新しいシグネチャを使用する必要があります。

Enterprise Manager 12cで作成された新しいPL/SQL拡張通知メソッドでは、次の項に記載されている新しいシグネチャを使用する必要があります。


PL/SQLプロシージャに基づく通知メソッドを定義するには、次の4つの手順を実行します。

4.4.1 PL/SQLベースの通知メソッドの定義

PL/SQLベースの通知メソッドの作成は、次の4つの手順で構成されます。

  1. PL/SQLプロシージャを定義します。

  2. 管理リポジトリ上にPL/SQLプロシージャを作成します。

  3. PL/SQLプロシージャを新規の通知メソッドとして登録します。

  4. 通知メソッドをインシデント・ルールに割り当てます。

手順1: PL/SQLプロシージャの定義

受け取られる通知のタイプに応じて、プロシージャには次のうち1つのシグネチャを含める必要があります。

イベントの場合:

PROCEDURE event_proc(event_msg IN gc$notif_event_msg)

インシデントの場合:

PROCEDURE incident_proc(incident_msg IN gc$notif_incident_msg)

問題の場合:

PROCEDURE problem_proc(problem_msg IN gc$notif_problem_msg)


注意:

ユーザーがインシデント・ルールの作成または編集時に通知メソッドを選択するには、スーパー管理者権限を持つ管理者が、PL/SQLプロシージャに基づく通知メソッドをあらかじめ構成しておく必要があります。

特定タイプの情報をスクリプトまたはPL/SQLプロシージャに渡す方法の詳細は、次の各項を参照してください。

PL/SQLプロシージャへの情報の受渡し

修正処理ステータス変更情報の受渡し

ジョブ実行ステータス情報の受渡し

手順2: 管理リポジトリ上でのPL/SQLプロシージャの作成

次の指定プロシージャの1つを使用して、リポジトリ・データベースでPL/SQLプロシージャを作成します。

PROCEDURE event_proc(event_msg IN gc$notif_event_msg)

PROCEDURE incident_proc(incident_msg IN gc$notif_incident_msg)

PROCEDURE problem_proc(problem_msg IN gc$notif_problem_msg)

PL/SQLプロシージャは、(SYSMANなどの)リポジトリ所有者のデータベース・アカウントを使用してリポジトリ・データベース上に作成する必要があります。

プロシージャの実行時にエラーが発生した場合、エラー・コード-20000を使用するユーザー定義例外を返すことによって、通知システムでプロシージャへの通知の送信を再試行できます。このプロシージャは、最初は1分後に再試行され、その後は2分後、3分後と、パージされるポイントである1日後までこの再試行が続行されます。

手順3: PL/SQLプロシージャを新規の通知メソッドとして登録

スーパー管理者としてログインします。「設定」メニューから、「通知」「通知メソッド」の順に選択して、通知メソッド・ページにアクセスします。このページから、PL/SQLプロシージャに基づく新規の通知を定義できます。第4.4項「PL/SQLプロシージャを使用した通知の送信」を参照してください。

スキーマ所有者、パッケージ名およびプロシージャ名を含む完全修飾名を必ず使用してください。プロシージャはリポジトリ所有者によって実行されるため、リポジトリ所有者にプロシージャの実行権限があります。

PL/SQLプロシージャに基づく通知メソッドを作成します。メソッドの定義には次の情報が必要です。

  • 名前

  • 説明

  • PL/SQLプロシージャ

完全修飾プロシージャ名(OWNER.PKGNAME.PROCNAMEなど)を入力し、管理リポジトリの所有者がプロシージャの実行権限を持つようにする必要があります。

例4-9は必要な情報の例です。

例4-9 PL/SQLプロシージャで必要な情報

Name Open trouble ticket
Description Notification method to open a trouble ticket in the event
PLSQL Procedure ticket_sys.ticket_ops.open_ticket

図4-6に、Enterprise Manager UIからPL/SQLベースの通知メソッドを追加する方法を示します。

図4-6 PL/SQLプロシージャの追加

PL/SQLプロシージャの追加

手順4: 通知メソッドのインシデント・ルールへの割当て。

既存のルールを編集(または新規のインシデント・ルールを作成)できます。「設定」メニューから、「インシデント」「インシデント・ルール」の順に選択します。インシデント・ルール・ページが表示されます。ここから、拡張通知メソッドに見つかった新しいPL/SQLプロシージャを指定するアクションをルールに追加できます。

Enterprise Manager環境には複数のPL/SQLベースのメソッドが構成されている場合があります。

インシデント、イベントおよび問題情報をPL/SQLプロシージャに渡す方法の詳細は、「PL/SQLプロシージャへの情報の受渡し」を参照してください。

例4-10 PL/SQLスクリプト

-- Assume log_table is created by following DDL
-- CREATE TABLE log_table (message VARCHAR2(4000)) ;
-- Define PL/SQL notification method for Events
CREATE OR REPLACE PROCEDURE log_table_notif_proc(s IN GC$NOTIF_EVENT_MSG)
IS
  l_categories gc$category_string_array;
  l_category_codes gc$category_string_array;
  l_attrs gc$notif_event_attr_array;
  l_ca_obj gc$notif_corrective_action_job;
BEGIN
  INSERT INTO log_table VALUES ('notification_type: ' || s.msg_info.notification_type);
  INSERT INTO log_table VALUES ('repeat_count: ' || s.msg_info.repeat_count);
  INSERT INTO log_table VALUES ('ruleset_name: ' || s.msg_info.ruleset_name);
  INSERT INTO log_table VALUES ('rule_name: ' || s.msg_info.rule_name);
  INSERT INTO log_table VALUES ('rule_owner: ' || s.msg_info.rule_owner);
  INSERT INTO log_table VALUES ('message: ' || s.msg_info.message);
  INSERT INTO log_table VALUES ('message_url: ' || s.msg_info.message_url);
  INSERT INTO log_table VALUES ('event_instance_guid: ' || s.event_payload.event_instance_guid);
  INSERT INTO log_table VALUES ('event_type: ' || s.event_payload.event_type);
  INSERT INTO log_table VALUES ('event_name: ' || s.event_payload.event_name);
  INSERT INTO log_table VALUES ('event_msg: ' || s.event_payload.event_msg);
  INSERT INTO log_table VALUES ('source_obj_type: ' || s.event_payload.source.source_type);
  INSERT INTO log_table VALUES ('source_obj_name: ' || s.event_payload.source.source_name);
  INSERT INTO log_table VALUES ('source_obj_url: ' || s.event_payload.source.source_url);
  INSERT INTO log_table VALUES ('target_name: ' || s.event_payload.target.target_name);
  INSERT INTO log_table VALUES ('target_url: ' || s.event_payload.target.target_url);
  INSERT INTO log_table VALUES ('severity: ' || s.event_payload.severity);  INSERT INTO log_table VALUES ('severity_code: ' || s.event_payload.severity_code);
  INSERT INTO log_table VALUES ('event_reported_date: ' || to_char(s.event_payload.reported_date, 'D MON DD HH24:MI:SS'));

  l_categories := s.event_payload.categories;
  IF l_categories IS NOT NULL
  THEN
    FOR c IN 1..l_categories.COUNT
    LOOP
      INSERT INTO log_table VALUES ('category ' || c || ' - ' || l_categories(c));
    END LOOP;
  END IF;

  l_category_codes := s.event_payload.category_codes;
  IF l_categories IS NOT NULL
  THEN
    FOR c IN 1..l_category_codes.COUNT
    LOOP
      INSERT INTO log_table VALUES ('category_code ' || c || ' - ' || l_category_codes(c));
    END LOOP;
  END IF;

  l_attrs := s.event_payload.event_attrs;
  IF l_attrs IS NOT NULL
  THEN
    FOR c IN 1..l_attrs.COUNT
    LOOP
        INSERT INTO log_table VALUES ('EV.ATTR name=' || l_attrs(c).name || ' value=' || l_attrs(c).value || ' nls_value=' || l_attrs(c).nls_value);    END LOOP;
  END IF;

COMMIT ;
END ;
/

例4-11 表にイベントを記録するPL/SQLスクリプト

CREATE TABLE event_log (
  notification_type      VARCHAR2(32),
  repeat_count           NUMBER,
  ruleset_name           VARCHAR2(256),
  rule_owner             VARCHAR2(256),
  rule_name              VARCHAR2(256),
  message                VARCHAR2(4000),
  message_url            VARCHAR2(4000),
  event_instance_guid    RAW(16),
  event_type             VARCHAR2(20),
  event_name             VARCHAR2(512),
  event_msg              VARCHAR2(4000),
  categories             VARCHAR2(4000),
  source_obj_type        VARCHAR2(120),
  source_obj_name        VARCHAR2(256),
  source_obj_url         VARCHAR2(4000),
  severity               VARCHAR2(128),
  severity_code          VARCHAR2(32),
  target_name            VARCHAR2(256),
  target_type            VARCHAR2(128),
  target_url             VARCHAR2(4000),
  host_name              VARCHAR2(256),
  timezone               VARCHAR2(64),
  occured                DATE,
  ca_guid                RAW(16),
  ca_name                VARCHAR2(128),
  ca_owner               VARCHAR2(256),
  ca_type                VARCHAR2(256),
  ca_status              VARCHAR2(64),
  ca_status_code         NUMBER,
  ca_job_step_output     VARCHAR2(4000),
  ca_execution_guid      RAW(16),
  ca_stage_change_guid   RAW(16)
)
;

CREATE OR REPLACE PROCEDURE log_event(s IN GC$NOTIF_EVENT_MSG)
IS
   l_categories gc$category_string_array;
   l_ca_obj gc$notif_corrective_action_job;
   l_categories_new VARCHAR2(1000);
BEGIN
    -- save event categories
   l_categories := s.event_payload.categories;
        IF l_categories IS NOT NULL
   THEN
     FOR c IN 1..l_categories.COUNT
     LOOP
       l_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||',');
     END LOOP;
   END IF;

   -- save event message
   IF s.msg_info.notification_type = 'NOTIF_CA' AND s.event_payload.corrective_action IS NOT NULL
   THEN
     l_ca_obj := s.event_payload.corrective_action;
      INSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid)
      VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name,s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, s.event_payload.occurrence_date, l_ca_obj.JOB_GUID, l_ca_obj.JOB_NAME, l_ca_obj.JOB_OWNER, l_ca_obj.JOB_TYPE, l_ca_obj.JOB_STATUS, l_ca_obj.JOB_STATUS_CODE, l_ca_obj.JOB_STEP_OUTPUT, l_ca_obj.JOB_EXECUTION_GUID, l_ca_obj.JOB_STATE_CHANGE_GUID);   ELSE
      INSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid)
      VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name, s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, s.event_payload.occurrence_date, null,null,null,null,null,null,null,null,null);
   END IF;
   COMMIT;
END log_event;
/

例4-12 表にインシデントを記録するPL/SQLスクリプト

CREATE TABLE incident_log ( 
  notification_type      VARCHAR2(32), 
  repeat_count           NUMBER, 
  ruleset_name           VARCHAR2(256), 
  rule_owner             VARCHAR2(256), 
  rule_name              VARCHAR2(256), 
  message                VARCHAR2(4000), 
  message_url            VARCHAR2(4000), 
  incident_id            VARCHAR2(128), 
  ticket_url             VARCHAR2(4000), 
  assoc_event_cnt        NUMBER, 
  severity               VARCHAR2(128), 
  severity_code          VARCHAR2(32), 
  priority               VARCHAR2(128), 
  priority_code          VARCHAR2(32), 
  status                 VARCHAR2(32), 
  categories             VARCHAR2(1000), 
  target_name            VARCHAR2(256), 
  target_type            VARCHAR2(128), 
  host_name              VARCHAR2(256), 
  timezone               VARCHAR2(64), 
  occured                DATE 
) 
; 
   CREATE OR REPLACE PROCEDURE log_incident(s IN GC$NOTIF_INCIDENT_MSG) 
IS 
   l_src_info_array GC$NOTIF_SOURCE_INFO_ARRAY; 
   l_src_info  GC$NOTIF_SOURCE_INFO; 
   l_categories gc$category_string_array; 
   l_target_obj GC$NOTIF_TARGET; 
   l_target_name VARCHAR2(256); 
   l_target_type VARCHAR2(256); 
   l_target_timezone VARCHAR2(256); 
   l_hostname VARCHAR2(256); 
   l_categories_new VARCHAR2(1000); 
BEGIN 
     -- Save Incident categories 
  IF l_categories IS NOT NULL 
   THEN 
     FOR c IN 1..l_categories.COUNT 
     LOOP 
       l_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||','); 
     END LOOP; 
   END IF; 

   -- GET target info 
   l_src_info_array := s.incident_payload.incident_attrs.source_info_arr; 
   IF l_src_info_array IS NOT NULL 
   THEN 
     FOR I IN 1..l_src_info_array.COUNT 
     LOOP 
       IF l_src_info_array(I).TARGET IS NOT NULL 
       THEN 
         l_target_name := l_src_info_array(I).TARGET.TARGET_NAME; 
         l_target_type := l_src_info_array(I).TARGET.TARGET_TYPE; 
         l_target_timezone := l_src_info_array(I).TARGET.TARGET_TIMEZONE; 
         l_hostname := l_src_info_array(I).TARGET.HOST_NAME; 
      END IF; 
     END LOOP; 
   END IF; 

   -- save Incident notification message    INSERT INTO incident_log(notification_type, repeat_count, ruleset_name, rule_owner, rule_name, message, message_url, incident_id, ticket_url, assoc_event_cnt, severity, severity_code, priority, priority_code, status, categories, target_name, target_type, host_name, timezone, occured) 
   VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_owner, s.msg_info.rule_name, s.msg_info.message, s.msg_info.message_url, s.incident_payload.incident_attrs.id, s.incident_payload.ticket_url, s.incident_payload.assoc_event_count, s.incident_payload.incident_attrs.severity, s.incident_payload.incident_attrs.severity_code, s.incident_payload.incident_attrs.priority, s.incident_payload.incident_attrs.priority_code, s.incident_payload.incident_attrs.STATUS, l_categories_new, l_target_name, l_target_type, l_hostname,l_target_timezone, s.incident_payload.incident_attrs.creation_date); 
   COMMIT; 
END log_incident; 
/

例4-13 表に問題を記録するPL/SQLスクリプト

CREATE TABLE problem_log ( 
  notification_type      VARCHAR2(32), 
  repeat_count           NUMBER, 
  ruleset_name           VARCHAR2(256), 
  rule_owner             VARCHAR2(256), 
  rule_name              VARCHAR2(256), 
  message                VARCHAR2(4000), 
  message_url            VARCHAR2(4000), 
  problem_key            VARCHAR2(850), 
  assoc_incident_cnt     NUMBER, 
  problem_id             NUMBER, 
  owner                  VARCHAR2(256), 
  severity               VARCHAR2(128), 
  severity_code          VARCHAR2(32), 
  priority               VARCHAR2(128), 
  priority_code          VARCHAR2(32), 
  status                 VARCHAR2(32), 
  categories             VARCHAR2(1000), 
  target_name            VARCHAR2(256), 
  target_type            VARCHAR2(128), 
  host_name              VARCHAR2(256),   timezone               VARCHAR2(64), 
  occured                DATE 
) 
; 
     CREATE OR REPLACE PROCEDURE log_problem(s IN GC$NOTIF_PROBLEM_MSG) 
IS 
   l_src_info_array GC$NOTIF_SOURCE_INFO_ARRAY; 
   l_src_info  GC$NOTIF_SOURCE_INFO; 
   l_categories gc$category_string_array; 
   l_target_obj GC$NOTIF_TARGET; 
   l_target_name VARCHAR2(256); 
   l_target_type VARCHAR2(256); 
   l_target_timezone VARCHAR2(256); 
   l_hostname VARCHAR2(256); 
   l_categories_new VARCHAR2(1000); 
BEGIN 
     -- Save Problem categories 
  l_categories := s.problem_payload.problem_attrs.categories; 
  IF l_categories IS NOT NULL 
   THEN 
     FOR c IN 1..l_categories.COUNT 
     LOOP 
       l_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||','); 
     END LOOP; 
   END IF; 

   -- GET target info 
   l_src_info_array := s.problem_payload.problem_attrs.source_info_arr; 
   IF l_src_info_array IS NOT NULL 
   THEN 
     FOR I IN 1..l_src_info_array.COUNT 
     LOOP 
       IF l_src_info_array(I).TARGET IS NOT NULL 
       THEN 
         l_target_name := l_src_info_array(I).TARGET.TARGET_NAME; 
         l_target_type := l_src_info_array(I).TARGET.TARGET_TYPE; 
         l_target_timezone := l_src_info_array(I).TARGET.TARGET_TIMEZONE; 
         l_hostname := l_src_info_array(I).TARGET.HOST_NAME; 
      END IF; 
     END LOOP; 
   END IF; 

  -- save Problem notification message 
   INSERT INTO problem_log(notification_type, repeat_count, ruleset_name, rule_owner, rule_name, message, message_url, problem_key, assoc_incident_cnt, problem_id, owner,  severity, severity_code, priority, priority_code, status, categories, target_name, target_type, host_name, timezone, occured) 
   VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_owner, s.msg_info.rule_name, s.msg_info.message, s.msg_info.message_url, s.problem_payload.problem_key,            s.problem_payload.ASSOC_INCIDENT_COUNT, s.problem_payload.problem_attrs.id,            s.problem_payload.problem_attrs.owner, s.problem_payload.problem_attrs.severity,            s.problem_payload.problem_attrs.severity_code, s.problem_payload.problem_attrs.PRIORITY, s.problem_payload.problem_attrs.PRIORITY_CODE, s.problem_payload.problem_attrs.status, l_categories_new, l_target_name, l_target_type, l_hostname,l_target_timezone, s.problem_payload.problem_attrs.CREATION_DATE); 
   COMMIT; 
END log_problem; 
/

4.4.2 12cより前のPL/SQL拡張通知メソッドの移行

12cより前の通知をEnterprise Manager 12cのイベント通知にマップします。イベント・タイプmetric_alert、target_availabilityおよびjob_status_alertは、12cより前の通知機能に対応します。


注意:

ポリシー違反は、Enterprise Manager 12c以上では使用できなくなりました。

この項では、Enterprise Manager 12c PL/SQL通知ペイロードと12cより前のPL/SQL通知ペイロードのマッピングについて説明します。この情報を使用して、12c PL/SQL通知ペイロードを使用するように既存の12cより前のPL/SQLユーザー・コールバック・プロシージャを更新できます。ポリシー違反は12cリリースではサポートされなくなりました。

4.4.2.1 MGMT_NOTIFY_SEVERITYのマッピング

イベント・タイプがmetric_alertの場合

gc$notif_event_payload .event_type='metric_alert'の場合は次のマップを使用します。

表4-8 メトリック・アラートのマッピング

MGMT_NOTIFY_SEVERITY 12cの通知ペイロード

TARGET_NAME

gc$notif_target.target_name

TARGET_TYPE

gc$notif_target.target_type

TIMEZONE

gc$notif_target.target_timezone

HOST_NAME

gc$notif_target.host_name

MERTIC_NAME

gc$notif_event_attr_arrayのname='metric_guid_id'のgc$notif_event_attr.value。

METRIC_DESCRIPTION

gc$notif_event_attr_arrayのname='metric_description'のgc$notif_event_attr.value。

METRIC_COLUMN

gc$notif_event_attr_arrayのname='metric_column'のgc$notif_event_attr.value。

METRIC_VALUE

gc$notif_event_attr_arrayのname='value'のgc$notif_event_attr.value。

KEY_VALUE

gc$notif_event_attr_arrayのgc$notif_event_attr.name='num_keys'の値がnullではなく、0より大きい場合に、複数のキー・ベース・メトリックに適用されます。

後述の詳細な説明を参照してください。

KEY_VALUE_NAME

gc$notif_event_attr_arrayのgc$notif_event_attr.name='num_keys'の値がnullではなく、0より大きい場合に、複数のキー・ベース・メトリックに適用されます。

後述の詳細な説明を参照してください。

KEY_VALUE_GUID

gc$notif_event_attr_arrayのname='key_ value'のgc$notif_event_attr.value。

CTXT_LIST

gc$notif_event_context_array

COLLECTION_TIMESTAMP

gc$notif_event_payload. reported_date

SEVERITY_CODE

gc$notif_event_payload.severity_codeから導出されます。表4-9「重大度コードのマッピング」を参照してください。

MESSAGE

gc$notif_msg_info.message

SEVERITY_GUID

gc$notif_event_attr_arrayのname='severity_guid'のgc$notif_event_attr.value。

METRIC_GUID

gc$notif_event_attr_arrayのname='metric_guid'のgc$notif_event_attr.value。

TARGET_GUID

gc$notif_target.target_guid

RULE_OWNER

gc$notif_msg_info.rule_owner

RULE_NAME

gc$notif_msg_info.ruleset_name


次の例は、Enterprise Manager 12cの通知ペイロードから、類似した12cより前のKEY_VALUEおよびKEY_VALUE_NAMEを取得する方法を示しています。

例4-14 KEY_VALUEおよびKEY_VALUE_NAMEの抽出

-- Get the pre-12c KEY_VALUE and KEY_VALUE_NAME from an Enterprise Manager 12c
-- notification payload
-- parameters
--   IN Parameters:
--      event_msg : The event notification payload
--   OUT Parameters
--      key_value_name_out : the KEY_VALUE_NAME backward compitable to pre-12c 
--                           notification payload
--      key_value_out      : the KEY_VALUE backward compitable to pre-12c 
--                           notification payload
--
CREATE OR REPLACE PROCEDURE get_pre_12c_key_value(
          event_msg IN GC$NOTIF_EVENT_MSG,
          key_value_name_out OUT VARCHAR2,
          key_value_out OUT VARCHAR2)
IS

  l_key_columns MGMT_SHORT_STRING_ARRAY := MGMT_SHORT_STRING_ARRAY();
  l_key_column_values MGMT_MEDIUM_STRING_ARRAY := MGMT_MEDIUM_STRING_ARRAY();
  l_key_value VARCHAR2(1790) := NULL;
  l_num_keys NUMBER := 0;
  l_attrs gc$notif_event_attr_array;
  l_key_value_name VARCHAR2(512);
BEGIN
  l_attrs := event_msg.event_payload.event_attrs;
  key_value_name_out := NULL;
  key_value_out := NULL;

  IF l_attrs IS NOT NULL AND
     l_attrs.COUNT > 0
  THEN
    l_key_columns.extend(7);
    l_key_column_values.extend(7);
    FOR c IN 1..l_attrs.COUNT
    LOOP
      CASE l_attrs(c).name
        WHEN 'num_keys' THEN
          BEGIN
            l_num_keys := to_number(l_attrs(c).value);
          EXCEPTION
          WHEN OTHERS THEN
            -- should never happen, but guard against it l_num_keys := 0;
          END;
        WHEN 'key_value' THEN
          l_key_value := substr(l_attrs(c).nls_value,1,1290);
        WHEN 'key_column_1' THEN
          l_key_columns(1) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_2' THEN
          l_key_columns(2) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_3' THEN
          l_key_columns(3) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_4' THEN
          l_key_columns(4) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_5' THEN
          l_key_columns(5) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_6' THEN
          l_key_columns(6) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_7' THEN
          l_key_columns(7) := substr(l_attrs(c).nls_value,1,64);
        WHEN 'key_column_1_value' THEN
          l_key_column_values(1) := substr(l_attrs(c).nls_value,1,256);
        WHEN 'key_column_2_value' THEN
          l_key_column_values(2) := substr(l_attrs(c).nls_value,1,256);
        WHEN 'key_column_3_value' THEN
          l_key_column_values(3) := substr(l_attrs(c).nls_value,1,256);
        WHEN 'key_column_4_value' THEN
          l_key_column_values(4) := substr(l_attrs(c).nls_value,1,256);
        WHEN 'key_column_5_value' THEN
          l_key_column_values(5) := substr(l_attrs(c).nls_value,1,256);
        WHEN 'key_column_6_value' THEN
          l_key_column_values(6) := substr(l_attrs(c).nls_value,1,256);
        WHEN 'key_column_7_value' THEN
          l_key_column_values(7) := substr(l_attrs(c).nls_value,1,256);
        ELSE
          NULL;
      END CASE;
    END LOOP;

    -- get key_value and key_value_name when l_num_keys > 0 

    IF l_num_keys > 0
    THEN
      -- get key value name
      IF l_key_columns IS NULL OR l_key_columns.COUNT = 0
      THEN
        key_value_name_out := NULL;
      ELSE
        l_key_value_name := NULL;
        FOR i in l_key_columns.FIRST..l_num_keys
        LOOP
          IF i > 1
          THEN
            l_key_value_name := l_key_value_name || ';';
          END IF;
          l_key_value_name := l_key_value_name || l_key_columns(i);
        END LOOP;
        key_value_name_out := l_key_value_name;
      END IF;
            -- get key_value
      IF l_num_keys = 1
      THEN
        key_value_out := l_key_value;
      ELSE
        l_key_value := NULL;
        IF l_key_column_values IS NULL OR l_key_column_values.COUNT = 0
        THEN
          key_value_out := NULL;
        ELSE 
          FOR i in l_key_column_values.FIRST..l_num_keys
          LOOP
            IF i > 1
            THEN
              l_key_value := l_key_value || ';';
            END IF;
            l_key_value := l_key_value || l_key_column_values(i);
                        END LOOP;
          --  max length for key value in pre-12c = 1290
          key_value_out := substr(l_key_value,1,1290);
        END IF;
      END IF;
    END IF; -- l_num_keys > 0
  END IF;  -- l_attrs IS NOT NULL
END get_pre_12c_key_value;
/

イベント・タイプがmetric_alertの場合:

イベント・タイプがmetric_alertの場合、重大度コードについて、12cから12cより前への次のマッピングを使用します。

表4-9 重大度コードのマッピング

12cの重大度コード 12cより前の重大度コード

GC_EVENT_RECEIVER.FATAL 32

MGMT_GLOBAL.G_SEVERITY_CRITICAL 25

GC_EVENT_RECEIVER.CRITICAL 16

MGMT_GLOBAL.G_SEVERITY_CRITICAL 25

GC_EVENT_RECEIVER.WARNING 8

MGMT_GLOBAL.G_SEVERITY_WARNING 20

GC_EVENT_RECEIVER.CLEAR 0

MGMT_GLOBAL.G_SEVERITY_CLEAR 15


イベント・タイプがtarget_availabilityの場合:

gc$notif_event_payload .event_type='target_availability'の場合は次のマップを使用します。

表4-10 ターゲット可用性のマッピング

MGMT_NOTIFY_SEVERITY 12cの通知ペイロード

TARGET_NAME

gc$notif_target.target_name

TARGET_TYPE

gc$notif_target.target_type

TIMEZONE

gc$notif_target.target_timezone

HOST_NAME

gc$notif_target.host_name

MERTIC_NAME

固定値"Response"を使用します。

METRIC_DESCRIPTION

NULL

METRIC_COLUMN

固定値"Status"を使用します。

METRIC_VALUE

gc$notif_event_attr_arrayのname='target_status'のgc$notif_event_attr.value。

KEY_VALUE

NULL

KEY_VALUE_NAME

NULL

KEY_VALUE_GUID

NULL

CTXT_LIST

gc$notif_event_context_array

COLLECTION_TIMESTAMP

gc$notif_event_payload. reported_date

SEVERITY_CODE

gc$notif_event_attr_arrayのname='avail_severity'のgc$notif_event_attr.value。

MESSAGE

gc$notif_msg_info.message

SEVERITY_GUID

gc$notif_event_attr_arrayのname='severity_guid'のgc$notif_event_attr.value。

METRIC_GUID

gc$notif_event_attr_arrayのname='metric_guid_id'のgc$notif_event_attr.value。

TARGET_GUID

gc$notif_target.target_guid

RULE_OWNER

gc$notif_msg_info.rule_owner

RULE_NAME

gc$notif_msg_info.ruleset_name


4.4.2.2 MGMT_NOTIFY_JOBのマッピング

gc$notif_event_payload .event_type='job_status_change'の場合は次のマップを使用します。

表4-11 ジョブ・ステータス変更のマッピング

MGMT_NOTIFY_JOB 12cの通知ペイロード

JOB_NAME

gc$notif_source.source_name

JOB_OWNER

gc$notif_source.source_owner

JOB_TYPE

gc$notif_source.source_sub_type

JOB_STATUS

gc$notif_event_attr_arrayのname='execution_status_code'のgc$notif_event_attr.value。

STATE_CHANGE_GUID

gc$notif_event_attr_arrayのname='state_change_guid'のgc$notif_event_attr.value。

JOB_GUID

gc$notif_source.source_guid

EXECUTION_ID

gc$notif_event_attr_arrayのname='execution_id'のgc$notif_event_attr.value。

TARGETS

gc$notif_target.target_name、gc$notif_target.target_type

RULE_OWNER

gc$notif_msg_info.rule_owner

RULE_NAME

gc$notif_msg_info.ruleset_name

OCCURRED_DATE

gc$notif_event_payload. reported_date


4.4.2.3 MGMT_NOTIFY_CORRECTIVE_ACTIONのマッピング

gc$notif_msg_info.notification_typeがNOTIF_CAに設定されている場合は、修正処理関連ペイロードが移入されます。

次の属性のマッピングについては、表4-8、「メトリック・アラートのマッピング」でMGMT_NOTIFY_SEVERITYオブジェクトに対して提供されているマッピング情報を使用してください。

MERTIC_NAME

METRIC_COLUMN

METRIC_VALUE

KEY_VALUE

KEY_VALUE_NAME

KEY_VALUE_GUID

CTXT_LIST

RULE_OWNER

RULE_NAME

OCCURRED_DATE

MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのジョブ関連属性のマッピングには、次のマップを使用します。

表4-12 修正処理のマッピング

MGMT_NOTIFY_CORRECTIVE_ACTION 12cの通知ペイロード

JOB_NAME

gc$ notif_corrective_action_job.job_name

JOB_OWNER

gc$ notif_corrective_action_job.job_owner

JOB_TYPE

gc$ notif_corrective_action_job.job_type

JOB_STATUS

gc$ notif_corrective_action_job.status_code

STATE_CHANGE_GUID

gc$ notif_corrective_action_job. job_state_change_guid

JOB_GUID

gc$ notif_corrective_action_job. job _guid

EXECUTION_ID

gc$ notif_corrective_action_job. job_execution_guid

OCCURRED_DATE

gc$ notif_corrective_action_job.occurred_date

TARGETS

ターゲットは1つまでです。関連付けられたターゲットには、gc$notif_target.target_name、gc$notif_target.target_typeの値を使用します。


4.5 サード・パーティ・システムへのSNMPトラップの送信

Enterprise Managerは、Simple Network Management Protocol (SNMP)を介したサード・パーティ管理ツールとの統合をサポートしています。たとえば、SNMPを使用して、選択済メトリックがしきい値を超えていることをサード・パーティ・アプリケーションに通知できます。


重要:

OMSによって送信されたトラップをサード・パーティ・システムで解釈するには、最初にomstrap.v1ファイルをサード・パーティのSNMPコンソールにロードする必要があります。このファイルおよびその場所の詳細は、「MIB定義」を参照してください。

Enterprise Manager 12cバージョンのMIBファイルは、10gおよび11gのMIBコンテンツを組み込んでおり、以前のEnterprise Managerのリリースとの下位互換性を保持しています。


Enterprise ManagerはSNMPバージョン1およびバージョン3の両方のトラップをサポートしています。トラップは、MIB定義(付録B「Enterprise Manager MIBの定義」)に説明されています。MIBの動作方法の詳細は、「管理情報ベース(MIB)」を参照してください。Enterprise Manager 12cを使用している場合、付録A「Enterprise Manager MIBの変数の解釈」および付録B「Enterprise Manager MIBの定義」を参照してください。12cより前のリリースのEnterprise Managerからアップグレードする場合、特定のリリースのマッピングについては、付録C「SNMPトラップのマッピング」を参照してください。

Enterprise Manager 12cでは、SNMPトラップはイベント通知に対してのみ配信されます。SNMPトラップ通知は、インシデントまたは問題に対してはサポートされません。


注意:

ユーザーがインシデント・ルールの作成または編集時に1つ以上のSNMPトラップ通知メソッドを選択するには、スーパー管理者権限を持つ管理者が、SNMPトラップに基づく通知メソッドをあらかじめ構成しておく必要があります。

4.5.1 SNMPバージョン1とSNMPバージョン3

SNMPバージョン3は、バージョン1と同じ基本アーキテクチャを共有していますが、SNMP管理およびセキュリティに多数の拡張機能を追加しています。Enterprise Managerに関する主な拡張機能は、認証とプライバシの両方、さらには認証とアクセス制御を提供する追加のセキュリティ・レベルに関連します。

ユーザーに基づくセキュリティ・レベル(USM)

USMは、SNMPメッセージの処理時にSNMPエンジンが従うセキュリティ関連プロシージャを定義します。Enterprise Manager SNMP V3サポートは、この追加されたSNMPメッセージ・レベルのセキュリティ拡張機能を利用して、セキュアなメッセージング環境を提供します。

USMは次の2つの主なセキュリティ脅威に対して保護します。

  • 情報の変更: 変更の脅威とは、一部の認可されていないエンティティが、認可されているプリンシパルにかわって、オブジェクトの値の改ざんなどの認可されていない管理操作を有効にするような方法で、生成された送信中のSNMPメッセージを変更するような危険性です。

  • マスカレード: マスカレードの脅威とは、一部のユーザーには認可されていない管理操作が、適切な認可を持つ別のユーザーのふりをすることによって試行されるような危険性です。

両方のSNMPバージョンで、SNMPトラップを使用してEnterprise Manager拡張通知を設定する基本的な方法は次のように同じままです。

  1. SNMPトラップに基づく通知メソッドを定義します。

  2. 通知メソッドをインシデント・ルールに割り当てます。

4.5.2 SNMP V3トラップ通知メソッドの操作

SNMP V3トラップ通知メソッドを定義するプロシージャは、V1の場合とは若干異なります。Enterprise Managerリリース12.1.0.4以降、SNMP V3トラップ通知メソッドに関する主要情報と構成機能は、個別のインタフェースにより統合されています。SNMP V3トラップのインタフェースを使用して、SNMP通知メソッドを作成し、SNMPトラップを送信するようにOMSを有効にし、SNMPトラップ通知のユーザー・セキュリティ設定を定義する処理を実行できます。

4.5.2.1 SNMPトラップ通知を送信するOMSの構成

SNMPトラップ通知メソッドを作成する前に、SNMPトラップ通知を処理するために環境で1つ以上のOMSを有効にする必要があります。SNMP V3の場合、OMSは、ネットワークにデプロイされたすべてのSNMPエージェントを監視しているSNMPマネージャにトラップを送信するSNMPエージェントとして機能します。

  1. 「設定」メニューから、「通知」「SNMPv3トラップ」の順に選択します。スタート・ガイド・ページが表示されます。このページには、サード・パーティのSNMPマネージャにトラップを送信するようにEnterprise Managerを構成するための高レベルのワークフローが記載されています。

    SNMP V3スタート・ガイド・ページを表示します。
  2. 「構成」タブをクリックします。構成ページが表示されます。

    構成ページを表示します。
  3. 「OMS構成」領域で、有効にするOMSを選択します。

  4. 必要に応じて、OMSごとに次を確認して変更を行います。

    • OMSにはSNMPv3トラップのポートが必要です。デフォルト・ポートがOMSで使用できるかどうかを確認します。

    • OMSにはトラップを送信するための一意のエンジンIDが必要です。デフォルトでは、ホスト名とポートから生成されます。

  5. 「有効化」をクリックします。

4.5.2.2 SNMP V3トラップ通知メソッドの作成/編集

OMSがSNMPトラップ通知を送信するように有効にしたら、次の手順は、インシデント・ルールで使用できる通知メソッドの作成です。

  1. 「設定」メニューから、「通知」「SNMPv3トラップ」の順に選択します。スタート・ガイド・ページが表示されます。


    注意:

    既存の通知メソッドを編集する場合、「通知メソッド」領域から目的のメソッドを選択して「編集」をクリックします。

  2. 「構成」タブをクリックします。構成ページが表示されます。

    構成ページを表示します。
  3. 「通知メソッド」領域から、「作成」をクリックします。SNMPv3トラップ: 通知メソッドの作成ページが表示されます。通知メソッドの作成ページを表示します。

  4. 必要な通知メソッドの定義パラメータを入力します。注意: この時点で、繰返し通知を有効にできます。

  5. ユーザー・セキュリティ・モデルの新しいエンティティを作成する場合、「ユーザー・セキュリティ・モデル」領域で、「新規作成」オプションが選択されていることを確認します。

    1. 資格証明を一意に識別する「ユーザー名」を指定します。SNMP V3を使用すると、複数のユーザー名をSNMPエージェントおよびSNMPマネージャ・アプリケーションに設定できます。

    2. ドロップダウン・メニューから「セキュリティ・レベル」を選択します。使用可能なパラメータは、セキュリティ・レベルに応じて使用可能になります。次の3つのレベルから選択します。

      AuthPriv (認証 + プライバシ): 送信者のIDは、受信者によって確認される必要があります(認証)。SNMP V3メッセージは、送信者によって暗号化され、受信者によって復号化される必要があります(プライバシ)。

      AuthNoPriv (認証のみ): 受信者は、メッセージを受け取る前に送信者のIDを認証する必要があります。

      NoAuthNoPriv (セキュリティなし): 送信者のID確認もメッセージの暗号化も使用されません。

    3. AuthPrivおよびAuthNoPrivセキュリティ・レベルの場合、目的の「認証プロトコル」を選択します。次の2つの認証プロトコルが使用可能です。

      Secure Hash Algorithm(SHA)

      メッセージ・ダイジェスト・アルゴリズム(MD5)

      メッセージが認証されている場合、認証プロトコルを使用してメッセージ・ダイジェストを作成します。

      プライバシ・プロトコル(AuthPrivセキュリティ・レベルに使用)がメッセージの暗号化/復号化に使用されます。USMはデータ暗号化規格(DES)を使用します。プライバシ・パスワードがプライバシ・プロトコルと組み合せて使用されます。暗号化/復号化が成功するためにSNMPエージェントとSNMPマネージャの両方のプライバシ・パスワードが一致する必要があります。

    ユーザー・セキュリティ・モデル・エントリをすでに事前定義している場合、「既存のものを使用」オプションを選択し、ドロップダウン・メニューからUSMエントリのいずれかを選択します。ユーザー名別にUSMエントリがリストされます。


    重要:

    USM資格証明はOMSと外部トラップ受信者で同一であることを確認してください。一致しない場合、Enterprise ManagerはSNMPトラップをまだ送信しますが、トラップは受信されません。USM資格証明が無効の場合でもEnterprise ManagerはSNMPトラップを送信しますが、正しくない資格証明がSNMP受信者側で認証エラーになるためトラップは受信されません。このタイプの認証エラーは、Enterprise Managerコンソールからは見えません。

  6. 必要な通知メソッドおよびUSMパラメータを入力したら、「保存」をクリックします。新しく作成された認証メソッドは構成ページの「通知メソッド」領域に表示されます。

    新しく作成された通知メソッド

注意:

SNMP V3トラップ通知メソッドを定義したら、ルールに追加する必要があります。手順は、「サード・パーティ・システムにSNMPトラップを送信するルールの作成」を参照してください。

4.5.2.3 ユーザー・セキュリティ・モデル・エントリの編集

USMエントリをいつでも追加できます。

  1. 「設定」メニューから、「通知」「SNMPv3トラップ」の順に選択します。

  2. 「構成」タブをクリックします。

  3. 「ユーザー・セキュリティ・モデル・エントリ」領域から、「作成」をクリックします。「ユーザー・セキュリティ・モデル・エントリ」ダイアログが表示されます。

    「ユーザー・セキュリティ・モデル・エントリ」ダイアログ
  4. 資格証明を一意に識別する「ユーザー名」を指定します。SNMP V3を使用すると、複数のユーザー名をSNMPエージェントおよびSNMPマネージャ・アプリケーションに設定できます。

  5. ドロップダウン・メニューから「セキュリティ・レベル」を選択します。使用可能なパラメータは、セキュリティ・レベルに応じて使用可能になります。次の3つのレベルから選択します。

    AuthPriv (認証 + プライバシ): 送信者のIDは、受信者によって確認される必要があります(認証)。SNMP V3メッセージは、送信者によって暗号化され、受信者によって復号化される必要があります(プライバシ)。

    AuthNoPriv (認証のみ): 受信者は、メッセージを受け取る前に送信者のIDを認証する必要があります。

    NoAuthNoPriv (セキュリティなし): 送信者のID確認もメッセージの暗号化も使用されません。

  6. AuthPrivおよびAuthNoPrivセキュリティ・レベルの場合、目的の「認証プロトコル」を選択します。次の2つの認証プロトコルが使用可能です。

    Secure Hash Algorithm(SHA)

    メッセージ・ダイジェスト・アルゴリズム(MD5)

    メッセージが認証されている場合、認証プロトコルを使用してメッセージ・ダイジェストを作成します。

    プライバシ・プロトコル(AuthPrivセキュリティ・レベルに使用)がメッセージの暗号化/復号化に使用されます。USMはデータ暗号化規格(DES)を使用します。プライバシ・パスワードがプライバシ・プロトコルと組み合せて使用されます。暗号化/復号化が成功するためにSNMPエージェントとSNMPマネージャの両方のプライバシ・パスワードが一致する必要があります。

  7. 「OK」をクリックします。

    新しいUSMユーザー名が「ユーザー・セキュリティ・モデル・エントリ」表に表示されます。新しいSNMP V3トラップ通知メソッドの作成中、USMユーザー名はExisting Entriesドロップダウン・メニューから選択可能なオプションとして表示されます。

    USMを編集した後、それを使用する通知メソッドを介して変更を確認する必要があります。

4.5.2.4 使用可能なSNMP V3トラップ通知メソッドの表示

使用可能なSNMP V3トラップ通知メソッドを表示するには、次の手順を実行します。

  1. 「設定」メニューから、「通知」「SNMPv3トラップ」の順に選択します。

  2. 「構成」タブをクリックします。

  3. 「通知メソッド」領域に既存のSNMP V3トラップ通知メソッドが表示されます。

4.5.2.5 SNMP V3トラップ通知メソッドの削除

使用可能なSNMP V3トラップ通知メソッドを削除するには、次の手順を実行します。

  1. 「設定」メニューから、「通知」「SNMPv3トラップ」の順に選択します。

  2. 「構成」タブをクリックします。

  3. 「通知メソッド」領域から、既存のSNMP V3トラップ通知メソッドを選択します。

  4. 「削除」をクリックします。

4.5.3 SNMP V1トラップの作成

手順1: SNMPトラップに基づく新規の通知メソッドの定義

スーパー管理者としてEnterprise Managerにログインします。「設定」メニューから、「通知」「通知メソッド」の順に選択して、通知メソッド・ページにアクセスします。このページから、SNMPトラップに基づく新規のメソッドを追加できます。

SNMPマスター・エージェントが実行されているホスト(マシン)の名前およびその他の詳細を、次の例のように指定する必要があります。示したように、SNMPホストがユーザーのSNMPトラップを受信します。

図4-7 SNMPトラップの必要情報

SNMPトラップの必要情報

注意:

設定をテストするための「SNMPトラップのテスト」ボタンがあります。

メトリック重大度情報は、SNMPトラップ内で一連の変数として渡されます。

手順2: 通知メソッドのルールへの割当て

既存のルールを編集(または新規インシデント・ルールを作成)し、拡張通知メソッドをサブスクライブするアクションをルールに追加できます。SNMPトラップを使用したインシデント・ルールの設定手順については、「サード・パーティ・システムへSNMPトラップを送信するルールの作成」を参照してください。

SNMPトラップ実装のサンプル

このシナリオでは、送信されるSNMPトラップからの一意の問題を識別するとします。同じ問題に関連するすべてのイベントは同じイベント順序の一部であることに留意してください。各イベント順序には一意の識別番号があります。

イベント順序は、検出されてイベントが発生した時点から、解決されて対応するクリア・イベントが生成されるまでの、特定の問題の存続期間を表す関連イベントの順序です。たとえば、ホストのCPU使用率が80%を超えると警告のメトリック・アラート・イベントが発生します。これにより、「ホストのCPU使用率が通常レベルを超えた」という問題を表すイベント順序が開始します。CPU使用率が90%を超えると同じ問題に対して別のクリティカル・イベントが発生し、イベントが同じイベント順序に追加されます。しばらくして、CPU使用率が通常レベルに戻ると、クリア・イベントが発生します。この時点で、問題が解決され、イベント順序が終了します。

このシナリオでのSNMPトラップの送信を例4-15に示します。情報の各断片は、SNMPトラップに変数として組み込まれて送信されます。

例4-15 SNMPトラップ

**************V1 TRAP***[1]*****************
Community : public
Enterprise :1.3.6.1.4.1.111.15.2
Generic :6
Specific :3
TimeStamp :67809
Agent adress :10.240.36.109
1.3.6.1.4.1.111.15.3.1.1.2.1: NOTIF_NORMAL
1.3.6.1.4.1.111.15.3.1.1.3.1: CPU Utilization is 92.658%, crossed warning (80) or critical (90) threshold.
1.3.6.1.4.1.111.15.3.1.1.4.1: https://sampleserver.oracle.com:5416/em/redirect?pageType=sdk-core-event-console-detailEvent&issueID=C77AE9E578F00773E040F00A6D242F90
1.3.6.1.4.1.111.15.3.1.1.5.1: Critical
1.3.6.1.4.1.111.15.3.1.1.6.1: CRITICAL
1.3.6.1.4.1.111.15.3.1.1.7.1: 0
1.3.6.1.4.1.111.15.3.1.1.8.1:
1.3.6.1.4.1.111.15.3.1.1.9.1:
1.3.6.1.4.1.111.15.3.1.1.10.1: Aug 17, 2012 3:26:36 PM PDT
1.3.6.1.4.1.111.15.3.1.1.11.1: Capacity
1.3.6.1.4.1.111.15.3.1.1.12.1: Capacity
1.3.6.1.4.1.111.15.3.1.1.13.1: Metric Alert
1.3.6.1.4.1.111.15.3.1.1.14.1: Load:cpuUtil
1.3.6.1.4.1.111.15.3.1.1.15.1: 281
1.3.6.1.4.1.111.15.3.1.1.16.1:
1.3.6.1.4.1.111.15.3.1.1.17.1: No
1.3.6.1.4.1.111.15.3.1.1.18.1: New
1.3.6.1.4.1.111.15.3.1.1.19.1: None
1.3.6.1.4.1.111.15.3.1.1.20.1: 0
1.3.6.1.4.1.111.15.3.1.1.21.1: sampleserver.oracle.com
1.3.6.1.4.1.111.15.3.1.1.22.1: https://sampleserver.oracle.com:5416/em/redirect?pageType=TARGET_HOMEPAGE&targetName=sampleserver.oracle.com&targetType=host
1.3.6.1.4.1.111.15.3.1.1.23.1: Host
1.3.6.1.4.1.111.15.3.1.1.24.1: sampleserver.oracle.com
1.3.6.1.4.1.111.15.3.1.1.25.1: SYSMAN
1.3.6.1.4.1.111.15.3.1.1.26.1:
1.3.6.1.4.1.111.15.3.1.1.27.1: 5.8.0.0.0
1.3.6.1.4.1.111.15.3.1.1.28.1: Operating System=Linux, Platform=x86_64,
1.3.6.1.4.1.111.15.3.1.1.29.1:
1.3.6.1.4.1.111.15.3.1.1.30.1:
1.3.6.1.4.1.111.15.3.1.1.31.1:
1.3.6.1.4.1.111.15.3.1.1.32.1:
1.3.6.1.4.1.111.15.3.1.1.33.1:
1.3.6.1.4.1.111.15.3.1.1.34.1:
1.3.6.1.4.1.111.15.3.1.1.35.1:
1.3.6.1.4.1.111.15.3.1.1.36.1:
1.3.6.1.4.1.111.15.3.1.1.37.1:
1.3.6.1.4.1.111.15.3.1.1.38.1:
1.3.6.1.4.1.111.15.3.1.1.39.1: SnmpNotifRuleset
1.3.6.1.4.1.111.15.3.1.1.40.1: SnmpNotifRuleset,SnmpNotifEvent
1.3.6.1.4.1.111.15.3.1.1.41.1: SYSMAN
1.3.6.1.4.1.111.15.3.1.1.42.1: C77AE9E578F00773E040F00A6D242F90
1.3.6.1.4.1.111.15.3.1.1.43.1:
1.3.6.1.4.1.111.15.3.1.1.44.1:
1.3.6.1.4.1.111.15.3.1.1.45.1:
1.3.6.1.4.1.111.15.3.1.1.46.1: CPU Utilization is 92.658%, crossed warning (80) or critical (90) threshold., Incident created by rule (Name = Incident management Ruleset for all targets, Incident creation Rule for metric alerts.; Owner = <SYSTEM>).
1.3.6.1.4.1.111.15.3.1.1.61.1: Metric GUID=0C71A1AFAC2D7199013837DA35522C08
1.3.6.1.4.1.111.15.3.1.1.62.1: Severity GUID=C77AE9E578EC0773E040F00A6D242F90
1.3.6.1.4.1.111.15.3.1.1.63.1: Cycle GUID=C77AE9E578EC0773E040F00A6D242F90
1.3.6.1.4.1.111.15.3.1.1.64.1: Collection Name=LoadLinux
1.3.6.1.4.1.111.15.3.1.1.65.1: Metric Group=Load
1.3.6.1.4.1.111.15.3.1.1.66.1: Metric=CPU Utilization (%)
1.3.6.1.4.1.111.15.3.1.1.67.1: Metric Description=
1.3.6.1.4.1.111.15.3.1.1.68.1: Metric value=92.658
1.3.6.1.4.1.111.15.3.1.1.69.1: Key Value=
1.3.6.1.4.1.111.15.3.1.1.70.1:
1.3.6.1.4.1.111.15.3.1.1.71.1:
1.3.6.1.4.1.111.15.3.1.1.72.1:
1.3.6.1.4.1.111.15.3.1.1.73.1:
1.3.6.1.4.1.111.15.3.1.1.74.1:
1.3.6.1.4.1.111.15.3.1.1.75.1:
1.3.6.1.4.1.111.15.3.1.1.76.1:
1.3.6.1.4.1.111.15.3.1.1.77.1:
1.3.6.1.4.1.111.15.3.1.1.78.1:
1.3.6.1.4.1.111.15.3.1.1.79.1:
1.3.6.1.4.1.111.15.3.1.1.80.1:
1.3.6.1.4.1.111.15.3.1.1.81.1:
1.3.6.1.4.1.111.15.3.1.1.82.1:
1.3.6.1.4.1.111.15.3.1.1.83.1:
1.3.6.1.4.1.111.15.3.1.1.84.1: Number of keys=0
1.3.6.1.4.1.111.15.3.1.1.85.1:
**************END V1 TRAP******************

この例は、イベントのライフサイクル中のOIDの使用方法を示しています。ここで、あるイベントについて、そのイベントがオープン中は、イベント順序のOIDはイベント重大度が変更されても同じままです。

イベント順序のOIDは次のとおりです。

1.3.6.1.4.1.111.15.3.1.1.42.1: C77AE9E578F00773E040F00A6D242F90

イベントの重大度コードのOID:

1.3.6.1.4.1.111.15.3.1.1.6.1: CRITICAL

イベントがクリアされると、これらのOIDは同じイベント順序で異なる重大度コードを持つことを示します。

イベント順序のOIDは次のとおりです。

1.3.6.1.4.1.111.15.3.1.1.42.1: C77AE9E578F00773E040F00A6D242F90

イベントの重大度コードのOID:

1.3.6.1.4.1.111.15.3.1.1.6.1: CLEAR

SNMP OID値の長さは、デフォルトで2560バイトに制限されます。emomsプロパティoracle.sysman.core.notification.snmp.max_oid_lengthを構成してデフォルト制限を変更します。

4.5.4 SNMPトラップ: 以前のEnterprise Managerリリースから12cへの移行


注意:

Enterprise Manager 12cより前のリリースから12cへアップグレードする場合、以前のリリースのEnterprise Manager (12cより前)を使用して定義されたSNMP拡張通知メソッドは、変更しなくても機能を続けます。

Enterprise Manager 11g以前では、次の2つのタイプのSNMPトラップがありました。

  • アラート

  • ジョブ・ステータス

Enterprise Manager 12cでは、メトリック・アラート、ターゲット可用性、コンプライアンス標準違反、ジョブ・ステータス変更などの、すべての使用可能なイベント・タイプを網羅する、1つの包括的なSNMPトラップ・タイプになりました。12cより前から12cへのSNMPトラップ・マッピングの詳細は、付録C「SNMPトラップのマッピング」を参照してください。トラップは、古いEnterprise Manager MIB定義に準拠します。そのため、Enterprise Manager 12cより前のトラップは引き続き送信されます。詳細は、付録C「SNMPトラップのマッピング」を参照してください。

また、Enterprise Manager 12cでは、SNMPトラップのサイズは、すべてのイベント・タイプに対応し、より包括的な情報を提供するするために増加しました。デフォルトでは、SNMPパケットの最大サイズは5120バイトです。サード・パーティ・システムで受信できるSNMPトラップのサイズに制限がある場合、Enterprise Managerが送信するデフォルトのSNMPトラップのサイズを変更できます。デフォルトのパケット・サイズを変更するには、このemoms oracle.sysman.core.notification.snmp_packet_lengthパラメータを設定し、OMSをバウンスします。


注意:

SNMPトラップのパケット・サイズを制限する場合に、oracle.sysman.core.notification.snmp_packet_lengthパラメータを3072 bytes (3K)より低く設定しないことをお薦めします。

Enterprise Manager 12c MIBにはEnterprise Manager 12c以前のすべてのMIB定義が含まれます。そのため、サード・パーティ・システムにEnterprise Manager 12c MIBがあれば、Enterprise Manager 12c以前のサイトとEnterprise Manager 12cのサイトの両方からSNMPトラップを受信できます。リリース・マッピングの詳細は、付録C「SNMPトラップのマッピング」を参照してください。

4.6 管理情報ベース(MIB)

Enterprise Manager Cloud Controlは、サード・パーティのSNMP対応アプリケーションにSNMPトラップを送信できます。トラップ・コンテンツの詳細は、管理情報ベース(MIB)変数から取得できます。次の項では、Enterprise ManagerのMIB変数を詳しく説明します。

4.6.1 MIBについて

MIBはASN.1表記で記述されたテキスト・ファイルで、SNMPがアクセスできる情報を含む変数を説明します。MIBオブジェクトとも呼ばれるMIBに記述されている変数は、SNMPを使用して監視できるアイテムです。監視される要素ごとに1つのMIBがあります。各モノリシックまたはサブエージェントは、取得できる変数とその特性を調べるために、それぞれのMIBを調べます。この情報のMIBへのカプセル化により、マスター・エージェントは新しいサブエージェントを動的に登録できます。マスター・エージェントがサブエージェントについて知る必要のあるすべての情報が、そのMIBに含まれています。管理フレームワークと管理アプリケーションも、同じ目的でこれらのMIBを調べます。MIBは、標準(パブリックとも呼びます)または固有(プライベートまたはベンダーとも呼びます)のいずれかです。

変数の実際の値はMIB内にはなく、計測というプラットフォーム対応プロセスによって取得されます。すべてのSNMP通信は1つ以上のMIBオブジェクトを参照するため、MIBの概念は非常に重要です。実質的にはMIB変数およびその現在の値が、フレームワークに転送されます。

4.6.2 MIB定義

SNMP MIBファイルは次の場所にあります。

OMS_HOME/network/doc/omstrap.v1


注意:

omstrap.v1ファイルはSNMP V1とSNMP V3の両方と互換性があります。

ファイルomstrap.v1はOMS MIBです。

詳細は、付録A「Enterprise Manager MIBの変数の解釈」を参照してください。

omstrap.v1のハードコピーは、付録B「Enterprise Manager MIBの定義」で参照できます。

SNMP OID値の長さは、デフォルトで2560バイトに制限されます。emomsプロパティoracle.sysman.core.notification.snmp.max_oid_lengthを構成してデフォルト制限を変更します。

Enterprise Manager 12cでは、SNMPトラップはイベント通知に対してのみ配信されます。SNMPトラップ通知は、インシデントまたは問題に対してはサポートされません。


注意:

以前のバージョンのEnterprise Manager(12cより前)を使用して定義されたSNMP拡張通知メソッドは、変更しなくても機能を続けます。トラップは、古いEnterprise Manager MIB定義に準拠します。

4.6.3 MIB変数の説明の解釈

この項ではMIB変数の説明に使用される形式を説明します。SNMP MIB定義バージョン1のSTATUS要素は、このMIB変数の説明には含まれないので注意してください。OracleではすべてのMIB変数がCURRENTとして実装されるため、この値は変化しません。

4.6.3.1 変数名

構文

SNMP MIB定義バージョン1のSYNTAX要素にマップします。

最大アクセス

SNMP MIB定義バージョン1のMAX-ACCESS要素にマップします。

ステータス

SNMP MIB定義バージョン1のSTATUS要素にマップします。

説明

変数のファンクション、使用方法および正確な導出方法を説明します。(たとえば、変数は特定の構成ファイル・パラメータまたはパフォーマンス表フィールドから導出されます。)適切な場合は、MIB定義バージョン1のDESCRIPTION部分を組み込みます。

標準的な範囲

変数の論理的な範囲ではなく標準的な範囲を示します。たとえば、多くのMIB変数の整数値の論理的な上限は4294967295ですが、実際にインストールされたものの標準的な範囲はより小さくなります。その一方で、大規模データベースのいくつかの変数値が実際にはこの論理的限界(ラップアラウンド)を超える場合があります。変数値の標準的な範囲を0から1,000または1,000から30億に指定することによって、サード・パーティの開発者がその変数の最も便利なグラフィック表示を開発することができます。

重要度

標準的なインストールの監視時における変数の重要度を示します。重要度の段階は「高」、「中」、「低」または「通常は使用されない」です。DBAは、ある変数を他の変数よりも厳密に監視することが必要になります。ただしこのカテゴリに当てはまる変数は、アプリケーション、データベース・サイズおよびDBAの目的などに応じてインストールごとに異なる可能性があります。それでも、MIBの他の変数に対する変数の重要度を評価することによって、多くのDBAにとって最も関心のある変数に対し、サード・パーティの開発者が集中的に開発作業を行うことができます。

関連する変数

この変数に関連している、このMIBまたはOracleで実装済の他のMIBの変数を列記します。たとえば、この変数の値は別のMIB変数の値から導出されている可能性があります。また、この変数の値が別の変数の値と反比例している場合もあります。この情報を得ることによって、サード・パーティの開発者が関連するMIB変数の便利なグラフィック表示を開発できます。

推奨される表示方法

管理アプリケーションを使用しているDBAにとって最も役立つように、この変数を表示する方法(単純な値、ゲージまたはアラームとしてなど)を示します。

4.7 修正処理ステータス変更情報の受渡し

修正処理ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対する自動レスポンスをカスタマイズできます。たとえば、クリティカルな修正処理の実行が失敗した場合に、OSスクリプトをコールして、社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開くとします。この場合、ステータス(「問題」や「中断」など)をスクリプトに渡してトラブル・チケットを開き、問題を提示します。

4.7.1 OSコマンドまたはスクリプトへの修正処理実行ステータスの受渡し

通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。

  • UNIX: $ENV_VARIABLE

  • MS Windows: %ENV_VARIABLE%

通知システムは、スクリプトをコールする前に次の環境変数を設定します。通知システムは、修正処理実行用の環境変数$NOTIF_TYPE = NOTIF_CAを設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。

次の表に、修正処理の環境変数をリストします。これらは、イベントに対して修正処理が完了したときに移入されます。

表4-13 修正処理環境変数

環境変数 説明

CA_JOB_STATUS

修正処理ジョブの実行ステータス。

CA_JOB_NAME

修正処理の名前。

CA_JOB_OWNER

修正処理の所有者。

CA_JOB_STEP_OUTPUT

値は修正処理の実行からのテキスト出力です。

CA_JOB_TYPE

修正処理ジョブのタイプ


4.7.2 PL/SQLプロシージャへの修正処理実行ステータスの受渡し

通知システムは、修正処理のステータス変更情報をPL/SQLプロシージャPROCEDURE p(event_msg IN gc$notif_event_msg)に渡します。event_msg. msg_info. notification_typeがGC$NOTIFICATIONNOTIF_CAと等しい場合、インスタンスgc$notif_corrective_action_jobオブジェクトはevent_msg.event_payload. corrective_actionで定義されます。修正処理が実行されると、通知システムはインシデント・ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡されたオブジェクトのフィールドにアクセスできます。詳細は、表4-44「修正処理ジョブに固有の属性」を参照してください。

次のステータス・コードは、MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのjob_statusフィールドに使用可能な値です。

表4-14 修正処理ステータス・コード

名前 データタイプ

SCHEDULED_STATUS

NUMBER(2)

1

EXECUTING_STATUS

NUMBER(2)

2

ABORTED_STATUS

NUMBER(2)

3

FAILED_STATUS

NUMBER(2)

4

COMPLETED_STATUS

NUMBER(2)

5

SUSPENDED_STATUS

NUMBER(2)

6

AGENTDOWN_STATUS

NUMBER(2)

7

STOPPED_STATUS

NUMBER(2)

8

SUSPENDED_LOCK_STATUS

NUMBER(2)

9

SUSPENDED_EVENT_STATUS

NUMBER(2)

10

SUSPENDED_BLACKOUT_STATUS

NUMBER(2)

11

STOP_PENDING_STATUS

NUMBER(2)

12

SUSPEND_PENDING_STATUS

NUMBER(2)

13

INACTIVE_STATUS

NUMBER(2)

14

QUEUED_STATUS

NUMBER(2)

15

FAILED_RETRIED_STATUS

NUMBER(2)

16

WAITING_STATUS

NUMBER(2)

17

SKIPPED_STATUS

NUMBER(2)

18

REASSIGNED_STATUS

NUMBER(2)

20


4.8 ジョブ実行ステータス情報の受渡し

ジョブ・ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対する自動レスポンスをカスタマイズできます。たとえば、クリティカルなジョブの実行が失敗した場合に、OSスクリプトをコールして、社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開くとします。この場合、ステータス(「問題」や「中断」など)をスクリプトに渡してトラブル・チケットを開き、問題を提示します。ジョブ実行ステータス情報は、イベント・タイプの1つ(job_status_changeイベント)であり、第4.3項「OSコマンドおよびスクリプトを使用した通知の送信」および第4.4項「PL/SQLプロシージャを使用した通知の送信」で説明しているように、その内容はOSコマンドとPL/SQLペイロードにあります。

4.8.1 PL/SQLプロシージャへのジョブ実行ステータスの受渡し

通知システムは、event_typeがjob_status_changeと等しいevent_msg.event_payloadオブジェクトを介してPL/SQLプロシージャにジョブ・ステータス変更情報を渡します。このオブジェクトのインスタンスは、ステータス変更ごとに作成されます。ジョブがステータスを変更すると、通知システムはインシデント・ルールに関連付けられているPL/SQL p(event_msg IN gc$notif_event_msg)プロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡されたevent_msg.event_payloadオブジェクトのフィールドにアクセスできます。

表4-15に、受渡し可能なすべての修正処理ステータス変更の属性を示します。

表4-15 ジョブ・ステータス属性

属性 データタイプ 属性情報

event_msg.event_payload.source.source_name

VARCHAR2(128)

ジョブの名前。

event_msg.event_payload.source.source_owner

VARCHAR2(256)

ジョブの所有者。

event_msg.event_payload.source.source_sub_type

VARCHAR2(32)

ジョブのタイプ。

event_attrs(i).name=' execution_status'のevent_msg.event_payload. event_attrs(i).value

NUMBER

ジョブの新しいステータス。

event_attrs(i).name='state_change_guid'のevent_msg.event_payload. event_attrs(i).value

RAW(16)

状態変更レコードのGUID。

event_msg.event_payload.source.source_guid

RAW(16)

ジョブの一意のID。

event_attrs(i).name=' execution_id'のevent_msg target.event_payload. event_attrs(i).value

RAW(16)

実行の一意のID。

event_msg.event_payload.target

gc$notif_target

ターゲット情報オブジェクト。

event_msg.msg_info.rule_owner

VARCHAR2(64)

通知の送信を誘発する通知ルールの名前。

event_msg.msg_info.rule_name

VARCHAR2(132)

通知の送信を誘発する通知ルールの所有者。

event_msg.event_payload. reported_date

DATE

ステータス変更が発生した日時。


ジョブのジョブ・ステータス変更が発生すると、通知システムはevent_attrs(i).name=' execution_status'のevent_msg.event_payload. event_attrs(i).valueオブジェクトのインスタンスを作成し、ステータス変更の値を移入します。次のステータス・コードは、MGMT_JOBSパッケージに定数として定義され、event_attrs(i).name=' execution_status'のevent_msg.event_payload. event_attrs(i).valueオブジェクトのjob_statusフィールドのステータス・タイプを判断するために使用できます。

表4-16 ジョブ・ステータス・コード

名前 データタイプ

SCHEDULED_STATUS

NUMBER(2)

1

EXECUTING_STATUS

NUMBER(2)

2

ABORTED_STATUS

NUMBER(2)

3

FAILED_STATUS

NUMBER(2)

4

COMPLETED_STATUS

NUMBER(2)

5

SUSPENDED_STATUS

NUMBER(2)

6

AGENTDOWN_STATUS

NUMBER(2)

7

STOPPED_STATUS

NUMBER(2)

8

SUSPENDED_LOCK_STATUS

NUMBER(2)

9

SUSPENDED_EVENT_STATUS

NUMBER(2)

10

SUSPENDED_BLACKOUT_STATUS

NUMBER(2)

11

STOP_PENDING_STATUS

NUMBER(2)

12

SUSPEND_PENDING_STATUS

NUMBER(2)

13

INACTIVE_STATUS

NUMBER(2)

14

QUEUED_STATUS

NUMBER(2)

15

FAILED_RETRIED_STATUS

NUMBER(2)

16

WAITING_STATUS

NUMBER(2)

17

SKIPPED_STATUS

NUMBER(2)

18

REASSIGNED_STATUS

NUMBER(2)

20


例4-16 ステータス・コード(Job)を使用するPL/SQLプロシージャ

CREATE  TABLE job_log (jobid RAW(16), status_code NUMBER(2), occured DATE);
 
CREATE OR REPLACE PROCEDURE LOG_JOB_STATUS_CHANGE(event_msg IN GC$NOTIF_EVENT_MSG)
IS
  l_attrs gc$notif_event_attr_array;
  exec_status_code NUMBER(2) := NULL;
  occured_date DATE := NULL;
  job_guid RAW(16) := NULL;
 
BEGIN
  IF event_msg.event_payload.event_type = 'job_status_change'
  THEN
    l_attrs := event_msg.event_payload.event_attrs;
    IF l_attrs IS NOT NULL
    THEN
      FOR i IN 1..l_attrs.COUNT
      LOOP
        IF l_attrs(i).name = 'exec_status_code'
        THEN
          exec_status_code := TO_NUMBER(l_attrs(i).value);
        END IF;
      END LOOP;
    END IF;
 
    occured_date := event_msg.event_payload.reported_date;
    job_guid := event_msg.event_payload.source.source_guid;
    -- Log all jobs' status
    BEGIN
      INSERT INTO job_log (jobid, status_code, occured)
      VALUES (job_guid, exec_status_code, occured_date);
    EXCEPTION
    WHEN OTHERS
    THEN
      -- If there are any problems then get the notification retried
      RAISE_APPLICATION_ERROR(-20000, 'Please retry');
    END;
    COMMIT;
 
  ELSE
    null; -- it is not a job_status_change event, ignore
  END IF; 
END LOG_JOB_STATUS_CHANGE;
/

4.8.2 OSコマンドまたはスクリプトへのジョブ実行ステータスの受渡し

通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルにジョブ実行ステータス情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。

  • UNIX: $ENV_VARIABLE

  • MS Windows: %ENV_VARIABLE%

通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。

表4-17 環境変数

環境変数 説明

SOURCE_OBJ_NAME

ジョブの名前。

SOURCE_OBJ_OWNE

ジョブの所有者。

SOURCE_OBJ_SUB_TYPE

ジョブのタイプ。

EXEC_STATUS_CODE

ジョブのステータス。

EVENT_REPORTED_TIME

重大度が発生した時刻。

TARGET_NAME

ターゲットの名前。

TARGET_TYPE

ターゲットのタイプ。

RULE_NAME

重大度発生の原因となった通知ルールの名前。

RULE_OWNER

通知ルールを所有するEnterprise Manager管理者の名前。


4.9 ユーザー定義のターゲット・プロパティの通知メソッドへの受渡し

Enterprise Managerでは、ターゲットに固有の環境または使用コンテキスト情報の格納に使用できるターゲット・プロパティ(ターゲットのホームページからアクセス)を定義できます。ターゲット・プロパティ値はカスタム通知メソッドに渡され、そこで条件ロジックを使用して処理するか、チケット・システムなどのサード・パーティ・デバイスに追加のアラート情報として単純に渡すことができます。デフォルトでは、Enterprise Managerは定義されているすべてのターゲット・プロパティを通知メソッドに渡します。


注意:

短い電子メール書式が使用されている場合は、ターゲット・プロパティは通知メソッドに渡されません。

表4-8 ホスト・ターゲットのプロパティ

図4-8の説明は図の下
「図4-8 ホスト・ターゲットのプロパティ」の説明

4.10 通知のリファレンス

この項には、次のリファレンス情報が含まれます。

4.10.1 EMOMSプロパティ

EMOMSプロパティを使用して、短い電子メールのサイズと形式を制御できます。次の表に、通知システムのemomsプロパティをリストします。

表4-18 通知のemomsプロパティ

プロパティ名 デフォルト値 説明

oracle.sysman.core.notification.emails_per_minute

250

1分当たりの電子メール配信制限。通知システムは、この値を使用して、1分当たりの電子メール配信の数を抑制します。顧客は、電子メール・サーバーをオーバーフローさせない必要がある場合には値を低く設定し、電子メール・サーバーが大量の電子メールを処理できる場合には高い値を設定する必要があります。

oracle.sysman.core.notification.cmds_per_minute

100

1分当たりのOSコマンド配信制限。通知システムは、この値を使用して、1分当たりのOSコマンド配信の数を抑制します。

oracle.sysman.core.notification.os_cmd_timeout

30

OSコマンド配信タイムアウト(秒単位)。この値は、OSプロセスがOSコマンド配信を実行できる時間の長さを示します。OSコマンド・スクリプトの実行の完了に長時間かかる場合は、この値を大きく設定します。

oracle.sysman.core.notification.plsql_per_minute

250

1分当たりのPL/SQL配信制限。通知システムは、この値を使用して、1分当たりのPL/SQL配信の数を抑制します。

em.notification.java_per_minute

500

1分当たりのJAVA配信制限。通知システムは、この値を使用して、1分当たりのJava配信の数を抑制します。

em.notification.ticket_per_minute

250

1分当たりのチケット配信制限。通知システムは、この値を使用して、1分当たりのチケット配信の数を抑制します。

oracle.sysman.core.notification.traps_per_minute

250

1分当たりのSNMP配信制限。通知システムは、この値を使用して、1分当たりのSNMPトラップの数を制御します。

oracle.sysman.core.notification.locale.plsql

OMSロケール

このプロパティは、詳細PL/SQL通知で配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。

有効なロケールは次のとおりです。

  • en (英語)

  • de (ドイツ語)

  • es (スペイン語)

  • fr (フランス語)

  • it (イタリア語)

  • ja (日本語)

  • ko (韓国語)

  • pt_br (ポルトガル語(ブラジル))

  • zh_cn (簡体字中国語)

  • zh_tw (繁体字中国語)

oracle.sysman.core.notification.locale.email

OMSロケール

このプロパティは、電子メールで配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。

有効なロケールは次のとおりです。

  • en (英語)

  • de (ドイツ語)

  • es (スペイン語)

  • fr (フランス語)

  • it (イタリア語)

  • ja (日本語)

  • ko (韓国語)

  • pt_br (ポルトガル語(ブラジル))

  • zh_cn (簡体字中国語)

  • zh_tw (繁体字中国語)

oracle.sysman.core.notification.locale.oscmd

OMSロケール

このプロパティは、OSコマンドで配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。

有効なロケールは次のとおりです。

  • en (英語)

  • de (ドイツ語)

  • es (スペイン語)

  • fr (フランス語)

  • it (イタリア語)

  • ja (日本語)

  • ko (韓国語)

  • pt_br (ポルトガル語(ブラジル))

  • zh_cn (簡体字中国語)

  • zh_tw (繁体字中国語)

oracle.sysman.core.notification.locale.snmp

OMSロケール

このプロパティは、SNMPトラップで配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。

有効なロケールは次のとおりです。

  • en (英語)

  • de (ドイツ語)

  • es (スペイン語)

  • fr (フランス語)

  • it (イタリア語)

  • ja (日本語)

  • ko (韓国語)

  • pt_br (ポルトガル語(ブラジル))

  • zh_cn (簡体字中国語)

  • zh_tw (繁体字中国語)

oracle.sysman.core.notification.oscmd.max_env_var_length

512

OS Common環境変数値の最大の長さ。

oracle.sysman.core.notification.snmp.max_oid_length

2560

SNMP OID値の最大の長さ。

oracle.sysman.core.notification.min_delivery_threads

6

初期のスレッド・プール内のアクティブ・スレッドの最小数およびシステムのアクティビティが少ないときに実行されているアクティブ・スレッドの数。大きい値を設定すると、より多くのシステム・リソースが使用され、より多くの通知が配信されます。

oracle.sysman.core.notification.max_delivery_threads

24

システムのアクティビティが多いときのスレッド・プール内のアクティブ・スレッドの最大数。この値は、em.notification.min_delivery_threadsより大きくする必要があります。大きい値を設定すると、より多くのシステム・リソースが使用され、より多くの通知が配信されます。

oracle.sysman.core.notification.short_format_length

>=1 (155)

短い電子メール形式の合計文字数のサイズ制限。顧客は、電子メールまたはページャのコンテンツ・サイズ制限に合わせて、このプロパティ値を変更する必要があります。短い形式の電子メールの通知では、電子メールの件名は最大80文字に制限されます。

oracle.sysman.core.notification.snmp_packet_length

<=1 (5120)

SNMPプロトコル・データ単位の最大サイズ。

oracle.sysman.core.notification.email_content_transfer_encoding

8-bit、7-bit(QP)、7-bit(BASE64)(8-bit)

電子メールをエンコードできる文字セット。Oracleでは、8-bit、7-bit(QP)、7-bit(BASE64)の3つの文字セットがサポートされます。

oracle.sysman.core.notification.emails_per_connection

>=1 (20)

次に使用可能な電子メール・ゲートウェイに切り替える前に、同じ電子メール・ゲートウェイに配信される電子メールの最大数(顧客が複数の電子メール・ゲートウェイを構成していると仮定した場合)。このプロパティは、電子メール・ゲートウェイのロード・バランシングに使用されます。

oracle.sysman.core.notification.short_format

both、subject、body (both)

件名と本文の両方、件名のみ、または本文のみで短い形式を使用します。

oracle.sysman.core.notification.send_prior_status_after_agent_unreachable_clears

TRUE

デフォルトでは、ターゲットのステータスが変更されていなくても、モニタリング・エージェントが使用不可ステータスでなくなるたびにターゲットのステータスを示す通知が送信されます。このemomsプロパティを使用して、重複するターゲット・ステータス通知を有効化(True)/無効化(False)します。

重複するターゲット・ステータス通知を無効化するには、このプロパティをFalseに設定します。

  1. emctl set property oracle.sysman.core.notification.send_prior_status_after_agent_unreachable_clears -value false

  2. OMSを再起動します。

重複するターゲット・ステータス通知を有効化するには、このプロパティをTrueに設定します。

  1. emctl set property oracle.sysman.core.notification.send_prior_status_after_agent_unreachable_clears -value true

  2. OMSを再起動します。


使用するデバイスでサポート可能な最大サイズと、メッセージを件名、本文、その両方のいずれの形式で送信するかを設定する必要があります。

emomsプロパティは、Enterprise Managerコマンドライン制御emctl get/set/delete/listプロパティ・コマンドを使用して変更できます。


注意:

次のコマンドは、変更を有効にするためにOMSの再起動を必要とします。

プロパティ・コマンドの取得

emctl get [-sysman_pwd "sysman password"]-name oracle.sysman.core.notification.short_format_length

プロパティ・コマンドの設定

emctl set  property -name oracle.sysman.core.notification.short_format_length -value 155

短い形式の電子メール用のEmomsプロパティ・エントリ

emctl set  property -name oracle.sysman.core.notification.short_format_length -value 155
emctl set property -name oracle.sysman.core.notification.short_format -value both

4.10.2 OSコマンドまたはスクリプトへのイベント、インシデント、問題情報の受渡し

通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに情報を渡します。

環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。

  • UNIX: $ENV_VARIABLE

  • Windows: %ENV_VARIABLE%

通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。

4.10.2.1 イベント、インシデントおよび問題に共通の環境変数

表4-19 汎用的な環境変数

環境変数 説明

NOTIF_TYPE

通知のタイプと有効な値

NOTIF_NORMAL、

NOTIF_RETRY、

NOTIF_DURATION、

NOTIF_REPEAT、

NOTIF_CA、

NOTIF_RCA

REPEAT_COUNT

通知が送信された回数

(この通知より前)。

RULESET_NAME

この通知をトリガーしたルールセットの名前。

RULE_NAME

この通知をトリガーしたルールの名前。

RULE_OWNER

この通知をトリガーしたルールセットの所有者。

MESSAGE

イベント、インシデントまたは問題のメッセージ。

MESSAGE_URL

このメッセージのEMコンソールURL。


表4-20 カテゴリ関連の環境変数

環境変数 説明

CATEGORIES_COUNT

この通知内のカテゴリ数。1つのカテゴリがイベント、インシデントまたは問題に関連付けられている場合、この値は1です。イベント、インシデントまたは問題にカテゴリが関連付けられていない場合は0です。

CATEGORY_CODES_COUNT

この通知内のカテゴリ・コード数。

CATEGORY_n

カテゴリは、OMSサーバーで定義されているロケールに基づいて翻訳されます。接尾辞"_n"の有効値は1から$CATEGORIES_COUNTです。

CATEGORY_CODE_n

カテゴリのコード。接尾辞"_n"の有効値は1から$CATEGORY_CODES_COUNTです。


表4-21に、ユーザー定義ターゲット・プロパティに共通の環境変数を示します。これらは、(a)イベントに関連ターゲットがある場合、(b)インシデントまたは問題に単一のイベント・ソースと関連ターゲットがある場合に移入されます。

表4-21 ユーザー定義ターゲット・プロパティ環境変数

環境変数 説明

ORCL_GTP_COMMENT

コメント

ORCL_GTP_CONTACT

連絡先

ORCL_GTP_COST_CENTER

コストセンター

ORCL_GTP_DEPARTMENT

部門

ORCL_GTP_DEPLOYMENT_TYPE

デプロイ・タイプ

ORCL_GTP_LINE_OF_BUS

ライン・オブ・ビジネス

ORCL_GTP_LOCATION

場所


4.10.2.2 イベント通知固有の環境変数

表4-22 イベント通知固有の環境変数

環境変数 説明

EVENT_NAME

イベント名。

EVENT_REPORTED_TIME

イベントがレポートされた日付。

EVENT_SOURCE_COUNT

このイベントに関連付けられているソース数。

EVENT_TYPE

イベント・タイプ。

EVENT_OCCURRENCE_TIME

イベントの発生時刻。

EVENT_TYPE_ATTRS

イベント・タイプに固有の属性のリスト。

EVENT_CONTEXT_ATTRS

イベントのコンテキスト・データ。

LAST_UPDATED_TIME

最終更新時間

SEQUENCE_ID

一意のイベント順序識別子。イベント順序は、1つ以上のイベントで構成される場合があります。この順序のすべてのイベントは、同じイベント順序IDを持ちます。

SEVERITY

翻訳されたイベントの重大度。

SEVERITY_CODE

イベント重大度のコード。可能な値は次のとおりです。

FATAL、CRITICAL、WARNING、MINOR_WARNING、INFORMATIONALおよびCLEAR

ACTION_MSG

イベントを解決するために実行するアクションを説明するメッセージ。

TOTAL_OCCURRENCE_COUNT

重複発生の合計数

RCA_DETAILS

RCAがこのイベントに関連付けられているかどうか。

CURRENT_OCCURRENCE_COUNT

現在の収集期間におけるイベントの合計発生数。この属性は、重複解除済イベントにのみ適用されます。

CURRENT_FIRST_OCCUR_DATE

現在の収集期間においてイベントが最初に発生したときのタイムスタンプ。この属性は、重複解除済イベントにのみ適用されます。

CURRENT_LAST_OCCUR_DATE_DESC

現在の収集期間においてイベントが最後に発生したときのタイムスタンプ。この属性は、重複解除済イベントにのみ適用されます。


表4-23に、イベントに関連付けられているインシデントの環境変数を示します。これらは、イベントがインシデントに関連付けられている場合に移入されます。

表4-23 関連付けられているインシデント環境変数

環境変数 説明

ASSOC_INCIDENT_ACKNOWLEDGED_BY_OWNER

関連インシデントが所有者によって確認された場合はyesに設定します。

ASSOC_INCIDENT_ACKNOWLEDGED_DETAILS

関連インシデントの確認の詳細。例: No - 確認されていない場合。Yes By userName - 確認されている場合

ASSOC_INCIDENT_STATUS

関連インシデント・ステータス

ASSOC_INCIDENT_ID

関連インシデントID

ASSOC_INCIDENT_PRIORITY

関連インシデントの優先度。サポートされる値は、「緊急」、「非常に高」、「高」、「中」、「低」、「なし」です。

ASSOC_INCIDENT_OWNER

関連インシデントの所有者(存在する場合)。

ASSOC_INCIDENT_ESCALATION_LEVEL

関連インシデントのエスカレーション・レベルの値は0から5です。


表4-24に、ソース・オブジェクトに関連する共通の環境変数を示します。これらは、$SOURCE_OBJ_TYPEがTARGETでない場合に移入されます。

表4-24 ソース・オブジェクト関連の環境変数

環境変数 説明

SOURCE_OBJ_TYPE

ソース・オブジェクトのタイプ。例: JOB、TEMPLATE。

SOURCE_OBJ_NAME

ソース・オブジェクト名。

SOURCE_OBJ_NAME_URL

ソースのイベント・コンソールURL。

SOURCE_OBJ_SUB_TYPE

ソース・オブジェクトのサブタイプ。たとえば、ジョブ・ステータス変更イベントの基礎となるジョブ・タイプを提供します。

SOURCE_OBJ_OWNER

ソース・オブジェクトの所有者。


表4-25に、特定の問題に関連付けられた、ターゲットに共通の環境変数を示します。これらは、問題がターゲットに関連する場合に移入されます。

表4-25 ターゲット関連の環境変数

環境変数 説明

TARGET_NAME

ターゲットの名前

TARGET_TYPE

ターゲットのタイプ

TARGET_OWNER

ターゲットの所有者

HOST_NAME

ターゲットがデプロイされるホストの名前。

TARGET_URL

ターゲットのEnterprise ManagerコンソールURL。

TARGET_LIFECYCLE_STATUS

ターゲットのライフ・サイクル・ステータス。

有効な値: Production、Mission Critical、Stage、Test、Development。

定義されていない場合はnullです。

TARGET_VERSION

ターゲットのターゲット・バージョン


4.10.2.3 イベント・タイプに固有の環境変数

イベントは、複数のタイプに分類されます。たとえば、mertc_alertイベント・タイプはメトリック・アラートのモデル化に使用されます。SQL問合せを使用して、デプロイメントおよびイベント固有のペイロードのイベント・タイプをリストできます。次のSQLサンプルを使用して、Enterprise Managerに登録されているすべての内部イベント・タイプ名をリストできます。

Select event_class as event_type, upper(name) as env_var_name
from em_event_class_attrs
where notif_order != 0
and event_class is not null
union
select event_class as event_type, upper(name) || '_NLS' as env_var_name
from em_event_class_attrs
where notif_order != 0
and event_class is not null
and is_translated = 1
order by event_type, env_var_name; 

各イベント・タイプに固有の環境変数ペイロードには、OSスクリプトを通じてアクセスできます。次の表に、最もクリティカルなイベント・タイプの通知属性をリストします。

表4-26 メトリック・アラート・イベント・タイプに固有の環境変数

環境変数 説明

COLL_NAME

メトリックを収集するコレクションの名前。

COLL_NAME_NLS

メトリックを収集するコレクションの翻訳された名前

KEY_COLUMN_X

キー列Xの内部名(Xは1から7の数値)。

KEY_COLUMN_X_NLS

キー列Xの翻訳された名前(Xは1から7の数値)。

KEY_COLUMN_X_VALUE

キー列Xの値(Xは1から7の数値)。

KEY_VALUE

メトリック・アラート・イベントに対応するメトリックの監視対象オブジェクト。

METRIC_COLUMN

メトリック列の名前

METRIC_COLUMN_NLS

メトリック列の翻訳された名前。

METRIC_DESCRIPTION

メトリックの簡単な説明。

METRIC_DESCRIPTION_NLS

メトリックの翻訳された簡単な説明。

METRIC_GROUP

メトリックの名前。

METRIC_GROUP_NLS

メトリックの翻訳された名前

NUM_KEYS

メトリック内のキー・メトリック列の数。

SEVERITY_GUID

このメトリック・アラートに関連付けられている重大度レコードのGUID。

CYCLE_GUID

メトリック・アラートが最初に生成されたときからクリアされるまでの、メトリック・アラート・サイクルの一意の識別子。

VALUE

イベントがトリガーされたときのメトリックの値。


表4-27 ターゲット可用性イベント・タイプに固有の環境変数

環境変数 説明

AVAIL_SEVERITY

ターゲットのステータスが現在の可用性ステータスに変更された要因である遷移重大度。

AVAIL_SEVERITYに指定できる値

  • 15 (ターゲット起動)

  • 25 (ターゲット停止)

  • 115 (エージェント使用不可、クリア済)

  • 125 (エージェント使用不可)

  • 215 (ブラックアウト終了)

  • 225 (ブラックアウト開始)

  • 315 (収集エラー、クリア済)

  • 325 (収集エラー)

  • 425 (使用可能なビーコンなし)

  • 515 (ステータス不明)

AVAIL_SUB_STATE

現在のステータスに対するターゲットのサブステータス。

CYCLE_GUID

メトリック・アラートが最初に生成されたときからクリアされるまでの、メトリック・アラート・サイクルの一意の識別子。

METRIC_GUID

レスポンス・メトリックのメトリックGUID。

SEVERITY_GUID

この可用性ステータスに関連付けられている重大度レコードのGUID。

TARGET_STATUS

ターゲットの現在の可用性のステータス。

TARGET_STATUS_NLS

ターゲットの翻訳された現在の可用性のステータス。


表4-28 ジョブ・ステータスの変更イベント・タイプに固有の環境変数

環境変数 説明

EXECUTION_ID

ジョブ実行の一意のID。

EXECUTION_LOG

実行された最後のステップのジョブ出力。

EXECUTION_STATUS

ジョブ実行の内部ステータス。

EXECUTION_STATUS_NLS

ジョブ実行の翻訳されたステータス。

EXEC_STATUS_CODE

ジョブ実行の実行ステータス・コード。可能な値は、表4-16「ジョブ・ステータス・コード」を参照してください。

STATE_CHANGE_GUID

最新ステータス変更の一意のID


SQL問合せを使用して、デプロイされているイベント・タイプと各イベント・タイプに固有のペイロードをリストできます。次のSQLを使用して、Enterprise Managerに登録されているすべての内部イベント・タイプ名をリストできます。

select class_name as event_type_name from em_event_class;

次のSQLは、metric_alertイベント・タイプに固有の環境変数をリストします。

select env_var_name
  from
    ( Select event_class as event_type, upper(name) as env_var_name
     from em_event_class_attrs
    where notif_order != 0
    and event_class is not null
    union
    select event_class as event_type, upper(name) || '_NLS' as env_var_name
    from em_event_class_attrs
    where notif_order != 0
    and event_class is not null
    and is_translated = 1)
    where event_type = 'metric_alert';

Enterprise Managerコンソールから、イベント・タイプに固有の通知属性の説明を直接取得することもできます。

  1. 「設定」メニューから、「通知」「電子メール形式のカスタマイズ」の順に選択します。

  2. イベント・タイプを選択します。

  3. 「カスタマイズ」をクリックします。

  4. 「事前定義済属性の表示」をクリックします。

接尾辞_NLSで終わる環境変数は、特定の属性の翻訳された値を提供します。たとえば、METRIC_COLUMN_NLS環境変数は、メトリック列属性の翻訳された値を提供します。翻訳された値は、OMSのロケールになります。

4.10.2.4 インシデント通知に固有の環境変数

表4-29 インシデント固有の環境変数

環境変数 説明

SEVERITY

翻訳されたインシデント重大度。有効な値: 「致命的」、「クリティカル」、「警告」、「情報」、「クリア」

SEVERITY_CODE

重大度のコード。

可能な値は次のとおりです。

FATAL、CRITICAL、WARNING、MINOR_WARNING、INFORMATIONALおよびCLEAR

INCIDENT_REPORTED_TIME

インシデント報告時間

INCIDENT_ACKNOWLEDGED_BY_OWNER

インシデントが所有者によって確認された場合はyesに設定します。

INCIDENT_ID

インシデントID

INCIDENT_OWNER

インシデント所有者

ASSOC_EVENT_COUNT

このインシデントに関連付けられているイベント数。

INCIDENT_STATUS

インシデント・ステータス。2つの内部修正解決ステータスがあります。

NEW

CLOSED

ユーザーはステータスを追加で定義できます。

ESCALATED

インシデントはエスカレートされます。

ESCALATED_LEVEL

インシデントのエスカレートされたレベル。

PRIORITY

インシデント優先度。翻訳された優先度名です。有効な値: 「緊急」、「非常に高」、「高」、「中」、「低」、「なし」

PRIOTITY_CODE

インシデント優先度コード

EMで定義されている内部値です。

PRIORITY_URGENT

PRIORITY_VERY_HIGH

PRIORITY_HIGH

PRIORITY_MEDIUM

PRIORITY_LOW

PRIORITY_NONE

TICKET_STATUS

外部チケットのステータス(存在する場合)。

TICKET_ID

外部チケットのID(存在する場合)。

LAST_UPDATED_TIME

インシデントの最終更新時間

ADR_INCIDENT_ID

自動診断リポジトリ(ADR)・インシデントID: ADRインシデントの一意の数値識別子。ADRインシデントは、問題の発生を示します。

ADR_IMPACT

自動診断リポジトリ(ADR)・インシデントの影響。

ADR_ECID

関連する自動診断リポジトリ(ADR)・インシデントに関連付けられた実行コンテキストID (ECID)。ECIDは、Oracleソフトウェア・スタックによって1回のコールにタグを付け、追跡するために使用するグローバルに一意の識別子です。スタックの複数の層にわたって発生する可能性のある問題を対応付けるために使用されます。

ASSOC_PROBLEM_KEY

自動診断リポジトリ(ADR)・インシデントに関連付けられた問題のキー。問題はOracle製品におけるクリティカルなエラーです。Problemのキーは、問題を説明するテキスト文字列です。エラー・コードと、場合によってはその他のエラー固有の値が含まれます。


表4-30に、インシデントが問題に関連付けられているときに関連する問題の環境変数を示します。

表4-30 インシデントが関連付けられている問題の環境変数

環境変数 説明

ASSOC_PROBLEM_ACKNOWLEDGED_BY_OWNER

この問題が所有者によって確認された場合はyesに設定します。

ASSOC_PROBLEM_STATUS

関連する問題のステータス

ASSOC_PROBLEM_ID

関連する問題のID

ASSOC_PROBLEM_PRIORITY

関連する問題の優先度

ASSOC_PROBLEM_OWNER

関連する問題の所有者(存在する場合)。

ASSOC_PROBLEM_ESCALATION_LEVEL

関連する問題のエスカレーション・レベルの値は0から5です。




4.10.2.5 問題通知に固有の環境変数

表4-31 問題に固有の環境変数

環境変数 説明

SEVERITY

翻訳された問題重大度。

SEVERITY_CODE

重大度のコード。

可能な値は次のとおりです。

FATAL、CRITICAL、WARNING、MINOR_WARNING、INFORMATIONALおよびCLEAR

PROBLEM_REPORTED_TIME

問題報告時間

PROBLEM_ACKNOWLEDGED_BY_OWNER

問題が所有者によって確認された場合はyesに設定します。

PROBLEM_ID

問題ID

PROBLEM_KEY

問題キー

PROBLEM_OWNER

問題所有者

ASSOC_INCIDENT_COUNT

この問題に関連付けられているインシデント数。

PROBLEM_STATUS

インシデント・ステータス。次のタイプです。

STATUS_NEW

STATUS_CLOSED

他の任意のユーザー定義ステータス。

ESCALATED

インシデントはエスカレートされます。エスカレートされている場合はYes、それ以外の場合はNoです。

ESCALATED_LEVEL

インシデントのエスカレートされたレベル。

PRIORITY

インシデント優先度。翻訳された優先度名です。

PRIOTITY_CODE

インシデント優先度コード

Enterprise Managerで定義されている内部値です。

PRIORITY_URGENT

PRIORITY_VERY_HIGH

PRIORITY_HIGH

PRIORITY_MEDIUM

PRIORITY_LOW

PRIORITY_NONE

LAST_UPDATED_TIME

最終更新時間

SR_ID

Oracleサービス・リクエストID(存在する場合)。

BUG_ID

OracleバグID(関連付けられているバグが存在する場合)。


4.10.2.6 インシデントおよび問題通知に共通の環境変数

インシデントまたは問題は、複数のイベント・ソースに関連付けることができます。イベント・ソースには、ターゲット、ソース・オブジェクトまたはその両方があります。

4.10.2.6.1 イベント・ソースに関連する環境変数

イベント・ソースの数は、EVENT_SOURCE_COUNT環境変数によって設定されます。EVENT_SOURCE_COUNT情報を使用して、関連する環境変数をループして複数のイベント・ソースに関する情報をフェッチするスクリプトを作成できます。すべてのイベント・ソースの環境変数にはEVENT_SOURCE_という接頭辞が付きます。ソース・オブジェクトの環境変数には、SOURCE_<attribute_name>という接尾辞が付きます。たとえば、EVENT_SOURCE_1_SOURCE_TYPEは、最初のイベント・ソースのソース・オブジェクト・タイプを提供します。ターゲットの環境変数には、TARGET_<attribute_name>という接尾辞が付きます。たとえば、EVENT_SOURCE_1_TARGET_NAMEは、最初のイベント・ソースのターゲット名を提供します。

次の表に、x番目のイベント・ソースのソース・オブジェクトの環境変数をリストします。

表4-32 x番目のイベント・ソースのソース・オブジェクト

環境変数 説明

EVENT_SOURCE_x_SOURCE_GUID

ソース・オブジェクトのGUID。

EVENT_SOURCE_x_SOURCE_TYPE

ソース・オブジェクト・タイプ

EVENT_SOURCE_x_SOURCE_NAME

ソース・オブジェクト名。

EVENT_SOURCE_x_SOURCE_OWNER

ソース・オブジェクトの所有者。

EVENT_SOURCE_x_SOURCE_SUB_TYPE

ソース・オブジェクトのサブタイプ。

EVENT_SOURCE_x_SOURCE_URL

EMコンソールへのソース・オブジェクトURL。


表4-33に、x番目のイベント・ソースのターゲットの環境変数を示します。

表4-33 x番目のイベント・ソースのターゲット

環境変数 説明

EVENT_SOURCE_x_TARGET_GUID

ターゲットGUID

EVENT_SOURCE_x_TARGET_NAME

ターゲット名。

EVENT_SOURCE_x_TARGET_OWNER

ターゲット所有者

EVENT_SOURCE_x_TARGET_VERSION

ターゲット・バージョン

EVENT_SOURCE_x_TARGET_LIFE_CYCLE_STATUS

ターゲットのライフ・サイクル・ステータス

EVENT_SOURCE_x_TARGET_TYPE

ターゲット・タイプ

EVENT_SOURCE_x_HOST_NAME

ターゲット・ホスト名

EVENT_SOURCE_x_TARGET_URL

EMコンソールへのターゲットURL。


4.10.3 PL/SQLプロシージャへの情報の受渡し

イベント、インシデントおよび問題情報(ペイロード)をPL/SQLプロシージャに渡すと、これらの条件に対する自動レスポンスをカスタマイズできます。3つの通知ペイロード・タイプすべてに、gc$notif_msg_infoという共通要素があります。これは、すべてのタイプの通知に適用される汎用情報を提供します。また、3つのペイロードそれぞれに、特定の問題タイプに固有のペイロードを提供する固有の要素が1つあります。

gc$notif_event_msg (イベント通知のペイロード)

gc$notif_event_msgには、イベント・ペイロード・オブジェクトとメッセージ情報オブジェクトの2つのオブジェクトが含まれます。

表4-34 イベント通知ペイロード

属性 データタイプ 属性情報

EVENT_PAYLOAD

gc$notif_event_payload

イベント通知ペイロード。詳細は、gc$notif_event_payloadタイプの定義を参照してください。

MSG_INFO

gc$notif_msg_info

通知メッセージ。詳細は、gc$notif_msg_infoの定義を参照してください。


gc$notif_incident_msg (インシデント通知のペイロード)

gc$notif_incident_msgタイプには、インシデント・ペイロードとメッセージ情報の2つのオブジェクトが含まれます。このオブジェクトは、インシデント通知メッセージの配信ペイロードを表し、インシデント通知に関連付けられているすべてのデータを含み、ユーザーのカスタムPL/SQLプロシージャでアクセスできます。

表4-35 インシデント通知ペイロード

属性 データタイプ 属性情報

INCIDENT_PAYLOAD

gc$notif_incident_payload

インシデント通知ペイロード。詳細は、gc$notif_incident_payloadタイプの定義を参照してください。

MSG_INFO

gc$notif_msg_info

エンベロープ・レベルの通知情報。詳細は、gc$notif_msg_infoタイプの定義を参照してください。


gc$notif_problem_msg (問題通知のペイロード)

このオブジェクトは、問題通知メッセージの配信ペイロードを表し、問題通知に関連付けられているすべてのデータを含み、ユーザーのカスタムPL/SQLプロシージャでアクセスできます。

表4-36 問題通知ペイロード

属性 データタイプ 属性情報

PROBLEM_PAYLOAD

gc$notif_problem_payload

問題通知ペイロード。詳細は、gc$notif_problem_payloadタイプの定義を参照してください。

MSG_INFO

gc$notif_msg_info

通知メッセージ。詳細は、gc$notif_msg_infoタイプの定義を参照してください。


gc$notif_msg_info (イベント/インシデント/問題に共通のペイロード)

このオブジェクトには、イベント、インシデントまたは問題配信ペイロードのnotification_type、ルール・セット、ルール名などの汎用通知情報が含まれます。

表4-37 イベント、インシデント、問題に共通のペイロード

属性 データタイプ 説明

NOTIFICATION_TYPE

VARCHAR2(32)

通知のタイプ。次のいずれかの値です。

GC$NOTIFICATION.NOTIF_NORMAL GC$NOTIFICATION.NOTIF_RETRY GC$NOTIFICATION.NOTIF_REPEAT GC$NOTIFICATION.NOTIF_DURATION

GC$NOTIFICATION.NOTIF_CA

GC$NOTIFICATION.NOTIF_RCA

REPEAT_COUNT

NUMBER

繰返し通知回数

RULESET_NAME

VARCHAR2(256)

通知をトリガーしたルール・セットの名前

RULE_NAME

VARCHAR2(256)

通知をトリガーしたルールの名前

RULE_OWNER

VARCHAR2(256)

ルール・セットを所有するEMユーザー

MESSAGE

VARCHAR2(4000)

イベント/インシデント/問題に関するメッセージ。

MESSAGE_URL

VARCHAR2(4000)

イベント/インシデント/問題の詳細を提供するEnterprise Managerコンソール・ページへのリンク。


gc$notif_event_payload (イベント通知に固有のペイロード)

このオブジェクトは、イベント通知に固有のペイロードを表します。

表4-38 イベント、インシデントおよび問題に共通のペイロード

属性 データタイプ 属性情報

EVENT_INSTANCE_GUID

RAW(16)

イベント・インスタンスのグローバル一意識別子。

EVENT_SEQUENCE_GUID

RAW(16)

イベント順序のグローバル一意識別子。

TARGET

gc$notif_target

関連ターゲット情報オブジェクト。詳細は、gc$notif_targetタイプの定義を参照してください。

SOURCE

gc$notif_source

ターゲットでない関連ソース情報オブジェクト。詳細は、gc$notif_sourceタイプの定義を参照してください。

EVENT_ATTRS

gc$notif_event_attr_array

イベントで指定された属性のリスト。詳細は、gc$notif_event_attrタイプの定義を参照してください。

CORRECTIVE_ACTION

gc$notif_corrective_action_job

修正処理ジョブの実行完了時にオプションで移入される修正処理情報。

EVENT_TYPE

VARCHAR2(20)

イベント・タイプ: 「メトリック・アラート」など。

EVENT_NAME

VARCHAR2(512)

イベント名。

EVENT_MSG

VARCHAR2(4000)

イベント・メッセージ。

REPORTED_DATE

DATE

イベントがレポートされた日付。

OCCURRENCE_DATE

DATE

イベント発生日。

SEVERITY

VARCHAR2(128)

イベントの重大度。翻訳された重大度名です。

SEVERITY_CODE

VARCHAR2(32)

イベントの重大度コード。Enterprise Managerで使用されている内部重大度名です。

ASSOC_INCIDENT

gc$notif_issue_summary

関連インシデントのサマリー。イベントがインシデントに関連付けられている場合に移入されます。詳細は、gc$notif_issue_summaryタイプの定義を参照してください。

ACTION_MSG

VARCHAR2(4000)

イベントを解決するために実行するアクションを説明するメッセージ。

RCA_DETAIL

VARCHAR2(4000)

根本原因分析の詳細。RCA詳細出力のサイズは、4000文字の長さに制限されます。

EVENT_CONTEXT_DATA

gc$notif_event_context_array

イベントのコンテキスト・データ。詳細は、gc$notif_event_contextタイプの定義を参照してください。

CATEGORIES

gc$category_string_array

イベントが属するカテゴリをリストします。カテゴリは、OMSサーバーで定義されているロケールに基づいて翻訳されます。通知システムは最大10個のカテゴリを送信します。

CATEGORY_CODES

gc$category_string_array

カテゴリのコード。配列のサイズは最大10です。


gc$notif_incident_payload (インシデント通知に固有のペイロード)

インシデント固有の属性、関連する問題およびチケット情報を含みます。

表4-39 インシデント通知ペイロード

属性 データタイプ 属性情報

INCIDENT_ATTRS

gc$notif_issue_attrs

インシデント固有の属性。詳細は、gc$notif_issue_attrsタイプの定義を参照してください。

ASSOC_EVENT_COUNT

NUMBER

このインシデントに関連付けられているイベントの総数。

TICKET_STATUS

VARCHAR2(64)

外部チケットのステータス(存在する場合)。

TICKET_ID

VARCHAR2(128)

外部チケットのID(存在する場合)。

TICKET_URL

VARCHAR2(4000)

外部チケットのURL(存在する場合)。

ASSOC_PROBLEM

gc$notif_issue_summary

関連付けられている問題がある場合、問題のサマリー。詳細は、gc$notif_issue_summaryタイプの定義を参照してください。


gc$notif_problem_payload (問題に固有のペイロード)

問題に固有の属性、キー、サービス・リクエスト(SR)およびバグ情報が含まれます。

表4-40 問題ペイロード

属性 データタイプ 属性情報

PROBLEM_ATTRS

gc$notif_issue_attrs

問題固有の属性。詳細は、gc$notif_issue_attrsタイプの定義を参照してください。

PROBLEM_KEY

VARCHAR2(850)

問題キー(生成されている場合)。

ASSOC_INCIDENT_COUNT

NUMBER

この問題に関連付けられているインシデント数。

SR_ID

VARCHAR2(64)

Oracleサービス・リクエストID(存在する場合)。

SR_URL

VARCHAR2(4000)

Oracleサービス・リクエストのURL(存在する場合)。

BUG_ID

VARCHAR2(64)

OracleバグID(関連付けられているバグが存在する場合)。


gc$notif_issue_attrs (インシデントと問題に共通のペイロード)

インシデントと問題に共通の詳細を提供します。関連付けられているID、重大度、優先度、ステータス、カテゴリ、所有者による確認、ソース情報などの詳細が含まれます。

表4-41 インシデントと問題に共通のペイロード

属性 データタイプ 属性情報

ID

NUMBER(16)

インシデントまたは問題のID。

SEVERITY

VARCHAR2(128)

問題の重大度。翻訳されています。

SEVERITY_CODE

VARCHAR2(32)

問題の重大度コード。可能な値は、重大度の降順に定義されています。

GC$EVENT.FATAL

GC$EVENT.CRITICAL

GC$EVENT.WARNING

GC$EVENT.MINOR_WARNING

GC$EVENT.INFORMATIONAL

GC$EVENT.CLEAR

PRIORITY

VARCHAR2(128)

問題の優先度。翻訳された優先度名です。

PRIORITY_CODE

VARCHAR2(32)

問題の優先度。EMで定義されている内部値です。可能な値は、優先度の降順に定義されています。

GC$EVENT.PRIORITY_URGENT GC$EVENT.PRIORITY_VERY_HIGH

GC$EVENT.PRIORITY_HIGH GC$EVENT.PRIORITY_MEDIUM

GC$EVENT.PRIORITY_LOW

GC$EVENT.PRIORITY_NONE

STATUS

VARCHAR2(32)

問題のステータス。有効な値は、次のとおりです。

GC$EVENT.STATUS_NEW

GC$EVENT.STATUS_CLOSED

他の任意のユーザー定義ステータス。

ESCALATION_LEVEL

NUMBER(1)

問題のエスカレーション・レベル。値は0から5です。

OWNER

VARCHAR(256)

問題の所有者。所有者が存在しない場合はNULLに設定します。

ACKNOWLEDGED_BY_OWNER

NUMBER(1)

この問題が所有者によって確認された場合は1に設定します。

CREATION_DATE

DATE

問題作成日。

CLOSED_DATE

DATE

問題がクローズされた日付。クローズされていない場合はnullです。

CATEGORIES

gc$category_string_array

イベントが属するカテゴリをリストします。カテゴリは、OMSサーバーで定義されているロケールに基づいて翻訳されます。通知システムは最大10個のカテゴリを送信します。

CATEGORY_CODES

gc$category_string_array

カテゴリのコード。通知システムは最大10個のカテゴリ・コードを送信します。

SOURCE_INFO_ARR

gc$notif_source_info_array

この問題に関連付けられているソース情報の配列。詳細は、$gcnotif_source_infoタイプの定義を参照してください。

LAST_MODIFIED_BY

VARCHAR2(256)

最終更新者。

LAST_UPDATED_DATE

DATE

最終更新日。


gc$notif_issue_summary (インシデントおよび問題ペイロードに共通)

それぞれイベント・ペイロード内の関連するインシデントのサマリー、またはインシデント・ペイロード内の関連する問題のサマリーを表します。

表4-42 ペイロード

属性 データタイプ 属性情報

ID

NUMBER

発行ID(インシデントIDまたは問題ID)。

SEVERITY

VARCHAR(128)

問題の重大度レベル。翻訳された重大度名です。

SEVERITY_CODE

VARCHAR2(32)

次のいずれかの値を持つ問題重大度コード。

GC$EVENT.FATAL

GC$EVENT.CRITICAL

GC$EVENT.WARNING

GC$EVENT.MINOR_WARNING

GC$EVENT.INFORMATIONAL

GC$EVENT.CLEAR

PRIORITY

VARCHAR2(128)

現在の優先度。翻訳された優先度名です。

PRIORITY_CODE

VARCHAR2(32)

次のいずれかの値を持つ問題優先度コード。GC$EVENT.PRIORITY_URGENT

GC$EVENT.PRIORITY_VERY_HIGH

GC$EVENT.PRIORITY_HIGH

GC$EVENT.PRIORITY_MEDIUM

GC$EVENT.PRIORITY_LOW

GC$EVENT.PRIORITY_NONE

STATUS

VARCHAR2(64)

問題のステータス。有効な値は、次のとおりです。

GC$EVENT.STATUS_NEW

GC$EVENT.STATUS_CLOSED

GC$EVENT.WIP(処理中)

GC$EVENT.RESOLVED

他の任意のユーザー定義ステータス

ESCALATION_LEVEL

VARCHAR2(2)

0から5の範囲の問題エスカレーション・レベル。デフォルトは0です。

OWNER

VARCHAR2(256)

問題の所有者。所有者が存在しない場合はNULLに設定します。

ACKNOWLEDGED_BY_OWNER

NUMBER(1)

この問題が所有者によって確認された場合は1に設定します。


gc$category_string_array

gc$category_string_arrayは、イベント、インシデントまたは問題が関連付けられているカテゴリを含む文字列配列です。通知システムは最大10カテゴリを提供します。

gc$notif_event_context_array

gc$notif_event_context_arrayは、イベント検出時に取得された追加の診断データに関する情報を提供します。通知システムは、取得したイベント・コンテキストから最大200個の要素を提供します。この配列の各要素のタイプは、gc$notif_event_contextです。

gc$notif_event_context: このオブジェクトは、診断値を含む可能性のある、イベントの生成時にソース・システムによって取得される追加のコンテキスト情報であるイベント・コンテキスト・データの詳細を表します。イベントのコンテキストは、キーと値のセット、およびデータ・タイプ(数値または文字列のみ)から構成される必要があります。

表4-43 イベント・コンテキスト・タイプ

属性 データタイプ 属性情報

NAME

VARCHAR2(256)

イベント・コンテキスト名。

TYPE

NUMBER(1)

格納される値のデータ・タイプ

(0) - 数値データの場合

(1) - 文字列データの場合。

VALUE

NUMBER

数値。

STRING_VALUE

VARCHAR2(4000)

文字列値。


gc$notif_corrective_action_job

修正処理ジョブの実行に関する情報を提供します。修正処理は、メトリック・アラートおよびターゲット可用性イベントでのみサポートされます。

表4-44 修正処理ジョブに固有の属性

属性 データタイプ 属性情報

JOB_GUID

RAW(16)

修正処理ジョブのグローバル一意識別子。

JOB_NAME

VARCHAR2(128)

値は修正処理の名前です。メトリック・アラートおよびターゲット可用性イベントに適用されます。

JOB_OWNER

VARCHAR2(256)

修正処理ジョブの所有者。

JOB_TYPE

VARCHAR2(256)

修正処理ジョブのタイプ。

JOB_STATUS

VARCHAR2(64)

修正処理ジョブの実行ステータス。

JOB_STATUS_CODE

NUMBER

修正処理ジョブの実行ステータス・コード。Enterprise Managerで定義されている内部値です。ステータス・コードの詳細は、表4-14「修正処理ステータス・コード」を参照してください。

JOB_STEP_OUTPUT

VARCHAR2(4000)

値は修正処理の実行からのテキスト出力です。これは最後の4000文字に切り捨てられます。

JOB_EXECUTION_GUID

RAW(16)

修正処理ジョブ実行のグローバル一意識別子。

JOB_STATE_CHANGE_GUID

RAW(16)

修正処理ジョブ変更のグローバル一意識別子。

OCCURRED_DATE

DATE

修正処理ジョブの発生日。


gc$notif_source_info_array

インシデントまたは問題に関連する可能性のある複数のソースへのアクセスを提供します。注意: 通知システムは、インシデントまたは問題に関連付けられている最大200のソースを提供します。

CREATE OR REPLACE TYPE gc$notif_source_info_array AS VARRAY(200) OF gc$notif_source_info;

gc$notif_source_info

ターゲットまたはソース、あるいはその両方を含むソース情報の参照に使用される通知ソース情報。

表4-45 ソース情報タイプ

属性 データタイプ 属性情報

TARGET

gc$notif_target

イベントがターゲットに関連する場合に移入されます。詳細は、gc$notif_targetタイプの定義を参照してください。

SOURCE

gc$notif_source

イベントが(ターゲットでない)ソースに関連する場合に移入されます。詳細は、gc$notif_sourceタイプの定義を参照してください。


gc$notif_source

ジョブ・ターゲット以外のソース・オブジェクトの参照に使用されます。

表4-46 ペイロード

属性 データタイプ 属性情報

SOURCE_GUID

RAW(16)

ソースのグローバル一意識別子。

SOURCE_TYPE

VARCHAR2(120)

TARGET、JOB、TEMPLATEなど、ソース・オブジェクトのタイプ。

SOURCE_NAME

VARCHAR2(256)

ソース・オブジェクト名。

SOURCE_OWNER

VARCHAR2(256)

ソース・オブジェクトの所有者。

SOURCE_SUB_TYPE

VARCHAR2(256)

ソース・オブジェクトのサブタイプ。たとえばTARGETでは、ホストやデータベースなどのターゲット・タイプになります。

SOURCE_URL

VARCHAR2(4000)

ソースのイベント・コンソールURL。


gc$notif_target

ターゲット情報オブジェクトは、ターゲット情報を提供するために使用されます。

表4-47 ターゲット情報

属性 データタイプ 属性情報

TARGET_GUID

RAW(16)

ターゲットのグローバル一意識別子。

TARGET_NAME

VARCHAR2(256)

ターゲットの名前。

TARGET_OWNER

VARCHAR2(256)

ターゲットの所有者。

TARGET_LIFECYCLE_STATUS

VARCHAR2(1024)

ターゲットのライフ・サイクル・ステータス。

TARGET_VERSION

VARCHAR2(64)

ターゲットのターゲット・バージョン。

TARGET_TYPE

VARCHAR2(128)

ターゲットのタイプ。

TARGET_TIMEZONE

VARCHAR2(64)

ターゲットの地域タイム・ゾーン。

HOST_NAME

VARCHAR2(256)

ターゲットがデプロイされるホストの名前。

TARGET_URL

VARCHAR2(4000)

ターゲットのEMコンソールURL。

UDTP_ARRAY

gc$notif_udtp_array

ユーザーが定義したターゲット・プロパティのリスト。ターゲットに関連付けられているイベントに対して移入されます。単一のソース(gc$notif_source_info)に関連付けられている場合に、インシデントと問題に対して移入されます。


gc$notif_udtp_array

最大サイズが20のgc$notif_udtpタイプの配列。

CREATE OR REPLACE TYPE gc$notif_udtp_array AS VARRAY(20) OF gc$notif_udtp;

gc$notif_udtp

ユーザー定義のターゲット・プロパティを参照するために使用されます。UDTPは、プロパティ・キー名とプロパティ値のセットで構成される必要があります。

表4-48 ペイロード

属性 データタイプ 属性情報

NAME

VARCHAR2(64)

プロパティの名前。

VALUE

VARCHAR2(1024)

プロパティ値。

LABEL

VARCHAR(256)

プロパティ・ラベル。

NLS_ID

VARCHAR(64)

プロパティのNLS ID


4.10.3.1 イベント・タイプに固有の通知ペイロード要素

gc$notif_event_attr_array

gc$notif_event_attrの配列は、イベント固有の属性を参照するために使用されます。配列の最大サイズは25です。配列の各要素は、gc$notif_event_attrタイプです(イベント・タイプ固有の属性を参照するために使用されます)。

表4-49 イベント属性タイプ

属性 データタイプ 属性情報

NAME

VARCHAR2(64)

イベント・タイプに固有の属性の内部名。

VALUE

VARCHAR2(4000)

値。

NLS_VALUE

VARCHAR2(4000)

属性の翻訳された値。


SQL問合せを使用して、デプロイされているイベント・タイプとそれぞれに固有のペイロードをリストできます。次のSQLを使用して、Enterprise Managerに登録されているすべての内部イベント・タイプ名をリストできます。

Select event_class as event_type, upper(name) as env_var_name
from em_event_class_attrs
where notif_order != 0
and event_class is not null
order by event_type, env_var_name;

属性名は、名前を比較に使用する前に大文字に変換しておく必要があります。

gc$notif_event_attr_arrayデータベース・タイプからアクセスできる各イベント・タイプに固有の属性変数のペイロードがあります。次の表に、最もクリティカルなイベント・タイプの通知属性をリストします。属性名は、名前を比較に使用する前に大文字に変換しておく必要があります。

表4-50 メトリック・アラート・イベント・タイプに固有の環境変数

環境変数 説明

COLL_NAME

メトリックを収集するコレクションの名前。

KEY_COLUMN_X

キー列Xの内部名(Xは1から7の数値)。

KEY_COLUMN_X_VALUE

キー列Xの値(Xは1から7の数値)。

KEY_VALUE

メトリック・アラート・イベントに対応するメトリックの監視対象オブジェクト。

METRIC_COLUMN

メトリック列の名前

METRIC_DESCRIPTION

メトリックの簡単な説明。

METRIC_GROUP

メトリックの名前。

NUM_KEYS

メトリック内のキー・メトリック列の数。

SEVERITY_GUID

このメトリック・アラートに関連付けられている重大度レコードのGUID。

VALUE

イベントがトリガーされたときのメトリックの値。


表4-51 ターゲット可用性イベント・タイプに固有の環境変数

環境変数 説明

AVAIL_SEVERITY

ターゲットのステータスが現在の可用性ステータスに変更された要因である遷移重大度(0-6)。

AVAIL_SEVERITYに指定できる値

  • 0 (ターゲット停止)

  • 1 (ターゲット起動)

  • 2 (ターゲット・ステータスのエラー)

  • 3 (エージェント停止)

  • 4 (ターゲット使用不可)

  • 5 (ターゲット・ブラックアウト)

  • 6 (不明なターゲット・ステータス)

AVAIL_SUB_STATE

現在のステータスに対するターゲットのサブステータス。

CYCLE_GUID

メトリック・アラートが最初に生成されたときからクリアされるまでの、メトリック・アラート・サイクルの一意の識別子。

METRIC_GUID

レスポンス・メトリックのメトリックGUID。

SEVERITY_GUID

この可用性ステータスに関連付けられている重大度レコードのGUID。

TARGET_STATUS

ターゲットの現在の可用性のステータス。


表4-52 ジョブ・ステータスの変更イベント・タイプに固有の環境変数

環境変数 説明

EXECUTION_ID

ジョブ実行の一意のID。

EXECUTION_LOG

実行された最後のステップのジョブ出力。

EXECUTION_STATUS

ジョブ実行の内部ステータス。

EXEC_STATUS_CODE

ジョブ実行の実行ステータス・コード。可能な値は、表4-16「ジョブ・ステータス・コード」を参照してください。

STATE_CHANGE_GUID

最新ステータス変更の一意のID


例4-17 PL/SQLスクリプト: イベント・タイプのペイロード要素

-- log_table table is created by following DDL to demostrate how to access 
-- event notification payload GC$NOTIF_EVENT_MSG.

CREATE TABLE log_table (message VARCHAR2(4000)) ;

-- Define PL/SQL notification method for Events 
CREATE OR REPLACE PROCEDURE log_table_notif_proc(s IN GC$NOTIF_EVENT_MSG)
IS
  l_categories gc$category_string_array;
  l_category_codes gc$category_string_array;
  l_attrs gc$notif_event_attr_array;
  l_ca_obj gc$notif_corrective_action_job;
BEGIN
  INSERT INTO log_table VALUES ('notification_type: ' || s.msg_info.notification_type);
  INSERT INTO log_table VALUES ('repeat_count: ' || s.msg_info.repeat_count);
  INSERT INTO log_table VALUES ('ruleset_name: ' || s.msg_info.ruleset_name);
  INSERT INTO log_table VALUES ('rule_name: ' || s.msg_info.rule_name);
  INSERT INTO log_table VALUES ('rule_owner: ' || s.msg_info.rule_owner);
  INSERT INTO log_table VALUES ('message: ' || s.msg_info.message);
  INSERT INTO log_table VALUES ('message_url: ' || s.msg_info.message_url);
  INSERT INTO log_table VALUES ('event_instance_guid: ' || s.event_payload.event_instance_guid);
  INSERT INTO log_table VALUES ('event_type: ' || s.event_payload.event_type);
  INSERT INTO log_table VALUES ('event_name: ' || s.event_payload.event_name);
  INSERT INTO log_table VALUES ('event_msg: ' || s.event_payload.event_msg);
  INSERT INTO log_table VALUES ('source_obj_type: ' || s.event_payload.source.source_type);
  INSERT INTO log_table VALUES ('source_obj_name: ' || s.event_payload.source.source_name);
  INSERT INTO log_table VALUES ('source_obj_url: ' || s.event_payload.source.source_url);
  INSERT INTO log_table VALUES ('target_name: ' || s.event_payload.target.target_name);
  INSERT INTO log_table VALUES ('target_url: ' || s.event_payload.target.target_url);
  INSERT INTO log_table VALUES ('severity: ' || s.event_payload.severity);
  INSERT INTO log_table VALUES ('severity_code: ' || s.event_payload.severity_code);
  INSERT INTO log_table VALUES ('event_reported_date: ' || to_char(s.event_payload.reported_date, 'D MON DD HH24:MI:SS'));

  IF s.event_payload.target.TARGET_LIFECYCLE_STATUS IS NOT NULL
  THEN
    INSERT INTO log_table VALUES ('target lifecycle_status: ' || s.event_payload.target.TARGET_LIFECYCLE_STATUS);
  END IF;

  -- Following block illustrates the list of category codes to which the event
  -- belongs.

  l_category_codes := s.event_payload.category_codes;
  IF l_categories IS NOT NULL 
  THEN
    FOR c IN 1..l_category_codes.COUNT
    LOOP
      INSERT INTO log_table VALUES ('category_code ' || c || ' - ' || l_category_codes(c));
    END LOOP;
  END IF;

  --
  -- Each event type has a specific set of attributes modeled. Examples of
  -- event types include metric_alert, target_availability, job_status_change.
  -- Following block illustrates how to access the attributes for job_status change
  -- event type
  --
  IF s.event_payload.event_type = 'job_staus_chage'
  THEN
    l_attrs := s.event_payload.event_attrs;
    IF l_attrs IS NOT NULL
    THEN
      FOR c IN 1..l_attrs.COUNT
      LOOP
        INSERT INTO log_table VALUES ('EV.ATTR name=' || l_attrs(c).name || ' value=' || l_attrs(c).value || ' nls_value=' || l_attrs(c).nls_value);
      END LOOP;
    END IF;
  END IF;

  -- Following block illustrates how to access corrective action job's attributes  IF s.msg_info.notification_type = GC$NOTIFICATION.NOTIF_CA AND s.event_payload.corrective_action IS NOT NULL
  THEN
    l_ca_obj := s.event_payload.corrective_action;
    INSERT INTO log_table VALUES ('CA JOB_GUID: ' || l_ca_obj.JOB_GUID);
    INSERT INTO log_table VALUES ('CA JOB_NAME: ' || l_ca_obj.JOB_NAME);
    INSERT INTO log_table VALUES ('CA JOB_OWNER: ' || l_ca_obj.JOB_OWNER);
    INSERT INTO log_table VALUES ('CA JOB_TYPE: ' || l_ca_obj.JOB_TYPE);
    INSERT INTO log_table VALUES ('CA JOB_STATUS: ' || l_ca_obj.JOB_STATUS);
    INSERT INTO log_table VALUES ('CA JOB_STATUS_CODE: ' || l_ca_obj.JOB_STATUS_CODE);
    INSERT INTO log_table VALUES ('CA JOB_STEP_OUTPUT: ' || l_ca_obj.JOB_STEP_OUTPUT);
    INSERT INTO log_table VALUES ('CA JOB_EXECUTION_GUID: ' || l_ca_obj.JOB_EXECUTION_GUID);
    INSERT INTO log_table VALUES ('CA JOB_STATE_CHANGE_GUID: ' || l_ca_obj.JOB_STATE_CHANGE_GUID);
    INSERT INTO log_table VALUES ('CA OCCURRED_DATE: ' || l_ca_obj.OCCURRED_DATE);  END IF;

COMMIT ;
END ;
/

4.10.4 通知のトラブルシューティング

通知システムの動作は、Enterprise ManagerおよびITインフラストラクチャの様々なコンポーネントに依存しています。このため、通知障害には考えられる原因が多数あります。通知システムに関する問題を特定する際は、次のガイドラインおよび推奨事項を参考にしてください。

4.10.4.1 一般的な設定

通知問題を診断する最初の手順は、通知環境が適切に構成および定義されているか確認することです。

OSコマンド、PL/SQLおよびSNMPトラップ通知

「テスト」ボタンをクリックして、すべてのOSコマンド、PL/SQLおよびSNMPトラップの通知メソッドが有効であることを確認します。これによってテスト通知が送信され、OMSが通知メソッドを呼び出す際の問題が表示されます。メソッドがコールされたことを確認してください。たとえば、OSコマンドの通知によりログ・ファイルに情報が書き込まれるように設定した場合は、OSコマンドの通知によって情報がログ・ファイルに書き込まれていることを確認します。

電子メールの通知

  • 「設定」の「通知メソッド」ページで、電子メール・ゲートウェイが設定されていることを確認します。送信者の電子メール・アドレスは有効である必要があります。「テスト」ボタンをクリックすると、電子メールが送信者の電子メール・アドレスに送信されます。この電子メールが受信されることを確認します。「テスト」ボタンでは通知スケジュールはすべて無視されますので注意してください。

  • 電子メール・アドレスが設定されていることを確認します。「テスト」ボタンをクリックすると、指定したアドレスに電子メールが送信されるため、この電子メールを受信したことを確認する必要があります。「テスト」ボタンでは通知スケジュールはすべて無視されますので注意してください。

  • 電子メール・スケジュールが定義されていることを確認します。通知スケジュールが定義されていない場合、電子メールは送信されません。

  • 対象となる状態と一致するインシデント・ルールが定義されていることを確認し、そのルールに電子メールおよび通知メソッドが割り当てられていることを確認します。

4.10.4.2 通知システムのエラー

通知問題に関連するアラートが発生した場合、次のものを確認して通知エラーを調べてください。

  • 通知システム内の重大なエラーは、MGMT_SYSTEM_ERROR_LOG表にシステム・エラーとして記録されます。「設定」メニューから、「管理サービスとリポジトリ」を選択し、これらのエラーを表示します。

  • 配信エラーがないか確認します。インシデント・マネージャから表示できます。「エンタープライズ」メニューから、「監視」「インシデント・マネージャ」の順に選択します。この詳細情報に、通知が配信されなかった理由が示されます。

4.10.4.3 通知システムのトレース・メッセージ

通知システムは、sysman/log/emoms.trcファイル内にトレース・メッセージを生成できます。

トレースを構成するには、emctl set propertyコマンドを使用してlog4j.category.oracle.sysman.em.notificationプロパティのフラグを設定します。トレース・レベルはINFO、WARN、DEBUGに設定できます。次に例を示します。

emctl set property -name log4j.category.oracle.sysman.em.notification -value
DEBUG -module logging

注意: システムからSYSMANパスワードが要求されます。

トレース・メッセージには、em.notificationという文字列が含まれます。UNIX環境で作業している場合、grepコマンドを使用してemoms.trcおよびemoms_pbs.trcファイル内のメッセージを検索できます。次に例を示します。

grep em.notification emoms.trc emoms_pbs.trc

トレース・ファイル内の調べる箇所

emoms.trcファイル内の次のエントリが通知に関連しています。

通常起動のメッセージ

OMSが起動すると、次のようなタイプのメッセージが表示されます。

2011-08-17 13:50:29,458 [EventInitializer] INFO  em.notification init.167 - Short format maximum length is 155
2011-08-17 13:50:29,460 [EventInitializer] INFO  em.notification init.185 - Short format is set to both subject and body
2011-08-17 13:50:29,460 [EventInitializer] INFO  em.notification init.194 - Content-Transfer-Encoding is 8-bit
2011-08-17 13:50:29,460 [EventInitializer] DEBUG em.notification registerAdminMsgCallBack.272 - Registering notification system message call back
2011-08-17 13:50:29,461 [EventInitializer] DEBUG em.notification registerAdminMsgCallBack.276 - Notification system message callback is registered successfully
2011-08-17 13:50:29,713 [EventInitializer] DEBUG em.notification upgradeEmailTemplates.2629 - Enter upgradeEmailTemplates
2011-08-17 13:50:29,735 [EventInitializer] INFO  em.notification upgradeEmailTemplates.2687 - Email template upgrade is not required since no customized templates exist.
2011-08-17 13:49:28,739 [EventCoordinator] INFO  events.EventCoordinator logp.251 - Creating event worker thread pool: min = 4 max = 15
2011-08-17 13:49:28,791 [[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO emdrep.pingHBRecorder initReversePingThreadPool.937 - Creating thread pool for reverse ping : min = 10 max = 50
2011-08-17 13:49:28,797 [[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG emdrep.HostPingCoordinator logp.251 - Creating thread pool of worker thread  for host ping: min = 1 max = 10
2011-08-17 13:49:28,799 [[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG emdrep.HostPingCoordinator logp.251 - Creating thread pool for output of worker's  output for host ping: min = 2 max = 20
2011-08-17 13:49:30,327 [ConnectorCoordinator] INFO  connector.ConnectorPoolManager logp.251 - Creating Event thread pool: min = 3 max = 10
2011-08-17 13:51:48,152 [NotificationMgrThread] INFO  notification.pbs logp.251 - Creating thread pool: min = 6 max = 24
2011-08-17 13:51:48,152 [NotificationMgrThread] INFO  em.rca logp.251 - Creating RCA thread pool: min = 3 max = 20

通知配信のメッセージ

2006-11-08 03:18:45,387 [NotificationMgrThread] INFO  em.notification run.682 - Notification ready on EMAIL1

2006-11-08 03:18:46,006 [DeliveryThread-EMAIL1] INFO  em.notification run.114 - Deliver to SYSMAN/admin@myco.com

2006-11-08 03:18:47,006 [DeliveryThread-EMAIL1] INFO  em.notification run.227 - Notification handled for SYSMAN/admin@myco.com

通知システム・エラーのメッセージ

2011-08-17 14:02:23,905 [NotificationMgrThread] DEBUG notification.pbs logp.251 - Notification ready on EMAIL1
2011-08-17 14:02:23,911 [NotificationMgrThread] DEBUG notification.pbs logp.251 - Notification ready on PLSQL4
2011-08-17 14:02:23,915 [NotificationMgrThread] DEBUG notification.pbs logp.251 - Notification ready on OSCMD14
2011-08-17 14:02:19,057 [DeliveryThread-EMAIL1] INFO  notification.pbs logp.251 - Deliver to To: my.admin@myco.com; issue type: 1; notification type: 1
2011-08-17 14:02:19,120 [DeliveryThread-OSCMD14] INFO  notification.pbs logp.251 - Deliver to SYSMAN, OSCMD, 8; issue type: 1; notification type: 1
2011-08-17 14:02:19,346 [DeliveryThread-PLSQL4] INFO  notification.pbs logp.251 - Deliver to SYSMAN, LOG_JOB_STATUS_CHANGE, 9; issue type: 1; notification type: 1
2011-08-17 14:02:19,977 [DeliveryThread-PLSQL4] DEBUG notification.pbs logp.251 - Notification handled for SYSMAN, LOG_JOB_STATUS_CHANGE, 9
2011-08-17 14:02:20,464 [DeliveryThread-EMAIL1] DEBUG notification.pbs logp.251 - Notification handled for To: my.admin@myco.com
2011-08-17 14:02:20,921 [DeliveryThread-OSCMD14] DEBUG notification.pbs logp.251 - Notification handled for SYSMAN, OSCMD, 8

4.10.4.4 電子メールのエラー

SMTPゲートウェイが適切に設定されていない:

Failed to send e-mail to my.admin@myco.com: For e-mail notifications to be sent, your Super Administrator must configure an Outgoing Mail (SMTP) Server within Enterprise Manager. (SYSMAN, myrule)

無効なホスト名:

Failed to connect to gateway: badhost.oracle.com: Sending failed;
nested exception is:
javax.mail.MessagingException: Unknown SMTP     host: badhost.example.com;

無効な電子メール・アドレス:

Failed to connect to gateway: rgmemeasmtp.mycorp.com: Sending failed;
nested exception is:
javax.mail.MessagingException: 550 5.7.1        <smpemailtest_ie@example.com>... Access denied

電子メールのゲートウェイ構成が有効であるか確認する場合は、常に「テスト」ボタンを使用してください。送信者の電子メール・アドレスに電子メールが受信されることを確認してください。

4.10.4.5 OSコマンドのエラー

OSコマンドまたはスクリプトを実行しようとすると、次のエラーが発生することがあります。「テスト」ボタンを使用して、OSコマンドの構成が有効であるか確認します。エラーが存在する場合、コンソールにそのエラーが表示されます。

パスが無効であるか、ファイルに対する読取り権限がない:

Could not find /bin/myscript (machineb10.oracle.com_Management_Service) (SYSMAN, myrule )

実行可能ファイルに対する実行権限がない:

Error calling /bin/myscript: java.io.IOException: /bin/myscript: cannot execute (machineb10.oracle.com_Management_Service) (SYSMAN, myrule ) 

OSコマンドの実行時間の超過によるタイムアウト:

Timeout occurred running /bin/myscript (machineb10.oracle.com_Management_Service) (SYSMAN, myrule )

メモリー不足のため、またはOMSマシン上で実行されているプロセスが多すぎるために発生したエラーは、適宜記録されます。

「テスト」ボタンを使用して、OSコマンドの構成が有効であるか確認します。

4.10.4.6 SNMPトラップのエラー

「テスト」ボタンを使用して、SNMPトラップの構成が有効であるか確認します。

SNMPトラップがサード・パーティのSNMPコンソールに到達できない場合でも、このことはUDP経由で送信されるため、OMSはエラーを報告しません。SNMPトラップがサード・パーティのSNMPコンソールに到達しようとしているときに問題が発生した場合、可能性のあるSNMPトラップの問題には、SNMPコンソールを実行しているマシンのホスト名、ポート、コミュニティが無効であるか、ファイアウォールの問題などのネットワークの問題が考えられます。

SNMPトラップ問題として他に考えられるのは、無効なホスト名、ポート、SNMPコンソールを実行しているマシンのコミュニティなどがあります。

4.10.4.7 PL/SQLのエラー

PL/SQLプロシージャを実行しようとすると、次のエラーが発生することがあります。「テスト」ボタンを使用して、プロシージャが有効であるか確認します。エラーが存在する場合、コンソールにそのエラーが表示されます。

プロシージャ名が無効であるか、完全修飾名でない。(例: SCOTT.PKG.PROC)

Error calling PL/SQL procedure plsql_proc: ORA-06576: not a valid function or procedure name (SYSMAN, myrule) 

プロシージャが適切なシグネチャでない。例: PROCEDURE event_proc(s IN GC$NOTIF_EVENT_MSG)

Error calling PL/SQL procedure plsql_proc: ORA-06553: PLS-306: wrong number or types of arguments in call to 'PLSQL_PROC' (SYSMAN, myrule)

プロシージャに不具合があり、例外が発生

Error calling PL/SQL procedure plsql_proc: ORA-06531: Reference to uninitialized collection (SYSMAN, myrule)

PL/SQL内でカーソルのリークがないように注意する必要があります。この状況が原因で例外が発生すると、配信は失敗し、Cloud Controlコンソールのアラートの「詳細」セクションにメッセージが表示されます。

PL/SQLの構成が有効であるか確認するときはいつでも、「テスト」ボタンを使用してください。