테이블 신규/변경 건에 대해 식별 할 수 있는 방법 0 7 1,088

by idoris [SQL Query] [2020.03.25 23:12:49]


현재 고객사에 관리되고 있는 A시스템 DB 테이블들에 생성일자, 변경일자 등의 날짜 필드가 없습니다.

생성 날짜를 number(8) 로 생성일 정도만 관리하고 있고, 그마저 이런 필드도 관리 안되고 있는 테이블들도 존재합니다.

결국 신규/변경 시점을 거의 식별 할 수 가 없습니다.

이런 테이블들을 대상으로 저는 B시스템 DB에서 최근 30분 주기로 생성/변경된 건들만을 식별해서, 주기적으로 처리 해야 하는 작업들이 있는데..

A시스템 각 테이블마다 기적재되어 있는 건들만 해도 기백만 건입니다.

A시스템 테이블은 SELECT만 가능하기 때문에,

A시스템 테이블 전체 데이터를 주기적으로 B시스템 DB의 백업 테이블로 생성하여 

원천 테이블과 백업 테이블 간의 전체 필드 값들을 비교해서 식별 할 수는 있겠지만

테이블 건 수 때문에 시간적인 부분도 그렇고, 또 테이블이 한 두개도 아니고,

30분 주기로 대량건의 원천 테이블과 백업 테이블들의 모든 필드들을 서로 비교해서 식별하는게, 

너무 비효율 적이고, 무식한 방법이라.. 혹시 다른 방법이 있는지 질문 드립니다.

DBMS 패키지나.. 혹은 다른 방법 등으로,

특정 시점 이후, 생성/변경 된 값들을 전체 필드 비교가 아닌,

간단하게 식별 할 수 있는 방법이 있을까요?

답변 꼭 좀 부탁드립니다.

항상 감사합니다^^

by 고수로. [2020.03.26 09:26:44]

주기적으로 수행 처리된 데이터에 대해서는 Flg 칼럼으로 관리하면 어떨까요

아니라면 특정 로그 테이블을 이용해서 수행된 내역의 Seq? 값을 관리하고 그 이후 자료에 대해서 처리하는 방법이 있을듯 합니다.


by idoris [2020.03.26 09:47:15]

문제는 제가 원천 테이블들을 수정할 수가 없습니다

저는 원천 테이블들을 기반으로 뒷단에서 처리해야하기 때문에..

원천 테이블 데이터들을 땡겨와서 뒷단 시스템 DB 테이블에 가져올 수는 있습니다.

그치만 30분 단위로 생성/변경 건에 대해 작업을 해야 하는데

원천 테이블의 생성/변경 시점 기준을 알 수가 없어서 문제이구요 ㅠ


by 우리집아찌 [2020.03.26 10:22:08]

운영 태이블에 트리거를 설정해서 처리할수 있디않을까요?


by idoris [2020.03.26 10:25:42]

운영 중인 A시스템은 SELECT만 가능하고,

트리거로 설정은 불가합니다. ㅠ 


by 마농 [2020.03.26 10:45:28]

테이블이 ROWDEPENDENCIES 옵션으로 생성되어 있는지 확인하세요.
해당 옵션으로 생성된 테이블이라면? 로우 단위 변경 SCN 확인 가능합니다.
ORA_ROWSCN, SCN_TO_TIMESTAMP(ORA_ROWSCN)
SCN_TO_TIMESTAMP 는 최신 scn 만 시간으로 변경 가능합니다. 오래된 scn 은 에러날 듯.
해당 옵션으로 생성된 테이블이 아니라면? 블럭단위 변경 SCN 으로 확인될 것입니다.


by idoris [2020.03.26 11:07:37]

네 마농님

확인 결과 ROWDEPENDENCIES 옵션은 DISABLED 되어 있습니다.

블록 단위라도 가져오고 싶은데..

SCN_TO_TIMESTAMP(ORA_ROWSCN) 함수를 WHERE절에 적용하면 에러가 나네요 ㅠ

WHERE절에 특정 건을 지정후 하면 조회가 되는데

특정 조건 없이 SCN_TO_TIMESTAMP(ORA_ROWSCN) 로만 조건을 주면 에러나요 ㅠ

방법이 없을까요?


by 마농 [2020.03.26 11:12:34]

ora_rowscn 이 시간 순서로 증가하는 값이라면? 특정 값 이후로 가져오면 될 듯 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입