Almost-Native

오라클 최근 테이블 사용내역(접근내역) 확인 - DBA_TAB_MODIFICATIONS 본문

Java 프로그램 개발, IT

오라클 최근 테이블 사용내역(접근내역) 확인 - DBA_TAB_MODIFICATIONS

2021. 2. 5. 13:51

Oracle DB에서 특정 테이블/파티션의 최근 사용내역을 확인할 필요가 있는 경우가 있습니다.

최근에 테이블 Insert, Update, Delete 한 적이 있는지, Truncate, Drop 한 적이 있는지를 확인할 수 있는 딕셔너리뷰가 오라클 DB에서 제공됩니다.

 

dba_tab_modifications
all_tab_modifications
user_tab_modifications

 

이게 원래는 "alter table 테이블명 monitoring;" 커맨드를 실행했을때 정보가 쌓였던 것이었는데,

11g 부터 변경되어 굳이 alter table ~ monitoring 커맨드를 실행하지 않아도 자동으로 정보가 기록됩니다.

 

insert, update, delete 된 레코드 건수까지 나오고, 이벤트가 발생한 시간까지 나옵니다.

 

Historical 하게 데이터가 나오는 것은 아니고, insert, update, delete 의 경우는 누적 건수값이 나옵니다.

그전에 10건 삭제하고, 다시 5건 삭제하게 되면, 최종적으로 deletes 항목에 15 라고 나옵니다.

 

그리고, commit 이 안되었어도 값이 반영됩니다.

update 나 delete 커맨드를 수행했지만, 나중에 rollback 한 경우에도 그냥 update, delete 한 것으로 누적기록됩니다.

 

sys 유저에서 전체 조회시에는 dba_ 테이블에서 조회하고, 특정 유저에서 자기꺼만 조회할 때는 user_tab_modifications 에서 조회하면 되겠습니다.

 

1
2
3
4
5
6
 
select * 
from dba_tab_modifications 
where table_owner not in ('SYS''SYSTEM')                   
order by 1,2,3;
 

 

아쉽게도 select 에 대한 정보는 없습니다.

select 에 대한 정보는 Oracle 12c 신기능인 Heatmap 기능으로 가능합니다.

 

Comments