10g 엔터프라이즈 에디션을 사용하는 경우 Oracle의 Fine-Grained Auditing을 확인해야합니다. 그것은 자신의 것을 굴리는 것보다 낫습니다.
하지만 버전이 낮거나 FGA가 사용자의 취향에 맞지 않는 경우 여기에 그 방법이 나와 있습니다. 핵심은 : 각 응용 프로그램 테이블에 대한 별도의 감사 테이블을 빌드.
위의 개요와 일치하지 않으므로 듣고 싶지 않습니다. 그러나 업데이 트에 의해 영향을받는 각 열에 대해 OLD와 NEW 값을 가진 행을 저장하는 것은 정말 나쁜 생각이다 :
그것은 확장되지 않습니다
는
무엇에 대한 (열 열을 만지지 하나의 업데이트가 열 개 삽입을 생성합니다)
레코드를 삽입 했습니까?
- 그래서, 동일한 구조로, 각 응용 프로그램 테이블에 대한 감사 테이블이 주어진 시간
에서 레코드의 상태를 조립하는 완벽한 고통이다. 이는 응용 프로그램 테이블에 CHANGED_TIMESTAMP 및 CHANGED_USER를 포함시키는 것을 의미하지만 이는 나쁜 것은 아닙니다.
마지막으로, 이것이 어디에서 주도적인지 알면 각 테이블에 NEW 값을 가진 전체 레코드를 삽입하는 트리거를 감사 테이블에 삽입하십시오. INSERT 및 UPDATE시 트리거가 실행됩니다. 이것은 완전한 역사를 제공하며, 두 버전의 레코드를 쉽게 비교할 수 있습니다. DELETE의 경우 기본 키가 채워지고 다른 모든 열은 비어있는 감사 레코드를 삽입합니다.
귀하는 이러한 개체를 모두 구현하기에는 너무 많은 테이블과 열이있는 것으로 간주됩니다. 그러나 테이블을 생성하고 데이터 사전 (user_tables, user_tab_columns)에서 DDL 문을 트리거하는 것은 간단합니다.
출처
2010-05-06 18:32:38
APC