Oracle 딕셔너리중에 특정 테이블에 DML이 얼마나 빈번하게 이루어지고 있는지를 가늠할 수 있는 딕셔너리 뷰가 있습니다. 바로 DBA_TAB_MODIFICATIONS 입니다.
USER_TAB_MODIFICATIONS Information regarding modifications to tables
ALL_TAB_MODIFICATIONS Information regarding modifications to tables
DBA_TAB_MODIFICATIONS Information regarding modifications to tables
SQL> desc DBA_TAB_MODIFICATIONS Name Null? Type ----------------------------------------------------- -------- ------------------------------------ TABLE_OWNER VARCHAR2(128) TABLE_NAME VARCHAR2(128) PARTITION_NAME VARCHAR2(128) SUBPARTITION_NAME VARCHAR2(128) INSERTS NUMBER UPDATES NUMBER DELETES NUMBER TIMESTAMP DATE TRUNCATED VARCHAR2(3) DROP_SEGMENTS NUMBER
이 딕셔너리를 보면, Insert, Update, Delete 가 얼마나 발생했는지를 가늠해 볼 수 있습니다.
단, 주의할 점은, 이게 원래 감사(Audit) 기능 차원에서 만들어진 게 아니라는 점입니다.
그래서 데이터가 완전히 정확하지는 않습니다.
이건 통계정보가 최종적으로 갱신된 후에 그동안 얼마나 변화가 있었는지를 Optimizer가 가늠하기 위해 존재하는 뷰입니다. Optimizer를 위한 뷰인 것이지, 사용자가 감사 목적으로 사용하라고 있는게 아닙니다.
그래서 DML 후에 Rollback 을 하는 경우에도 카운트됩니다.
그리고, 해당 테이블에 통계정보를 다시 만드는 순간 데이터는 모든 초기화됩니다.
사용자가 DML 을 수행할 때마다 매번 여기에 기록되지도 않습니다. 성능상의 이유로 3시간에 한번씩만 기록되도록 설계되어 있습니다.
이걸 수동으로 기록되도록 커맨드를 실행할 수도 있습니다.
SQL> execute DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
PL/SQL procedure successfully completed.
위 처럼, Flush~ 커맨드를 사용하면 즉시 딕셔너리에 반영됩니다.
'IT관련' 카테고리의 다른 글
오라클 에러 정보 (ORA-01110) - 데이타파일 관련된 에러시 부가정보를 제공하는 (0) | 2020.10.05 |
---|---|
(12cR1 신기능) 오라클 Lateral Inline View, 인라인뷰에서 조인시 ORA-00904 에러 방지 (0) | 2020.10.05 |
자바 에러 - Unsupported major.minor version (oracle/jdbc/driver:OracleDriver.class) (0) | 2020.07.25 |
오라클 멀티테넌트 DB 접속 방법 (Connect Multi-Tenant by SQLPlus) (0) | 2020.07.02 |
Top SQL 조회, SQL Plan 확인 프로그램 다운로드 - Oracle 무료 DB관리툴 (0) | 2020.07.01 |