테이블스페이스 정보를 확인하기 위한 각 모니터링 요소에 대응하는 쿼리는 아래와 같다.
알티베이스 5.5.1 이상 버전에서 사용할 수 있다.
휘발성(VOLATILE) 테이블스페이스 사용량도 볼 수 있게 되었다. 알티베이스 5.5.1부터 휘발성 메모리 테이블스페이스의 정보를 저장하는 V$VOL_TABLESPACES가 추가되었다.
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((TOTAL/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT ID TBS_ID , DECODE(TYPE, 0, 'MEM_SYS_DIC', 1, 'MEM_SYS_DATA', 2, 'MEM_USER_DATA', 8, 'VOL_USER_DATA') TBS_TYPE , NAME TBS_NAME , DECODE(M.MAXSIZE, 140737488322560, D.MEM_MAX_DB_SIZE , 0 , T.TOTAL_PAGE_COUNT * T.PAGE_SIZE, M.MAXSIZE) MAX , M.ALLOC_PAGE_COUNT * T.PAGE_SIZE TOTAL , NVL(M.ALLOC_PAGE_COUNT-M.FREE_PAGE_COUNT, T.TOTAL_PAGE_COUNT)*PAGE_SIZE ALLOC , NVL(MT.USED, 0) USED , DECODE(T.STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARDED') STATE , DECODE(M.AUTOEXTEND_MODE, 1, 'ON', 'OFF') 'AUTOEXTEND' FROM V$DATABASE D , V$TABLESPACES T , (SELECT SPACE_ID , SPACE_NAME , ALLOC_PAGE_COUNT , FREE_PAGE_COUNT , DECODE(MAX_SIZE, 0, (SELECT VALUE1 FROM V$PROPERTY WHERE NAME = 'VOLATILE_MAX_DB_SIZE'), MAX_SIZE) AS MAXSIZE , AUTOEXTEND_MODE FROM V$VOL_TABLESPACES UNION ALL SELECT SPACE_ID , SPACE_NAME , ALLOC_PAGE_COUNT , FREE_PAGE_COUNT , MAXSIZE , AUTOEXTEND_MODE FROM V$MEM_TABLESPACES ) M LEFT OUTER JOIN (SELECT TABLESPACE_ID, SUM((FIXED_USED_MEM + VAR_USED_MEM)) USED FROM V$MEMTBL_INFO GROUP BY TABLESPACE_ID ) MT ON M.SPACE_ID = MT.TABLESPACE_ID WHERE T.ID = M.SPACE_ID) ; |
알티베이스 5.3.3 용 쿼리이다. 휘발성 메모리 테이블스페이스 정보는 나오지 않는다.
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((TOTAL/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT ID TBS_ID , DECODE(TYPE, 0, 'MEM_SYS_DIC', 1, 'MEM_SYS_DATA', 2, 'MEM_USER_DATA', 8, 'VOL_USER_DATA') TBS_TYPE , NAME TBS_NAME , DECODE(MAXSIZE, 140737488322560, D.MEM_MAX_DB_SIZE, 0, ALLOCATED_PAGE_COUNT*PAGE_SIZE, MAXSIZE) MAX , ALLOCATED_PAGE_COUNT * PAGE_SIZE TOTAL , NVL(M.ALLOC_PAGE_COUNT-M.FREE_PAGE_COUNT, TOTAL_PAGE_COUNT)*PAGE_SIZE ALLOC , MT.USED USED , DECODE(STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARDED') STATE , DECODE(AUTOEXTEND_MODE, 1, 'ON', 'OFF') 'AUTOEXTEND' FROM V$DATABASE D , V$TABLESPACES T , V$MEM_TABLESPACES M , (SELECT TABLESPACE_ID , SUM((FIXED_USED_MEM + VAR_USED_MEM)) USED FROM V$MEMTBL_INFO GROUP BY TABLESPACE_ID) MT WHERE T.ID = M.SPACE_ID AND ID = MT.TABLESPACE_ID ) ; |
알티베이스 4.3.9 용 쿼리이다.
알티베이스 4 버전에서는 사용자가 메모리 테이블스페이를 생성할 수 있는 기능을 제공하지 않았기 때문에 'SYS_TBS_MEMORY'라는 하나의 테이블스페이스만 나온다.
SELECT TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((TOTAL/1024), 0))*100, '999.99') 'USAGE(%)' FROM (SELECT 'SYS_TBS_MEMORY' TBS_NAME , MEM_MAX_DB_SIZE MAX , MEM_ALLOC_PAGE_COUNT * 32 TOTAL , (MEM_ALLOC_PAGE_COUNT - MEM_FREE_PAGE_COUNT) * 32 ALLOC , MTBL.USED USED FROM V$DATABASE DB , (SELECT SUM(FIXED_USED_MEM+VAR_USED_MEM) AS USED FROM V$MEMTBL_INFO ) MTBL ) ; |
주요 컬럼 설명
TBS_ID | 테이블스페이스 고유 번호이다. |
TBS_TYPE | 메모리 테이블스페이스 유형. 0 - 시스템 메모리 테이블스페이스로 데이터베이스 시스템의 운영상 필요한 메타 데이터를 저장하기 위한 테이블스페이스이다. 1 - 시스템 메모리 테이블스페이스로 데이터베이스 생성 시 기본으로 생성되는 데이터를 저장하기 위한 테이블스페이스. 2 - 사용자가 생성한 메모리 테이블스페이스이다. 8 - 사용자가 생성한 휘발성 메모리 테이블스페이스이다. |
MAX(M) | 메모리 테이블스페이스에서 사용할 수 있는 최대 메모리 크기이다.테이블스페이스 생성 시 MAXSIZE 를 지정하지 않는 경우에 ''UNDEFINED' 를 출력한다. 테이블스페이스 속성이 AUTOEXTEND OFF인 경우 TOTAL(M)을 출력한다. |
TOTAL(M) | 메모리 테이블스페이스가 현재까지 할당받은 페이지의 합계이다. 즉, 현재까지 할당된 '사용 중인 페이지'와 '빈 페이지'의 합계로 데이터 파일(메모리 체크포인트 이미지 파일) 크기와 같다. 알티베이스 서버를 구동하면 메모리에는 '사용 중인 페이지'만 적재된다. 따라서 이 값만큼 물리 메모리를 사용하고 있다고 판단하기는 어렵다. |
ALLOC(M) | 메모리 테이블스페이스가 현재까지 할당받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'만의 합계이다. 예를 들어, 100M 크기의 메모리 테이블에 DROP 또는 TRUNCATE를 수행하면 전체 페이지 합계는 변함없으나 페이지 반납을 통해 '사용 중인 페이지'가 '빈 페이지'가 되므로 이 값이 0에 가깝게 된다. |
USED(M) | 메모리 테이블스페이스의 '사용 중인 페이지' 중에서 '실제로 데이터가 적재된 페이지'의 합계이다. 예를 들어, ALLOC이 100M 크기인 메모리 테이블에 전체 DELELE를 수행하면 ALLOC은 100M로 변함없으나 USED는 0에 가깝게 된다. |
USAGE(%) | 메모리 테이블스페이스가 '현재까지 할당받은 페이지' 대비 '사용 중인 페이지'에 대한 백분율. (즉, USED/TOTAL) |
STATE | 테이블스페이스의 상태. 1 - 오프라인, 2 - 온라인, 3 - 백업 중인 오프라인 상태의 테이블스페이스, 4 - 백업 중인 온라인 상태의 테이블스페이스, 128 - 삭제된(dropped) 테이블스페이스 |
AUTOEXTEND | 메모리 테이블스페이스의 자동 확장 여부. / ON(1), OFF(2) |
알티베이스 4 이상 버전에서 사용할 수 있다.
SELECT MEM_MAX_DB_SIZE/1024/1024 'MAX(M)' , ROUND(MEM_ALLOC_PAGE_COUNT*32/1024, 2) 'TOTAL(M)' , TRUNC((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32/1024, 2) 'ALLOC(M)' , (SELECT ROUND(SUM((FIXED_USED_MEM + VAR_USED_MEM))/(1024*1024), 3) FROM V$MEMTBL_INFO) 'USED(M)' , TRUNC(((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32*1024)/MEM_MAX_DB_SIZE, 4)*100 'USAGE(%)' FROM V$DATABASE ; |
주요 컬럼 설명
MAX(M) | 전체 메모리 테이블스페이스가 최대로 할당 가능한 페이지의 합계로 알티베이스 서버 프로퍼티 MEM_MAX_DB_SIZE에 의해 정의된다. |
TOTAL(M) | 전체 메모리 테이블스페이스가 현재까지 할당 받은 페이지의 합계이다. |
ALLOC(M) | 전체 메모리 테이블스페이스가 현재까지 할당 받은 페이지중 '빈 페이지'를 제외한 '사용중인 페이지'만의 합계이다. |
USED(M) | 전체 메모리 테이블스페이스의 '사용중인 페이지'중에서 '실제로 데이터가 적재된 페이지'의 합계이다. |
USAGE(%) | 전체 메모리 테이블스페이스가 '최대로 할당 가능한 페이지' 대비 '사용중인 페이지'에 대한 백분율. (즉, ALLOC/MAX) |
알티베이스 5.5.1 이상 버전에서 사용할 수 있다. 다른 버전과 달리 언두 테이블스페이스의 사용량도 확인할 수 있다.
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((MAX/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT T.ID TBS_ID , DECODE(TYPE, 3, 'DISK_SYS_DATA', 4, 'DISK_USER_DATA', 5, 'DISK_SYS_TEMP', 6, 'DISK_USER_TEMP', 7, 'DISK_SYS_UNDO') TBS_TYPE , NAME TBS_NAME , D.MAX * PAGE_SIZE MAX , TOTAL_PAGE_COUNT * PAGE_SIZE TOTAL , DECODE(TYPE, 7, U.TOTAL_EXT_CNT * PROP.EXTENT_SIZE, ALLOCATED_PAGE_COUNT * PAGE_SIZE) ALLOC , DECODE(TYPE, 3, NVL(DS.USED, 0) , 4, NVL(DS.USED, 0) , 7, (U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE , ALLOCATED_PAGE_COUNT * PAGE_SIZE ) USED , 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 , 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 ) ; |
알티베이스 5.3.3, 5.3.5
이 버전에서는 언두 테이블스페이스와 임시 테이블스페이스의 실 사용량(USED)을 구할 수 없다.
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((MAX/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT T.ID TBS_ID , DECODE(TYPE, 3, 'DISK_SYS_DATA', 4, 'DISK_USER_DATA', 5, 'DISK_SYS_TEMP', 6, 'DISK_USER_TEMP', 7, 'DISK_SYS_UNDO') TBS_TYPE , NAME TBS_NAME , D.MAX * PAGE_SIZE MAX , TOTAL_PAGE_COUNT*PAGE_SIZE TOTAL , DECODE(TYPE, 7, (SELECT (SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT)*PAGE_SIZE) FROM V$UDSEGS) + (SELECT (SUM(TOTAL_EXTENT_COUNT*PAGE_COUNT_IN_EXTENT)*PAGE_SIZE) FROM V$TSSEGS) , /* UNDO */ ALLOCATED_PAGE_COUNT*PAGE_SIZE) ALLOC , DECODE(TYPE, 3, NVL(DS.USED, 0), 4, NVL(DS.USED, 0) /* SYS_TEMP */ , ALLOCATED_PAGE_COUNT*PAGE_SIZE) USED , 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) ; |
알티베이스 5.1.5
알티베이스 5 에서 디스크 테이블의 구조 변경으로 디스크 테이블스페이스의 실 사용량(USED)을 구할 수 없고 할당 크기(ALLOC)만을 알 수 있다.
이 버전에서는 언두 테이블스페이스와 임시 테이블스페이스의 실 사용량을 구할 수 없다.
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR((ROUND((ALLOC/1024/1024), 0)/ROUND((MAX/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT T.ID TBS_ID , DECODE(TYPE, 3, 'DISK_SYS_DATA', 4, 'DISK_USER_DATA', 5, 'DISK_SYS_TEMP', 6, 'DISK_USER_TEMP', 7, 'DISK_SYS_UNDO') TBS_TYPE , NAME TBS_NAME , D.MAX * PAGE_SIZE MAX , TOTAL_PAGE_COUNT * PAGE_SIZE TOTAL , DECODE(TYPE, 7, (SELECT (SUM(total_page_count) * PAGE_SIZE) FROM V$undo_seg)+ (SELECT (SUM(ALLOC_PAGE_COUNT) * PAGE_SIZE) FROM v$tss_seg)) , ALLOCATED_PAGE_COUNT * PAGE_SIZE ALLOC , 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 WHERE T.ID = D.SPACEID) ; |
알티베이스 4
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((MAX/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT TBS.ID TBS_ID , DECODE(TYPE, 1, 'DISK_SYS_DATA', 2, 'DISK_USER_DATA', 3, 'DISK_SYS_TEMP', 4, 'DISK_USER_TEMP', 5, 'DISK_SYS_UNDO') TBS_TYPE , TBS.NAME TBS_NAME , DAT.MAX * TBS.PAGE_SIZE MAX , TBS.TOTAL_PAGE_COUNT * TBS.PAGE_SIZE TOTAL , DECODE(TBS.TYPE, 5, UNDO.ALLOC * TBS.PAGE_SIZE /* UNDO TABLESPACE*/ , TBS.ALLOCATED_PAGE_COUNT * TBS.PAGE_SIZE) ALLOC , DECODE(TBS.TYPE, 3, TBS.ALLOCATED_PAGE_COUNT * TBS.PAGE_SIZE /* TEMP TABLESPACE */ , 5, UNDO.USED * TBS.PAGE_SIZE /* UNDO TABLESPACE*/ , DECODE(SEG.USED, '', 0, (SEG.USED * TBS.PAGE_SIZE * TBS.A_EXTENT_PAGE_COUNT))) /* USER TABLESPACE & SYS_TBS_DATA */USED , DECODE(TBS.STATE, 1, 'ONLINE', 2, 'BEGIN BACKUP', 3, 'END BACKUP', 'NOT DEFINED') STATE , DAT.AUTOEXTEND FROM V$TABLESPACES TBS LEFT OUTER JOIN (SELECT SPACE_ID , SUM(EXTENT_TOTAL_COUNT) ALLOC , SUM(EXTENT_FULL_COUNT ) USED FROM X$SEGMENT GROUP BY SPACE_ID ) SEG ON TBS.ID = SEG.SPACE_ID ,(SELECT SPACEID , SUM(DECODE(MAXSIZE, 0, CURRSIZE, MAXSIZE)) AS MAX , DECODE(MAX(AUTOEXTEND), 1, 'ON', 'OFF') 'AUTOEXTEND' FROM V$DATAFILES GROUP BY SPACEID ) DAT , (SELECT SUM(ALLOCATED_PAGE_COUNT) ALLOC , SUM(USED_PAGE_COUNT) USED FROM V$UNDO_TBS ) UNDO WHERE TBS.ID = DAT.SPACEID ); |
주요 컬럼 설명
MAX(M) | 디스크 테이블스페이스가 최대로 할당 가능한 페이지의 합계로 페이지는 '사용 중인 페이지'와 '빈 페이지'로 구분된다. |
TOTAL(M) | 디스크 테이블스페이스가 현재까지 할당받은 페이지의 합계. 즉, 현재까지 할당된 '사용 중인 페이지'와 '빈 페이지'의 합계로 데이터 파일 크기와 대응한다. |
ALLOC(M) | 디스크 테이블스페이스가 현재까지 할당받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'만의 합계이다. 예를 들어, 100M 크기의 디스크 테이블에 DROP 또는 TRUNCATE를 수행하면 전체 페이지 합계는 변함없으나 페이지 반납을 통해 '사용 중인 페이지'가 '빈 페이지'가 되므로 이 값이 0에 가깝게 된다. |
USED(M) | 디스크 테이블스페이스의 '사용 중인 페이지'중에서 '실제 데이터가 적재된 페이지'의 합계이다. |
USAGE(%) | 디스크 테이블스페이스가 '최대로 할당 가능한 페이지' 대비 '실제 데이터가 적재된 페이지'에 대한 백분율이다.(즉,USED/MAX) |
아래 쿼리는 알티베이스 5.5.1 부터 사용할 수 있다.
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)' , ROUND((((U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE)/(D.MAX*PAGE_SIZE))*100, 2) 'USAGE(%)' , 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 ; |
주요 컬럼 설명
MAX(M) | 언두 테이블스페이스에서 사용할 수 있는 최대 크기 |
TOTAL(M) | 언두 테이블스페이스로 할당 받은 전체 크기 |
ALLOC(M) | 현재까지 할당 받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'만의 합계 |
USED(M) | 언두 테이블스페이스의 사용량. 변경 트랜잭션에 의해 사용 중이거나 재사용 할 수 없는 EXTENT 크기 |
USAGE(%) | 사용률(MAX 대비 USED) |
STATE | 테이블스페이스 상태 |
아래 쿼리는 알티베이스 5.5.1 부터 사용할 수 있다.
SELECT DECODE(TX.SESSION_ID, -1, 'REP('||REP.REP_NAME||')', TX.SESSION_ID) SESSION_ID , TX.ID TX_ID , DECODE(TX.STATUS, 0, 'BEGIN', 1, 'PRECOMMIT', 2, 'COMMIT_IN_MEMORY', 3, 'COMMIT', 4, 'ABORT', 5, 'BLOCKED', 6, 'END') TX_STATUS , RPAD(DECODE(ST.EXECUTE_FLAG, NULL, 'REP('||REP.REP_NAME||')', 1, 'SQL ING', 0, 'SQL END'), 10) SQL_STATUS , RPAD(DECODE(TX.LOG_TYPE, 1, 'REP '||REP.PEER_IP||':'||REP.PEER_PORT, S.COMM_NAME||' PID:'||S.CLIENT_PID), 40) CLIENT_IP , RPAD(DECODE(TX.LOG_TYPE, 1, 'REP('||REP.REP_NAME||')', S.CLIENT_APP_INFO), 15) CLIENT_APP_INFO , RPAD(DECODE(S.AUTOCOMMIT_FLAG, 1, 'ON', 0, 'OFF', NULL, 'REP('||REP.REP_NAME||')'), 10) AUTOCOMMIT , RPAD(DECODE(TX.LOG_TYPE, 1, 'REP('||REP.REP_NAME||')', S.UTRANS_TIME_LIMIT), 15) UTRANS_TIMEOUT , DECODE(ST.LAST_QUERY_START_TIME, NULL, TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + TX.FIRST_UPDATE_TIME / (60*60*24), 'YYYY-MM-DD HH:MI:SS'), TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + ST.LAST_QUERY_START_TIME / (60*60*24), 'YYYY-MM-DD HH:MI:SS')) LAST_QUERY_START_TIME , ((((TSS.TOTAL_EXTENT_COUNT+TSS.TOTAL_EXTDIR_COUNT)*TSS.PAGE_COUNT_IN_EXTENT)+((UDS.TOTAL_EXTENT_COUNT+UDS.TOTAL_EXTDIR_COUNT)*UDS.PAGE_COUNT_IN_EXTENT))*TBS.PAGE_SIZE) /1024/1024 UNDO_USAGE , DECODE(TX.LOG_TYPE, 1, 'REMOTE_TX_ID : '||REP_TX.REMOTE_TID, SUBSTR(ST.QUERY, 1, 30)) QUERY FROM V$TXSEGS TXS , V$TSSEGS TSS , V$UDSEGS UDS , V$TRANSACTION TX LEFT OUTER JOIN V$SESSION S ON TX.ID = S.TRANS_ID LEFT OUTER JOIN V$STATEMENT ST ON S.CURRENT_STMT_ID = ST.ID LEFT OUTER JOIN V$REPRECEIVER_TRANSTBL REP_TX ON TX.ID = REP_TX.LOCAL_TID LEFT OUTER JOIN V$REPRECEIVER REP ON REP_TX.REP_NAME = REP.REP_NAME , V$TABLESPACES TBS WHERE 1=1 AND UDS.SPACE_ID = 3 AND TXS.ID = UDS.TXSEG_ENTRY_ID AND TXS.ID = TSS.TXSEG_ENTRY_ID AND TXS.TRANS_ID = TX.ID AND TBS.ID = UDS.SPACE_ID ; |
주요 컬럼 설명
SESSION_ID | 트랜잭션을 수행한 세션 ID 또는 이중화 객체 이름 |
TX_ID | 트랜잭션 ID |
TX_STATUS | 트랜잭션 상태 |
SQL_STATUS | SQL문 상태 |
CLIENT_IP | 클라이언트 IP와 프로세스 ID |
AUTOCOMMIT | 세션의 AUTOCOMMIT 모드 |
UTRANS_TIMEOUT | 세션의 UTRANS_TIMEOUT 설정값 |
LAST_QUERY_START_TIME | SQL문 시작 시각 |
UNDO_USAGE | 트랜잭션의 언두 사용량(MB단위) |
QUERY | 언두를 사용하거나 접근한 트랜잭션에서 수행한 마지막 쿼리 |
아래는 알티베이스 5.5.1 이상 버전에서 사용할 수 있다.
SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((TOTAL/1024), 0)/ROUND((MAX/1024/1024), 0))*100, '999.99') 'USAGE(%)' , '' STATE , '' 'AUTOEXTEND' FROM (SELECT '' TBS_ID , 'ALL_MEM_TBS' TBS_TYPE , '-' TBS_NAME , MEM_MAX_DB_SIZE MAX , MEM_ALLOC_PAGE_COUNT*32 TOTAL , (MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32 ALLOC , (SELECT SUM(FIXED_USED_MEM + VAR_USED_MEM) FROM V$MEMTBL_INFO) USED FROM V$DATABASE ) UNION ALL SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((TOTAL/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT ID TBS_ID , DECODE(TYPE, 0, 'MEM_SYS_DIC', 1, 'MEM_SYS_DATA', 2, 'MEM_USER_DATA', 8, 'VOL_USER_DATA') TBS_TYPE , NAME TBS_NAME , DECODE(M.MAXSIZE, 140737488322560, D.MEM_MAX_DB_SIZE , 0 , T.TOTAL_PAGE_COUNT * T.PAGE_SIZE, M.MAXSIZE) MAX , M.ALLOC_PAGE_COUNT * T.PAGE_SIZE TOTAL , NVL(M.ALLOC_PAGE_COUNT-M.FREE_PAGE_COUNT, T.TOTAL_PAGE_COUNT)*PAGE_SIZE ALLOC , NVL(MT.USED, 0) USED , DECODE(T.STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARDED') STATE , DECODE(M.AUTOEXTEND_MODE, 1, 'ON', 'OFF') 'AUTOEXTEND' FROM V$DATABASE D , V$TABLESPACES T , (SELECT SPACE_ID , SPACE_NAME , ALLOC_PAGE_COUNT , FREE_PAGE_COUNT , DECODE(MAX_SIZE, 0, (SELECT VALUE1 FROM V$PROPERTY WHERE NAME = 'VOLATILE_MAX_DB_SIZE'), MAX_SIZE) AS MAXSIZE , AUTOEXTEND_MODE FROM V$VOL_TABLESPACES UNION ALL SELECT SPACE_ID , SPACE_NAME , ALLOC_PAGE_COUNT , FREE_PAGE_COUNT , MAXSIZE , AUTOEXTEND_MODE FROM V$MEM_TABLESPACES ) M LEFT OUTER JOIN (SELECT TABLESPACE_ID, SUM((FIXED_USED_MEM + VAR_USED_MEM)) USED FROM V$MEMTBL_INFO GROUP BY TABLESPACE_ID ) MT ON M.SPACE_ID = MT.TABLESPACE_ID WHERE T.ID = M.SPACE_ID) UNION ALL SELECT TBS_ID , TBS_TYPE , TBS_NAME , TO_CHAR(MAX/1024/1024, '999,999,999') 'MAX(M)' , TO_CHAR(TOTAL/1024/1024, '999,999,999') 'TOTAL(M)' , TO_CHAR(ALLOC/1024/1024, '999,999,999') 'ALLOC(M)' , TO_CHAR(USED/1024/1024, '999,999,999') 'USED(M)' , TO_CHAR((ROUND((USED/1024/1024), 0)/ROUND((MAX/1024/1024), 0))*100, '999.99') 'USAGE(%)' , STATE , AUTOEXTEND FROM (SELECT T.ID TBS_ID , DECODE(TYPE, 3, 'DISK_SYS_DATA', 4, 'DISK_USER_DATA', 5, 'DISK_SYS_TEMP', 6, 'DISK_USER_TEMP', 7, 'DISK_SYS_UNDO') TBS_TYPE , NAME TBS_NAME , D.MAX * PAGE_SIZE MAX , TOTAL_PAGE_COUNT * PAGE_SIZE TOTAL , DECODE(TYPE, 7, U.TOTAL_EXT_CNT * PROP.EXTENT_SIZE, ALLOCATED_PAGE_COUNT * PAGE_SIZE) ALLOC , DECODE(TYPE, 3, NVL(DS.USED, 0) , 4, NVL(DS.USED, 0) , 7, (U.TX_EXT_CNT+U.USED_EXT_CNT+U.UNSTEALABLE_EXT_CNT) * PROP.EXTENT_SIZE , ALLOCATED_PAGE_COUNT * PAGE_SIZE ) USED , 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 , 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 ) ; |
주요 컬럼 설명
MAX(M) | 언두 테이블스페이스에서 사용할 수 있는 최대 크기 |
TOTAL(M) | 테이블스페이스가 현재까지 할당받은 크기. 메모리 체크포인트 이미지 파일 및 디스크 데이터 크기와 동일하다. |
ALLOC(M) | 테이블스페이스가 현재까지 할당 받은 페이지 중 '빈 페이지'를 제외한 '사용 중인 페이지'의 크기 |
USED(M) | 테이블스페이스가 사용 중인 페이지에서 실제 데이터가 적재된 크기. |
USAGE(%) | 전체 메모리 테이블스페이스 : MAX 대비 TOTAL 사용률 메모리 테이블스페이스 : TOTAL 대비 USED 사용률 디스크 테이블스페이스 : MAX 대비 USED 사용률 |
아래 쿼리는 알티베이스 5 버전부터 사용할 수 있다.
SELECT M.SPACE_ID TBS_ID, SPACE_NAME TBS_NAME, CHECKPOINT_PATH FROM V$MEM_TABLESPACES M, V$MEM_TABLESPACE_CHECKPOINT_PATHS C WHERE M.SPACE_ID = C.SPACE_ID ; |
메모리 테이블스페이스의 stable한 데이터 파일을 보여준다. 아래 쿼리는 알티베이스 5 버전부터 사용할 수 있다.
SELECT MEM_DATA_FILE DATAFILE_NAME FROM V$STABLE_MEM_DATAFILES ; |
아래 쿼리는 알티베이스 5 버전부터 사용할 수 있다.
SELECT B.NAME TBS_NAME, A.ID 'FILE#', A.NAME DATAFILE_NAME, CURRSIZE*8/1024 'ALLOC(M)', ROUND(CASE2(A.MAXSIZE=0, CURRSIZE, A.MAXSIZE)*8/1024) 'MAX(M)', DECODE(AUTOEXTEND, 0, 'OFF', 'ON') 'AUTOEXTEND' FROM V$DATAFILES A, V$TABLESPACES B WHERE B.ID = A.SPACEID ORDER BY B.NAME, A.ID ; |
주요 컬럼 설명
FILE# | 데이터 파일의 번호. 하나의 디스크 테이블스페이스는 여러 개의 데이터 파일을 가질 수 있다. |
아래 쿼리는 알티베이스 5 버전부터 사용할 수 있다.
SELECT NAME TBS_NAME, A.PHYRDS PHY_READ, A.PHYWRTS PHY_WRITE, A.PHYRDS+A.PHYWRTS PHY_TOTAL, TRUNC(A.PHYRDS/READ_SUM*100,2) 'READ(%)', TRUNC(A.PHYWRTS/WRITE_SUM*100,2) 'WRITE(%)', TRUNC( (A.PHYRDS+A.PHYWRTS) / (READ_SUM+WRITE_SUM) * 100 , 2) 'TOTAL(%)', A.AVGIOTIM AVG_IO_TIME FROM V$FILESTAT A, V$DATAFILES B, (SELECT SUM(PHYRDS) READ_SUM, SUM(PHYWRTS) WRITE_SUM FROM V$FILESTAT ) C WHERE A.SPACEID = B.SPACEID AND A.FILEID = B.ID AND READ_SUM > 0 AND WRITE_SUM > 0 ORDER BY A.PHYRDS+A.PHYWRTS DESC, ROWNUM DESC ; |
주요 컬럼 설명
PHY_READ | 물리적 Read I/O 발생 회수 |
PHY_WRITE | 물리적 Write I/O 발생 회수. |
PHY_TOTAL | 물리적 I/O 발생 회수. |
READ(%) | 전체 물리적 Read I/O 대비 발생 비율. |
WRITE(%) | 전체 물리적 Write I/O 대비 발생 비율 |
TOTAL(%) | 전체 물리적 I/O 대비 발생 비율. |
AVG_IO_TIME | 평균 물리적 I/O 시간으로 단위는 밀리 초다. |
아래 쿼리는 알티베이스 5 버전부터 사용할 수 있다.
SELECT B.NAME TBS_NAME, A.SINGLEBLKRDS READ_CNT_PER_PAGE, A.SINGLEBLKRDTIM READ_TIME_PER_PAGE, TRUNC(A.SINGLEBLKRDTIM/A.SINGLEBLKRDS,2) AVERAGE_TIME FROM V$FILESTAT A, V$DATAFILES B WHERE A.SPACEID = B.SPACEID AND A.FILEID = B.ID AND A.SINGLEBLKRDS > 0 ORDER BY AVERAGE_TIME DESC ; |
주요 컬럼 설명
READ_CNT_PER_PAGE | 단일 페이지에 대한 Read 개수 |
READ_TIME_PER_PAGE | 단일 페이지에 대한 Read 시간으로 단위는 밀리 초이다. |
AVERAGE_TIME | 단일 페이지에 대한 평균 Read 시간으로 단위는 밀리 초이다. |
아래 쿼리는 알티베이스 6.3.1 부터 사용할 수 있다.
SELECT SUM(NORMAL_AREA_SIZE) SUM_NORMAL_AREA_SIZE FROM X$TEMPTABLE_STATS WHERE DROP_TIME = '19700101_090000' ; |
주요 컬럼 설명
NORMAL_AREA_SIZE | 사용한 Temp Tablespace 공간의 크기 |
아래 쿼리는 알티베이스 6.3.1 부터 사용할 수 있다.
SELECT NORMAL_AREA_SIZE FROM X$TEMPTABLE_STATS T, V$STATEMENT STMT WHERE T.TRANSACTION_ID = STMT.TX_ID ; |
아래 쿼리는 알티베이스 5.3.3 부터 사용할 수 있다.
SELECT NAME TBS_NAME, DECODE(STATE, 1, 'OFFLINE', 2, 'ONLINE', 5, 'OFFLINE BACKUP', 6, 'ONLINE BACKUP', 128, 'DROPPED', 'DISCARD') STATE FROM V$TABLESPACES ; |