イベント・タイプに固有の通知ペイロード要素
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に指定できる値
|
|
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 ;
/