例: 変更履歴イベント・モニターを使用したコミット済みの全 DDL ステートメントのリスト
変更履歴イベント・モニターを使用すると、 実行されたコミット済みの全 DDL ステートメントをすぐにリストして、 ワークロードに影響を与えるような変更が行われたかどうかを調べることができます。
シナリオ
この例では、データベース管理者 (DBA) が、 この 24 時間でいくつかの照会のパフォーマンスが低下していることに気が付きます。 DBA は、ワークロードに重大な影響を与えるような変更 (索引がドロップされたなど) が行われたかどうかを調べるために、 変更履歴イベント・モニターを使用して、この期間に実行された DDL をただちに確認します。 DBA は、CHGHIST という変更履歴イベント・モニターを既に作成しており、 これを使用して DDL ステートメントを追跡しています。 DBA は、以下のステートメントを実行して、この 24 時間に変更履歴イベント・モニターでキャプチャーされたコミット済みの全 DDL ステートメントをリストします。 実行するこのステートメントは、ROLLBACK ステートメントおよび ROLLBACK TO SAVEPOINT ステートメントのいずれかを使用してロールバックされたステートメントを除外しています。変更履歴イベント・モニターは、
DDL が実行されたときに DDL イベントを記録することに注意してください。
DDL がデータベースの変更を招くかどうかは、その DDL がコミットされるかどうかによって決まります。
WITH savepoint_rollbacks (global_tran_id, local_tran_id, savepoint_id) AS
(SELECT DISTINCT T.global_transaction_id, T.local_transaction_id, T.savepoint_id
FROM DDLSTMTEXEC_CHGHIST as D, TXNCOMPLETION_CHGHIST as T
WHERE T.txn_completion_status='S' AND
D.savepoint_id >= T.savepoint_id AND
D.event_timestamp <= T.event_timestamp)
SELECT VARCHAR(D.STMT_TEXT, 70) AS STMT_TEXT FROM DDLSTMTEXEC_CHGHIST as D,
TXNCOMPLETION_CHGHIST as T
WHERE D.global_transaction_id = T.global_transaction_id AND
D.local_transaction_id = T.local_transaction_id AND
T.txn_completion_status = 'C' AND
(D.global_transaction_id, D.local_transaction_id, D.savepoint_id)
NOT IN (SELECT * FROM savepoint_rollbacks) AND
D.EVENT_TIMESTAMP > CURRENT TIMESTAMP - 24 HOURS;
STMT_TEXT
----------------------------------------------------------------------
CREATE INDEX I1 ON T1 (ONE)
1 record(s) selected.