반응형

개인정보 보안 강화, 상장사의 전산 감사 등으로
데이터의 변경 이력을 기술적(?)으로 남겨야 하는 경우가 발생한다

 

크게 2가지 방식으로 접근한다

(1)Application 에서 로그를 남기는
(2)DB에서 로그를 남기는

 

Application 만으로 시스템 운영이 되는 이상적인 환경이라면
당연히
Application 에서 데이터 변경 이력을 남기면 된다

최근에는 강제적으로, 시스템 규모에 따라 개인정보 조회/수정 이력이 남겨지도록 하고 있다

 

하지만 Application 아닌 DB 접근을 통해 Data 변경되는 경우는 어떻게 할까?

Application 운영 개발자, DBA 등…
SQL Plus, TOAD, Golden...
등의 DB tool 이용해 데이터를 변경하는 경우가 대상이다.
DB
접근에 대해 통제하는 솔루션이 존재하지만,
여기서는 (접근제어가 아닌) 데이터 변경 이력 남기는
기술적인 방법에 한정하여 기술한다

(1) trigger
application 운영자의 경우 DB trigger 존재를 알지 못한다.
일반적으로 application 운영자 DB 계정에 trigger 소스를 있게 권한 부여를 하지 않기 때문이다
trigger 데이터 변경 이력을 남길수 있는 가장 쉬운 방법 하나이다

로직 적용이 가능하기 때문에 특정 column 한정하여 이력 남기는데 주로 사용된다
DML 다양한 화면/application 에서 수행되는 경우 변경 소요/risk 높아지기 때문에
DB 단에서 쉽게 적용을 고려하게 되는 방법이다


, DML overhead 있기 때문에 해당 table OLTP 상황에 따라 적용해야 한다
변경
이력 때문에 업무가 느려지거나 장애 발생할 있다



(2)ORA-ROWSCN
(
활용도가 낮아 짧게 설명한다)
Oracle 10g
부터 사용 가능한 기능이다
편리한 기능이지만…. 제한 사항이 많다
 

  • table 생성시 option 설정 되어야 한다
  • scn_to_timestamp 변환 가능한 scn은 최근 5일 이내
*결론적으로 운영되고 있는 table 적용이 어렵고,
최근 5일치만 변경 이력 조회 가능한 업무에만 적용되어야 한다



(3)Oracle Flashback Query
Flashback archive 모드를 통해 DB 에서 남기는 방식으로
ORA-ROWSCN 단점을 개선한 방식이다

Oracle 12c 부터 사용가능하다

tablespace 보관주기 설정하여 생성하고

대상 table alter 하여 "FLASHBACK ARCHIVE" 설정 한다
세부 설명은 아래 link 통해 확인 가능.

<출처>
https://blog.learningtree.com/temporal-history-oracle-track-changes-lifetime-table/
반응형

+ Recent posts