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