OracleDB

[오라클 Admin] Oracle 테이블, 인덱스 사용량 분석 본문

Oracle/Oracle Admin

[오라클 Admin] Oracle 테이블, 인덱스 사용량 분석

마포김선생 2023. 12. 13. 13:58

오라클 오브젝트 사용량 분석

 

작업 환경:
OS: Oracle Linux 8.9
DB: Oracle 19c

 

Oracle 오브젝트 사용량 분석 방법 (DBA_HIST_SEG_STAT)

- 테이블, 인덱스 사용량(Logical read, DISK I/O, Buffer busy wait)을 확인할 때 많이 사용한다.

- (1+1, 콘서트) 트렌젹션이 몰리는 이벤트 진행할 때 특정 테이블, 인덱스 사용량이 급격하게 증가된다.

- 잽싸게 분석해서 담당 개발자와 분산 처리가 필요한 부분을 상의하자.

- DBA 관리 잘못이 아니어유~ 설계 문제...

 

 

Oracle 오브젝트 사용량 분석 SQL

- BEGIN_INTERVAL_TIME 컬럼을 이용해 분석 일자 범위를 지정해서 사용

- AND BEGIN_INTERVAL_TIME >= TO_DATE('2023/12/13', 'YYYY/MM/DD')

- AND BEGIN_INTERVAL_TIME <   TO_DATE('2023/12/14', 'YYYY/MM/DD')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
SELECT
    C.OWNER, 
    C.OBJECT_NAME, 
    C.OBJECT_TYPE,
    SUM(A.LOGICAL_READS_DELTA)      AS "LOGICAL_READS",
    SUM(A.BUFFER_BUSY_WAITS_DELTA)  AS "BUFFER_BUSY_WAITS",
    SUM(A.PHYSICAL_READS_DELTA)     AS "PHYSICAL_READS",
    SUM(A.PHYSICAL_WRITES_DELTA)    AS "PHYSICAL_WRITES"
FROM
    DBA_HIST_SEG_STAT A,
    DBA_HIST_SNAPSHOT B,
    DBA_OBJECTS       C
WHERE A.SNAP_ID = B.SNAP_ID
AND A.OBJ# = C.OBJECT_ID
AND BEGIN_INTERVAL_TIME >= TO_DATE('2023/12/13''YYYY/MM/DD')
AND BEGIN_INTERVAL_TIME <  TO_DATE('2023/12/14''YYYY/MM/DD')
GROUP BY C.OWNER, C.OBJECT_NAME, C.OBJECT_TYPE
HAVING SUM(A.LOGICAL_READS_DELTA) >= 100000
ORDER BY 4 DESC;
 
 
<SQL 실행 결과>
 
OWNER                OBJECT_NAME          OBJECT_TYPE          LOGICAL_READS BUFFER_BUSY_WAITS PHYSICAL_READS PHYSICAL_WRITES
-------------------- -------------------- -------------------- ------------- ----------------- -------------- ---------------
SYS                  COL$                 TABLE                      1979584                 0              0               0
SYS                  ICOL$                TABLE                       889408                 0              0               0
SYS                  IND$                 TABLE                       613536                 0              0               0
SYS                  I_IND1               INDEX                       438736                 0              0               0
SYS                  SEG$                 TABLE                       342880                59              0              79
SYS                  TAB$                 TABLE                       279056                 0              0               0
SYS                  OBJ$                 TABLE                       245664                 0              0              16
SYS                  I_HH_OBJ#_INTCOL#    INDEX                       126128                 0              0               0
cs