Oracle 데이터베이스에서 다른 애플리케이션으로 증분 데이터 전송 :-작은 제안이라도 매우 유용 할 것입니다.

Aug 15 2020

나는 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가 Item 테이블에 삽입되면 B1이 삭제되고 C1이 업데이트되었음을 ​​의미합니다. 그래서 나는 변경을 수행하기 위해 대상 응용 프로그램에 위의 형식으로 데이터를 보낼 것입니다.

이를 위해 하나 이상의 테이블을 만들었습니다 Item_trigger. 또한 trigger항목 테이블에 만들었습니다 . 따라서 DML이 발생 trigger하면 Item_trigger값이있는 테이블에 삽입됩니다.

('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')

그런 다음 Item_trigger테이블 을 사용하여 파일을 만들고 데이터를 대상 시스템으로 보냅니다.

위의 디자인은 트리거를 사용하고 있기 때문에 거부되었습니다. 좋은 해결책이 있나요? MV에 대해 생각했지만 삭제는 고려하지 않았습니다. 고려하지 않기 delete때문에 그것도 사용할 수 없습니다.

디자인을 도와주세요. 어쨌든 사용하지 않고 거래를 기록 할 수 있습니까?trigger

답변

Atif Aug 15 2020 at 23:32

특정 테이블에서 문 수준 감사를 사용할 수 있습니다. 그러나 이는 수행 된 작업 유형에 대한 정보 만 제공하지만 실제 데이터는 제공하지 않습니다. 이 정보를 다른 테이블에 삽입, 삭제 및 업데이트 한 값을 저장하는 것과 결합하거나 기본 테이블을 사용하여 데이터를 직접 전송할 수 있습니다.

아래는 스크립트입니다

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';