반응형
개인정보 보안 강화, 상장사의 전산 감사 등으로
데이터의 변경 이력을 기술적(?)으로 남겨야 하는 경우가 발생한다
크게 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 부터 사용 가능한 기능이다 편리한 기능이지만…. 제한 사항이 많다
최근 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/ |
반응형