안녕하세요 Thinking Man 입니다.
이번 글에서는 Audit Trail 데이터를 삭제하는 방법 중 자동/수동을 제외한 기타 삭제 방법에 대해 알아보도록 하겠습니다.
이번 글을 읽게 되면 DB Audit Trail 데이터를 DELETE로 삭제하는 방법 및 초기화 여부, Purge 간격변경 및 Purge 작업취소 방법에 대해서 알 수 있습니다.
이 글은 Oracle 11gR2 공식 문서를 참고하여 작성하였습니다.
Audit Trail Purge 기타 방법
데이터베이스 감사 트레일의 일부 레코드 삭제
DB Audit Trail의 경우 Audit Table의 레코드를 수동으로 삭제할 수 있습니다. 예제를 살펴보시죠.
예제) 2024년 7월 한달동안 쌓인 Audit Trail 데이터를 삭제하는 예제 입니다.
DELETE FROM SYS.AUD$ WHERE NTIMESTAMP# > TO_TIMESTAMP ('01-JULY-24 00.00.00.000000 AM') AND NTIMESTAMP# < TO_TIMESTAMP ('31-JULY-24 23.59.59.999999 PM');
예제) Audit Data를 모두 삭제하려면 아래처럼 WHERE 조건 없이 DELETE 를 수행하면 됩니다.
DELETE FROM SYS.AUD$;
DB Audit Trail 데이터를 삭제하려면 SYS 사용자이거나 SYS.AUD$ 테이블에 DELETE 권한을 부여받은 사용자만 삭제 가능합니다.
참고: AUDIT SESSION 이 설정되어 있는 상태에서 Audit Trail 이 가득 찬 경우 AUDIT SESSION에 대한 감사 레코드를 Audit Trail에 저장할 수 없기 때문에 일반 사용자는 DB에 연결이 불가능 합니다. 이런 상황에서는 SYS 계정으로 접속하여 Audit Trail의 여유 공간확보를 해야만 합니다. AUDIT_SYS_OPERATIONS 변수가 TRUE로 설정 되어 있지 않으면 이 때의 SYS 계정에서 수행한 작업은 표준 Audit Trail에 기록되지 않습니다.
DB Audit Trail 데이터를 삭제한 이후 삭제된 공간만큼 재사용이 가능합니다. 이 삭제된 공간을 반환하려면 별도의 작업이 필요합니다. 아래는 반환하기 위한 순서입니다.
1. SYS.AUD$ 테이블을 별도의 자동 TBS로 이동합니다.
BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD, audit_trail_location_value => 'USERS'); END; /
2. 여유공간을 반환 하기 위해서는 ROW MOVEMENT 를 ENABLE 한 후 SHRINK 명령을 수행해야 함
ALTER TABLE SYSTEM.AUD$ ENABLE ROW MOVEMENT; ALTER TABLE SYSTEM.AUD$ SHRINK SPACE CASCADE; -- 여유공간 반환
3. SHRINK 후 AUD$ 테이블을 다시 SYSTEM TBS로 이동해야 하는 경우
BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD, audit_trail_location_value => 'SYSTEM'); END; /
Audit 테이블의 모든 데이터를 삭제하고 모든 공간을 다른 TBS에 반환하려면 TRUNCATE 문을 사용해 삭제하면 됩니다. DELETE 와 다르게 TRUNCATE 는 모든 공간을 반환합니다.
TRUNCATE TABLE SYS.AUD$;
참고: SYS.AUD$ 및 SYS.FGA_LOG$는 직접 수정할 수 있는 유일한 SYS Table입니다.
기타 감사 트레일 삭제 작업
Audit Trail Purge를 위한 초기화 여부 확인 방법
Purge를 위한 초기화 작업이 완료되었는지 확인하기 위해서는 DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED 패키지를 수행하여 확인 가능합니다.
초기화되었다면 해당 패키지는 TRUE를 반환하고 초기화되지 않았다면 FALSE를 반환합니다.
예제)
SET SERVEROUTPUT ON BEGIN IF DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD) THEN DBMS_OUTPUT.PUT_LINE('AUD$ is initialized for cleanup'); ELSE DBMS_OUTPUT.PUT_LINE('AUD$ is not initialized for cleanup.'); END IF; END; /
위 예제는 초기화 여부를 TRUE, FALSE로 리턴하며 상태 메시지를 같이 반환하는 예제입니다.
표준 감사가 아닌 다른 감사를 선택하고자 한다면 단계 3: Audit Trail Purge 작업 초기화의 AUDIT_TRAIL_TYPE 옵션을 확인하시면 됩니다.
초기화 이후 자동 Purge 간격 변경 방법
자동 Purge 시에 초기화 작업(단계 3)을 하며 Purge 하려는 간격을 설정하는데 이 간격 설정을 추후에 변경을 하고자 한다면 아래의 예제처럼 변경 가능합니다.
예제) 표준 감사를 Purge 간격을 1주일 단위로 변경
BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, AUDIT_TRAIL_PROPERTY => DBMS_AUDIT_MGMT.CLEAN_UP_INTERVAL, AUDIT_TRAIL_PROPERTY_VALUE => 168 ); END; /
예제 속성)
- AUDIT_TRAIL_TYPE : 다음 값 중 하나를 입력합니다.
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD : 표준 감사 테이블 AUD$를 지정
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD : 상세 감사 테이블 FGA_LOG$를 지정
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD : 표준 및 상세 감사 테이블을 모두 지정
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS : .aud 확장자를 가진 OS Audit 파일 지정 (이 설정은 Windows 이벤트 로그 항목에는 적용되지 않습니다.)
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML : XML 형식의 OS Audit 파일 지정
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES : OS 및 XML Audit 파일 모두 지정
– DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL : DB Audit Trail 및 OS Audit Trail 유형의 모든 Audit Trail 지정
주의해야 할 점은 각 감사 유형간에 간격들이 충돌하지 않아야 합니다.
예로 DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD과 DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD에 개별 간격을 설정할 수 있지만, DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD 속성은 설정할 수 없습니다.
- AUDIT_TRAIL_PROPERTY : 변경할 속성을 지정. 여기서는 Purge Interval 속성을 나타내는 DBMS_AUDIT_MGMT.CLEAN_UP_INTERVAL을 지정. 현재 속성 설정을 확인하려면 DBA_AUDIT_MGMT_CONFIG_PARAMS 뷰의 PARAMETER_NAME, PARAMETER_VALUE 컬럼을 조회하면 됩니다. DBMS_AUDIT_MGMT.CLEAN_UP_INTERVAL 속성을 설정하는 순간부터 시간이 경과합니다.
- AUDIT_TRAIL_PROPERTY_VALUE : DBMS_AUDIT_MGMT.INIT_CLEANUP 프로시저로 설정된 시간 간격을 업데이트합니다. 1에서 999 사이의 값을 입력 할 수 있습니다.
Purge 작업 초기화 설정 취소 방법
Purge 작업의 초기화를 취소 할 수 있습니다. 즉 Purge Interval 설정을 취소하는 방법입니다. 이를 위해서 DBMS_AUDIT_MGMT.DEINIT_CLEANUP를 사용해야 합니다.
예제) 표준 Audit Trail 의 Purge 설정을 취소
BEGIN DBMS_AUDIT_MGMT.DEINIT_CLEANUP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD); END; /
이 예에서:
- AUDIT_TRAIL_TYPE : 원하는 유형의 Audit 을 설정. 위 “초기화 이후 자동 Purge 간격 변경 방법”의 AUDIT_TRAIL_TYPE 값 중 하나를 입력 가능.
같이 읽으면 좋은 글
> Audit Trail Purge 2편 (자동 Purge)
> Audit Trail Purge 1편 (수동 Purge)
> Audit Trail 관리 2편(OS Audit Trail 관리)
> Audit Trail 관리 1편(DB Audit Trail 관리)
> Oracle Fine Grained Auditing 2편 (DBMS_FGA 패키지 활용법)
1 thought on “Audit Trail Purge 3편 (기타 Purge 작업)”
Comments are closed.