본문 바로가기
정보관리(데이터베이스, DB)/오라클

오라클 DB 모든 테이블의 생성일, 레코드수, 최근 접근내역 등을 확인

by 3604 2025. 8. 20.
728x90

DB현황 분석의 기초가 될 수 있는 자료가 필요해 오라클 DB에서 사용할 수 있는 쿼리문을 작성해 보았다.




이 자료로 최근에 사용되지 않는 table을 예측해 볼 수 있고,

데이터가 많은 table, DML 상황을 확인해 볼 수 있을 것이다

/* 
   오라클 DB
   모든 테이블의 생성일, 레코드수, 최근 접근내역 등을 확인할 수 있는 쿼리문
*/
WITH O AS (SELECT owner, object_name, created, last_ddl_time
             FROM ALL_OBJECTS WHERE object_type = 'TABLE'
          ),
     T AS ( /* ANALYZE 수행후 생성되는 컬럼 데이터 */
         SELECT owner, table_name, num_rows, avg_row_len, last_analyzed
             FROM ALL_TABLES
          ),
     M AS ( /* 최근 테이블 사용내역, 접근내역 확인 */
           SELECT table_owner, table_name, inserts, updates, deletes, truncated, timestamp 
             FROM ALL_TAB_MODIFICATIONS
          )
SELECT O.owner, O.object_name
     , O.created            -- 생성일
     , O.last_ddl_time      -- 마지막 DDL 변경일시
     , T.num_rows           -- 레코드 수
     , T.avg_row_len        -- 평균 레코드 길이
     , T.last_analyzed      -- 마지막 분석(Analyze) 일시
     , M.inserts            -- 입력수
     , M.updates            -- 수정수
     , M.deletes            -- 삭제수
     , M.truncated          -- TRUNCATE수
     , M.timestamp          -- 마지막 DML 일시
FROM O LEFT JOIN T ON (O.owner = T.owner AND O.object_name = T.table_name) 
       LEFT JOIN M ON (O.owner = M.table_owner AND O.object_name = M.table_name)
ORDER BY owner, object_name ;

728x90