DB2では、基本監査情報を追跡できます。
DB2は、どのデータが変更されたか、誰がデータを変更したか、およびデータを変更したSQL操作を追跡できます。
データが変更されたときを追跡するには、テーブルをシステム期間の一時テーブルとして定義します。関連する履歴テーブルの行開始列と行終了列には、データの変更がいつ発生したかに関する情報が含まれています。
データを変更したユーザーとSQLを追跡するために、非決定論的に生成された式の列を使用できます。これらの列には、データが変更された時点のCURRENT SQLID特殊レジスターの値など、監査目的に役立つ値を入れることができます。非決定論的に生成される式の列に可能な値は、CREATE TABLEおよびALTER TABLEステートメントの構文で定義されます。例えば
CREATE TABLE TempTable (balance INT,
userId VARCHAR(100) GENERATED ALWAYS AS (SESSION_USER) ,
opCode CHAR(1)
GENERATED ALWAYS AS (DATA CHANGE OPERATION)
... SYSTEM PERIOD (SYS_START, SYS_END));
データを改変はuserIdカラムストアの
。この列は、SESSION_USER特殊レジスターの値を含む非決定論的に生成された式列として定義されます。
opCode列には、データを変更したSQL操作が格納されます。この列は、非決定論的に生成される式の列として定義され、SQL操作のタイプを示す値を格納します。
あなたはその後、TempTableのための履歴テーブルを作成するとのTempTableとその履歴テーブルを関連付けるために、次のステートメントを使用することとします
テーブルの数が限られ、限られた時間のためのSQL文のキャプチャ
CREATE TABLE TempTable_HISTORY (balance INT, user_id VARCHAR(128) , op_code CHAR(1) ...);
ALTER TABLE TempTable ADD VERSIONING
USE HISTORY TABLE TempTable_HISTORY ON DELETE ADD EXTRA ROW;
私は、SQLトレースがそれに近づくことを意味します。 – Adam
どのDB2バージョン/プラットフォームですか? – mustaccio
DB2はトリガーの使用をサポートしていませんか? BIなどの大量の環境を除いて、トリガーはSQL DBの変更を追跡するための選択ツールです。 – Tyron78