Oracleデータベースから他のアプリケーションに増分データを送信する:-小さな提案でも非常に役立ちます
私は1つのテーブルを持っていると仮定しましょうItem
。DML
このテーブルでは毎日多くのことが起こります。このテーブルでDML(Insert update delete)が発生した場合は、を使用してこのトランザクションデータを別のアプリケーションに挿入する必要がありますAPIs
。
アイテムテーブルで、2つのレコードが挿入され、1つが更新され、1つが削除された場合、以下のフォームで別のアプリケーションにデータを挿入する必要があります。ファイルはjson形式になります。
I can create below file. My question is regarding how to extract daily transactional data.
{
"insert": ["A1,A2"].
"delete": "B1",
"update": "C1 "
}
上記のようなもの。A1 A2がアイテムテーブルに挿入された場合、B1が削除され、C1が更新されたことを意味します。したがって、上記の形式でデータをターゲットアプリケーションに送信して、変更を加えます。
これを行うために、もう1つのテーブルを作成しましたItem_trigger
。またtrigger
、アイテムテーブルに作成しました。したがって、DMLが発生した場合、値を使用trigger
してItem_trigger
テーブルに挿入されます
('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')
次に、Item_trigger
テーブルを使用してファイルを作成し、データをターゲットシステムに送信します。
トリガーを使用しているため、上記のデザインは拒否されました。良い解決策はありますか?私はMVについて考えていましたが、削除は考慮されていません。考えdelete
ていないのでそれでも使えません。
デザインを手伝ってくれませんか。とにかく使用せずにトランザクションを記録することはありますかtrigger
回答
特定のテーブルでステートメントレベルの監査を利用できます。ただし、これは実行された操作のタイプの情報のみを提供し、実際のデータは提供しません。この情報を、挿入、削除、更新されたものの値を別のテーブルに保存することと組み合わせたり、メインテーブルを使用してデータを直接送信したりできます。
以下はスクリプトです
audit select,insert,update,delete on test.test_audit by access;
delete from test_audit where id <= 10;
select * from Dba_Audit_Object where OBJ_NAME='TEST_AUDIT';