DB 관리 매일매일 체크해야 하는 몇 가지가 있는데, 기본 중에 기본이 용량 관리 아닌가 싶다.
테이블스페이스 사용량 확인하는 쿼리 확인해 보자.
1. 메모리 테이블스페이스 조회
SELECT
TO_CHAR(MEM_MAX_DB_SIZE/1024/1024, '999,999,999') ' MAX(M)',
TO_CHAR(MEM_ALLOC_PAGE_COUNT*32/1024, '999,999,999') ' TOTAL(M)',
TO_CHAR((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32/1024, '999,999,999') ' ALLOC(M)',
(SELECT TO_CHAR(SUM((FIXED_USED_MEM + VAR_USED_MEM))/1024/1024, '999,999,999')
FROM V$MEMTBL_INFO) ' USED(M)',
TO_CHAR((((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32*1024)/MEM_MAX_DB_SIZE)*100, '99.99') 'USAGE(%)'
FROM V$DATABASE ;
2. 디스크 테이블스페이스 조회
SELECT NAME TBS_NAME
, TO_CHAR(D.MAX * PAGE_SIZE / 1024 /1024, '999,999,999') 'MAX(M)'
, TO_CHAR(TOTAL_PAGE_COUNT*PAGE_SIZE/1024/1024, '999,999,999') 'TOTAL(M)'
, DECODE(TYPE, 7,
TO_CHAR((SELECT (SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT)*PAGE_SIZE)/1024/1024 FROM V$UDSEGS)+
(SELECT (SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT)*PAGE_SIZE)/1024/1024 FROM V$TSSEGS), '999,999,999') ,
TO_CHAR((ALLOCATED_PAGE_COUNT*PAGE_SIZE)/1024/1024, '999,999,999')) 'ALLOC(M)'
, DECODE(TYPE, 3, TO_CHAR(NVL(DS.USED, 0)/1024/1024, '999,999,999'),
4, TO_CHAR(NVL(DS.USED, 0)/1024/1024, '999,999,999') /* SYS_TEMP */ , LPAD('-', 12)) 'USED(M)'
, DECODE(TYPE, 7, TO_CHAR(((SELECT SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT) FROM V$UDSEGS)+
(SELECT SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT) FROM V$TSSEGS)) / D.MAX* 100, '99.99'),
3, TO_CHAR(NVL(DS.USED, 0)/(D.MAX*PAGE_SIZE)* 100, '99.99') ,
4, TO_CHAR(NVL(DS.USED, 0)/(D.MAX*PAGE_SIZE)* 100, '99.99') , /* TEMP */
TO_CHAR(ALLOCATED_PAGE_COUNT / D.MAX * 100, '99.99') ) 'USAGE(%)'
, DECODE(STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARDED') STATE
, D.AUTOEXTEND
FROM V$TABLESPACES T LEFT OUTER JOIN (SELECT SPACE_ID , SUM(TOTAL_USED_SIZE) USED
FROM X$SEGMENT
GROUP BY SPACE_ID ) DS ON DS.SPACE_ID = T.ID
,(SELECT SPACEID
, SUM(DECODE(MAXSIZE, 0, CURRSIZE, MAXSIZE)) AS MAX
, DECODE(MAX(AUTOEXTEND), 1, 'ON', 'OFF') 'AUTOEXTEND'
FROM V$DATAFILES
GROUP BY SPACEID ) D
WHERE T.ID = D.SPACEID
;
3. 언두테이블스페이스 사용량
SELECT T.NAME TBS_NAME
, ROUND(D.MAX * PAGE_SIZE / 1024 /1024, 2) 'MAX(M)' -- 언두 테이블스페이스의 최대 크기
, ROUND((TOTAL_PAGE_COUNT * PAGE_SIZE) / 1024 / 1024, 2) 'TOTAL(M)' -- 언두 테이블스페이스로 할당받은 전체 크기
, ROUND((U.TOTAL_EXT_CNT*PROP.EXTENT_SIZE)/1024/1024, 2) 'ALLOC(M)'
-- 현재까지 할당 받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'만의 합계
, ROUND(((U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE)/1024/1024, 2) 'USED(M)' -- 변경 트랜잭션에 의해 사용 중이거나 재사용할 수 없는 EXTENT의 크기
, ROUND((((U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE)/(D.MAX*PAGE_SIZE))*100, 2)
'USAGE(%)' -- 사용량(MAX 대비 USED)
, DECODE(STATE,1,'OFFLINE',2,'ONLINE',5,'OFFLINE BACKUP',6,'ONLINE BACKUP',128,'DROPPED', 'DISCARDED') STATE
-- 테이블스페이스 상태 , D.AUTOEXTEND
FROM V$TABLESPACES T ,
(SELECT SPACEID , SUM(DECODE(MAXSIZE, 0, CURRSIZE, MAXSIZE)) AS MAX,
DECODE(MAX(AUTOEXTEND),1,'ON','OFF') 'AUTOEXTEND' FROM V$DATAFILES
GROUP BY SPACEID) D ,
V$DISK_UNDO_USAGE U ,
(SELECT VALUE1 EXTENT_SIZE FROM V$PROPERTY WHERE NAME ='SYS_UNDO_TBS_EXTENT_SIZE') PROP
WHERE T.ID = D.SPACEID
AND T.ID = 3 ;
'DB 관리 TIP' 카테고리의 다른 글
[SPLEX]이중화 대상 테이블 추가 쉐어플렉스 (0) | 2021.06.17 |
---|---|
[ORACLE] dbms_xplan.display_cursor 실행계획 확인 (0) | 2021.06.14 |
[ORACLE] account unlock (0) | 2021.06.14 |
[DB2] 테이블 사이즈/통계실행 (0) | 2021.06.04 |
[DB2] 종료/시작 /session 확인 (0) | 2021.06.04 |