イベント・タイプに固有の通知ペイロード要素

gc$notif_event_attr_array

gc$notif_event_attrの配列は、イベント固有の属性を参照するために使用されます。配列の最大サイズは25です。配列の各要素は、gc$notif_event_attrタイプです(イベント・タイプ固有の属性を参照するために使用されます)。

表6-50 イベント属性タイプ

属性 データ型 詳細情報

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データベース・タイプからアクセスできる各イベント・タイプに固有の属性変数のペイロードがあります。次の表に、最もクリティカルなイベント・タイプの通知属性をリストします。属性名は、名前を比較に使用する前に大文字に変換しておく必要があります。

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

環境変数 説明

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

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

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

環境変数 説明

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

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

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

環境変数 説明

EXECUTION_ID

ジョブ実行の一意のID。

EXECUTION_LOG

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

EXECUTION_STATUS

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

EXEC_STATUS_CODE

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

STATE_CHANGE_GUID

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

例6-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 ;
/