오라클에서 필요에 의해서 인덱스를 만들어 놓고 이후에 이 인덱스를 사용하는지 안하는지 알 수가 없어서 필요없는 인덱스에 의해서 사용되어지는 디스크 공간을 회수 하지 못하고 있는 경우가 많이 있다.
이 경우 인덱스 사용여부를 확인해서 사용하지 않는 인덱스의 경우 drop 하여 불필요한 디스크 공간을 줄여주는게 좋다.
Oracle 9i 부터 제공되는 Monitoring 기능에 대해서 간단하게 설명하고자 한다.
모니터링 하고자 하는 인덱스가 test_pk 라면
모니터링을 시작하기 위해서는
1 |
alter index test_pk monitoring usage; |
모니터링을 중단하기 위해서는
1 |
alter index test_pk nomonitoring usage; |
그리고 모니터링 결과를 확인하기 위해서는 아내롸 같이 확인
1 |
select * from v$object_usage; |
하지만 v$object_usage 로 데이터가 없을 경우 sys.object_usage 를 조회하면 된다.
1 2 3 4 5 6 7 8 9 |
SELECT o.owner, o.object_name, o.object_type, Decode(Bitand(u.flags, 1), 0, 'NO', 'YES'), u.start_monitoring, u.end_monitoring FROM sys.object_usage u, all_objects o WHERE o.obj = o.object_id; |
여기서 decode(bitand(u.flags, 1), 0, ‘NO’, ‘YES’) 부분이 YES 이면 인덱스가 사용되는것이고 NO 상태로 계속 유지된다면 사용하지 않는 인덱스라고 보면 된다.
그리고 인덱스 모니터링 기간은 테이블에 따라서 조금 다르겠지만 일주일 정도 두고 보는게 좋다.