Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

[SS01] 전체 세션 개수
Anchor
SS01
SS01
[맨 위로]

  • Altibase에 접속되어 있는 세션 수를 보여준다. 

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT COUNT(*) TOTAL_SESSION_CNT FROM V$SESSION ;

[SS02] 세션 정보
Anchor
SS02
SS02
[맨 위로]

  • 세션의 클라이언트 정보 및 로그인 시각 등 세션 관련 정보를 볼 수 있다. 
  • 아래 쿼리는 Altibase v5 부터 사용할 수 있으나 CLIENT_APP_INFO 컬럼을 삭제하거나 주석 처리하면 Altibase v4에서도 사용할 수 있다.  

    Code Block
    titleAltibase v5 버전 이상
    themeDJango
    languagesql
    SELECT A.ID SESSION_ID
         , A.DB_USERNAME USER_NAME
         , REPLACE2(REPLACE2(A.COMM_NAME, 'SOCKET-', NULL), '-SERVER', NULL) CLIENT_IP
         , A.CLIENT_APP_INFO             -- Altibase v4 에서 사용 시 제거 
         , A.CLIENT_PID
         , A.SESSION_STATE
         , DECODE(A.AUTOCOMMIT_FLAG, 1, 'ON', 'OFF') AUTOCOMMIT
         , DECODE(A.LOGIN_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + A.LOGIN_TIME / (24*60*60), 'YY/MM/DD HH:MI:SS')) LOGIN_TIME
         , DECODE(A.IDLE_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + A.IDLE_START_TIME / (24*60*60), 'YY/MM/DD HH:MI:SS')) IDLE_TIME
         , NVL(LTRIM(B.QUERY), 'NONE') CURRENT_QUERY
      FROM V$SESSION A LEFT OUTER JOIN V$STATEMENT B ON A.CURRENT_STMT_ID = B.ID
    ;
  • 주요 컬럼 설명 

    Anchor
    ss02_col
    ss02_col

    CLIENT_IP세션과 관련된 클라이언트 응용프로그램의 ip 주소. 
    CLIENT_APP_INFO세션과 관련된 클라이언트 응용프로그램의 이름.Altibase v5 부터 추가된 컬럼
    CLIENT_PID세션과 관련된 클라이언트 응용프로그램의 프로세스 아이디로 클라이언트 응용프로그램이 실행되는 OS에서 관련 프로세스를 식별할 수 있다. 
    SESSION_STATE세션의 상태를 나타내는 문자열로 INIT, AUTH, SERVICE READY, SERVICE, END, ROLLBACK, UNKNOWN 7가지 상태가 있다. 
    IDLE_TIME세션이 아무것도 하지 않기 시작한 시간으로 idle_timeout 의 기준이 된다. 단위는 유닉스 시간(unix time)이다. 
    CURRENT_QUERY세션에서 가장 마지막으로 수행하였거나 현재 수행 중인 쿼리. 

...

[SS03] SYSDBA 권한으로 접속 중인 세션 정보
Anchor
SS03
SS03
[맨 위로]

  • SYSDBA 권한으로 접속한 세션의 정보를 볼 수 있다. 
  • 아래 쿼리는 Altibase v5 부터 사용할 수 있으나 CLIENT_APP_INFO 컬럼을 삭제하거나 주석 처리하면 Altibase v4에서도 사용할 수 있다.  

  • SELECT 절에 사용된 컬럼은 [SS02] 세션 정보와 같으니 해당 쿼리의 컬럼 설명을 참고한다.

    Code Block
    themeDJango
    languagesql
    SELECT A.ID SESSION_ID
         , A.DB_USERNAME USER_NAME
         , REPLACE2(REPLACE2(A.COMM_NAME, 'SOCKET-', NULL), '-SERVER', NULL) CLIENT_IP
         , A.CLIENT_APP_INFO              -- Altibaase v4 에서 사용 시 제거
         , A.CLIENT_PID
         , A.SESSION_STATE
         , DECODE(A.AUTOCOMMIT_FLAG, 1, 'ON', 'OFF') AUTOCOMMIT
         , DECODE(A.LOGIN_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + A.LOGIN_TIME / (24*60*60), 'MM/DD HH:MI:SS')) LOGIN_TIME
         , DECODE(A.IDLE_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') +A.IDLE_START_TIME / (24*60*60), 'MM/DD HH:MI:SS')) IDLE_TIME
         , NVL(LTRIM(B.QUERY), 'NONE') CURRENT_QUERY
      FROM V$SESSION A LEFT OUTER JOIN V$STATEMENT B ON A.CURRENT_STMT_ID = B.ID
     WHERE A.SYSDBA_FLAG = 1
    ;

...

  • TIMED_STATISTICS는 Altibase v5부터 지원하는 Altibase 프로퍼티이다. 
  • TIMED_STATISTICS를 활성화하면 활성화 이후에 수행된 쿼리들의 시간 정보를 알 수 있다.  

    Code Block
    themeDJango
    languagesql
     ALTERALTER SYSTEM SET TIMED_STATISTICS=1; 

[ST01] 전체 쿼리 개수
Anchor
ST01
ST01
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT COUNT(*) AS TOTAL_STMT_CNT FROM V$STATEMENT ;

[ST02] 쿼리 정보
Anchor
ST02
ST02
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT SESSION_ID
         , ID STMT_ID
         , TX_ID
         , ROUND((PARSE_TIME+VALIDATE_TIME+OPTIMIZE_TIME)/1000000, 1) PREPARE_TIME
         , ROUND(FETCH_TIME/1000000, 1) FETCH_TIME
         , ROUND(EXECUTE_TIME/1000000, 1) EXECUTE_TIME
         , ROUND(TOTAL_TIME/1000000, 1) TOTAL_TIME
         , EXECUTE_FLAG
         , DECODE(LAST_QUERY_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + LAST_QUERY_START_TIME / (24*60*60), 'MM/DD HH:MI:SS')) LAST_START_TIME
         , NVL(LTRIM(QUERY), 'NONE') QUERY
      FROM V$STATEMENT
     ORDER BY EXECUTE_TIME DESC
    ;

...


[ST03] 현재 수행 중인 쿼리 개수
Anchor
ST03
ST03
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT COUNT(*) AS ACTIVE_STMT_CNT
      FROM V$STATEMENT
     WHERE EXECUTE_FLAG = 1
    ;

[ST04] 현재 수행 중인 쿼리 정보
Anchor
ST04
ST04
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  
  • 컬럼 설명은 [ST02] 의 '주요 컬럼 설명' 부분을 참고하자. 

    Code Block
    themeDJango
    languagesql
    SELECT SESSION_ID
         , ID STMT_ID
         , TX_ID
         , ROUND((PARSE_TIME+VALIDATE_TIME+OPTIMIZE_TIME)/1000000, 1) PREPARE_TIME
         , ROUND(FETCH_TIME/1000000, 1) FETCH_TIME
         , ROUND(EXECUTE_TIME/1000000, 1) EXECUTE_TIME
         , ROUND(TOTAL_TIME/1000000, 1) TOTAL_TIME
         , DECODE(LAST_QUERY_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + LAST_QUERY_START_TIME / (24*60*60), 'MM/DD HH:MI:SS')) LAST_START_TIME
         , NVL(LTRIM(QUERY), 'NONE') QUERY
      FROM V$STATEMENT
     WHERE EXECUTE_FLAG = 1
     ORDER BY EXECUTE_TIME DESC
    ;

[ST05] 장시간으로 수행 쿼리 정보 
Anchor
ST05
ST05
[맨 위로]

  • 600초 이상 수행 중인 쿼리 정보를 보여준다.  
  • Altibase v4 이상 버전에서 사용할 수 있다.  
  • 컬럼 설명은 [ST02] 의 '주요 컬럼 설명' 부분을 참고하자. 

    Code Block
    themeDJango
    languagesql
    SELECT SESSION_ID
         , ID STMT_ID
         , TX_ID
         , ROUND((PARSE_TIME+VALIDATE_TIME+OPTIMIZE_TIME)/1000000, 1) PREPARE_TIME
         , ROUND(FETCH_TIME/1000000, 1) FETCH_TIME
         , ROUND(EXECUTE_TIME/1000000, 1) EXECUTE_TIME
         , ROUND(TOTAL_TIME/1000000, 1) TOTAL_TIME
         , DECODE(LAST_QUERY_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + LAST_QUERY_START_TIME / (24*60*60), 'MM/DD HH:MI:SS')) LAST_START_TIME
         , NVL(LTRIM(QUERY), 'NONE') QUERY
      FROM V$STATEMENT
     WHERE EXECUTE_FLAG = 1
       AND EXECUTE_TIME/1000000 > 600   -- 쿼리 수행 시간 조건을 변경하면 이 조건의 값을 변경하면 된다. 값은 초 단위이다.  
     ORDER BY EXECUTE_TIME DESC
    ;

[ST06] 장시간 수행되는 DML트랜잭션의 마지막 쿼리 정보 
Anchor
ST06
ST06
[맨 위로]

  • 3600초 이상, 장시간 수행 중인 트랜잭션의 마지막 쿼리 정보를 보여준다. 

  • Altibase v4 이상 버전에서 사용할 수 있다. 단 SELECT 절에서 SS.CLIENT_APP_INFO 컬럼은 주석 처리하거나 삭제해야 한다. SS.CLIENT_APP_INFO 는 Altibase v5 부터 제공하는 컬럼이다. 

    Code Block
    themeDJango
    languagesql
    SELECT ST.SESSION_ID
         , SS.COMM_NAME CLIENT_IP
         , SS.CLIENT_PID
         , SS.CLIENT_APP_INFO
         , (BASE_TIME - TR.FIRST_UPDATE_TIME) AS UTRANS_TIME
         , ROUND(EXECUTE_TIME/1000000, 1) EXECUTE_TIME
         , ROUND(TOTAL_TIME/1000000, 1) TOTAL_TIME
         , DECODE(LAST_QUERY_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + LAST_QUERY_START_TIME / (24*60*60), 'MM/DD HH:MI:SS')) LAST_START_TIME
         , NVL(LTRIM(ST.QUERY), 'NONE') QUERY
      FROM V$TRANSACTION TR
         , V$STATEMENT ST
         , V$SESSIONMGR
         , V$SESSION SS
     WHERE TR.ID = ST.TX_ID
       AND ST.SESSION_ID = SS.ID
       AND TR.FIRST_UPDATE_TIME != 0  -- 0:read only transaction
       AND (BASE_TIME - TR.FIRST_UPDATE_TIME) > 3600    -- 수행 시간 조건을 변경하고자 할 경우 이 조건의 값을 변경하면 된다. 값은 초 단위이다.
     ORDER BY UTRANS_TIME DESC
    ;
  • 주요 컬럼 설명

    다른 컬럼에 대한 설명은 [ST02] 의 '주요 컬럼 설명' 부분을 참고하자. 

    UTRANS_TIME

    트랜잭션이 최초에 변경연산을 시작한 시점을 기준으로 현재까지의 경과시간을 의미한다. UTRANS_TIME의 기준이 되며 단위는 초(sec)다.

    참고로 이 값을 계산하기 위한 v$sessionmgr의 base_time과 v$transaction의 first_update_time은 TIMED_STATISTICS 프로퍼티를 활성화(0)하지 않아도 갱신된다.

[ST07] 풀 스캔 쿼리 정보
Anchor
ST07
ST07
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  단, SELECT 절에서 SS.CLIENT_APP_INFO 컬럼은 주석처리하거나 삭제해야 한다. SS.CLIENT_APP_INFO 는 Altibase v5 버전부터 제공하는 컬럼이다. 

  • 컬럼에 대한 설명은 [ST02] 의 '주요 컬럼 설명' 부분을 참고하자. 

    Code Block
    themeDJango
    languagesql
    SELECT SESSION_ID
         , S.COMM_NAME CLIENT_IP
         , S.CLIENT_PID
         , S.CLIENT_APP_INFO
         , DECODE(LAST_QUERY_START_TIME, 0, '-', TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + LAST_QUERY_START_TIME / (24*60*60), 'MM/DD HH:MI:SS')) LAST_START_TIME
         , ROUND((PARSE_TIME+VALIDATE_TIME+OPTIMIZE_TIME)/1000000, 1) PREPARE_TIME
         , ROUND(FETCH_TIME/1000000, 1) FETCH_TIME
         , ROUND(EXECUTE_TIME/1000000, 1) EXECUTE_TIME
         , ROUND(TOTAL_TIME/1000000, 1) TOTAL_TIME
         , NVL(LTRIM(QUERY), 'NONE') QUERY
      FROM V$STATEMENT T
         , V$SESSION S
     WHERE S.ID = T.SESSION_ID
       AND (MEM_CURSOR_FULL_SCAN > 0 OR DISK_CURSOR_FULL_SCAN > 0)
       AND UPPER(QUERY) NOT LIKE '%INSERT%'
     ORDER BY EXECUTE_TIME DESC
    ;

[ST08] 풀 스캔 쿼리 수행 횟수 통계 
Anchor
ST08
ST08
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT COUNT(EXECUTE_SUCCESS) EXECUTE_CNT
         , SUBSTR(LTRIM(QUERY), 1, 40) QUERY
      FROM V$STATEMENT
     WHERE (MEM_CURSOR_FULL_SCAN > 0 OR DISK_CURSOR_FULL_SCAN > 0)
       AND UPPER(QUERY) NOT LIKE '%INSERT%'
     GROUP BY QUERY
     ORDER BY EXECUTE_CNT DESC
    ; 

...

[ST09] 세션 별 쿼리 목록
Anchor
ST09
ST09
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.   

    Code Block
    themeDJango
    languagesql
    SELECT SESSION_ID
         , ID STMT_ID
         , TX_ID
         , SUBSTR(QUERY, 1, 100) QUERY
      FROM V$STATEMENT
     ORDER BY 1, 2
    ;

[ST10] 세션 당 statement 생성 수 
Anchor
ST10
ST10
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있는 쿼리이다. 

    Code Block
    themeDJango
    languagesql
    SELECT SE.ID SESSION_ID
         , COUNT(DISTINCT ST.ID) CURR_STMT_CNT_PER_SESSION
      FROM V$SESSION SE
         , V$STATEMENT ST
     WHERE 1=1
       AND SE.ID=ST.SESSION_ID
     GROUP BY SE.ID
     ORDER BY SE.ID
    ;
  • 주요 컬럼 설명

    CURR_STMT_CNT_PER_SESSION

    해당 세션에서 관리하는 Statement 갯수

...

[SV01] 서비스 쓰레드 상태 
Anchor
SV01
SV01
   [맨 위로]

  • Altibase v5 이상

    Code Block
    themeDJango
    languagesql
    SELECT RUN_MODE
         , STATE
         , COUNT(*) CNT
      FROM V$SERVICE_THREAD
     GROUP BY RUN_MODE, STATE
    ;
  • Altibase v4

    Code Block
    themeDJango
    languagesql
    SELECT TYPE
         , STATE
         , COUNT(*) CNT
      FROM V$SERVICE_THREAD
     GROUP BY TYPE, STATE
    ;

...

[SV02] 서비스 쓰레드 경합 확인 
Anchor
SV01
SV01
   [맨 위로]

  • Altibase v4 이상에서 사용할 수 있는 쿼리이다.

    Code Block
    themeDJango
    languagesql
    SELECT NAME
         , MISS_COUNT
         , TRY_COUNT
         , ROUND(MISS_COUNT/TRY_COUNT*100, 2) PER
      FROM V$MUTEX
     WHERE NAME = 'MMT_SERVICE_THREAD_MUTEX'
     ORDER BY 4 DESC
    ;
  • 주요 컬럼 설명

    MISS_COUNT

    Statement를 처리하기 위해 서비스 쓰레드에 처리를 요청하였으나 Busy하여 실패한 횟수
    TRY_COUNTStatement를 처리하기 위해 서비스 쓰레드에 처리를 요청한 횟수
    PERmiss_count/try_count*100

...

[TL01] Transaction 및 Lock 정보 
Anchor
TL01
TL01
[맨 위로]

  • Altibase v5 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT TX.ID TX_ID
         , WAIT_FOR_TRANS_ID BLOCKED_TX_ID
         , DECODE(TX.STATUS, 
                     0, 'BEGIN', 
                     1, 'PRECOMMIT', 
                     2, 'COMMIT_IN_MEMORY', 
                     3, 'COMMIT', 
                     4, 'ABORT', 
                     5, 'BLOCKED', 
                     6, 'END') STATUS
         , DECODE(TX.LOG_TYPE, 0, U1.USER_NAME, 'REPLICATION') USER_NAME
         , DECODE(TX.LOG_TYPE, 0, TX.SESSION_ID, RT.REP_NAME) SESSION_ID
         , DECODE(TX.LOG_TYPE, 0, ST.COMM_NAME, RR.PEER_IP) CLIENT_IP
         , DECODE(ST.AUTOCOMMIT_FLAG, 1, 'ON', 'OFF') AUTOCOMMIT
         , L.LOCK_DESC
         , DECODE(TX.FIRST_UPDATE_TIME, 
                     0, '0', 
                     TO_CHAR(TO_DATE('1970010109', 'YYYYMMDDHH') + TX.FIRST_UPDATE_TIME / (60*60*24), 'MM/DD HH:MI:SS')) FIRST_UPDATE_TIME
         , U2.USER_NAME||'.'||T.TABLE_NAME TABLE_NAME
         , DECODE(TX.LOG_TYPE, 0, SUBSTR(ST.QUERY, 1, 10), 'REMOTE TX_ID '||REMOTE_TID) CURRENT_QUERY
         , DECODE(TX.DDL_FLAG, 0, 'NON-DDL', 'DDL') DDL
         , DECODE(TX.FIRST_UNDO_NEXT_LSN_FILENO, -1, '-', TX.FIRST_UNDO_NEXT_LSN_FILENO) 'LOGFILE#'
      FROM V$TRANSACTION TX
         , V$LOCK L 
           LEFT OUTER JOIN (SELECT ST.*, SS.AUTOCOMMIT_FLAG, SS.DB_USERID, SS.COMM_NAME
                              FROM V$STATEMENT ST, V$SESSION SS
                             WHERE SS.ID = ST.SESSION_ID
                               AND SS.CURRENT_STMT_ID = ST.ID) ST ON L.TRANS_ID = ST.TX_ID 
           LEFT OUTER JOIN V$REPRECEIVER_TRANSTBL RT ON L.TRANS_ID = RT.LOCAL_TID 
           LEFT OUTER JOIN V$REPRECEIVER RR ON RT.REP_NAME = RR.REP_NAME 
           LEFT OUTER JOIN V$LOCK_WAIT LW ON L.TRANS_ID = LW.TRANS_ID 
           LEFT OUTER JOIN SYSTEM_.SYS_USERS_ U1 ON ST.DB_USERID = U1.USER_ID
         , SYSTEM_.SYS_TABLES_ T 
           LEFT OUTER JOIN SYSTEM_.SYS_USERS_ U2 ON T.USER_ID = U2.USER_ID
     WHERE TX.ID = L.TRANS_ID
       AND T.TABLE_OID = L.TABLE_OID
       AND TX.STATUS != 6
    ORDER BY TX.ID, ST.ID, TX.FIRST_UPDATE_TIME DESC
    ; 

...

[LO01] 리두로그 파일 정보
Anchor
LO01
LO01
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT OLDEST_ACTIVE_LOGFILE OLDEST_LOGFILE
         , CURRENT_LOGFILE CURRENT_LOGFILE
         , CURRENT_LOGFILE-OLDEST_ACTIVE_LOGFILE LOGFILE_GAP
      FROM V$ARCHIVE
    ;

...

[LO02] 리두로그 파일 prepare 대기 누적횟수
Anchor
LO02
LO02
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
     SELECTSELECT LF_PREPARE_WAIT_COUNT FROM V$LFG ;

...

[GC01] 메모리 DB GC gap
Anchor
GC01
GC01
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT GC_NAME
         , SCNOFTAIL
         , MINMEMSCNINTXS
         , ADD_OID_CNT-GC_OID_CNT GC_GAP
      FROM V$MEMGC
    ;

...

[GC02] 메모리 DB GC가 대기하고 있는 트랜잭션에서 수행중인 쿼리
Anchor
GC02
GC02
[맨 위로]

GC가 대기하고 있는 트랜잭션이란 'Altibase에서 가장 오래된 old version'을 참조하는 트랜잭션을 의미한다.

...

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT SESSION_ID
         , TOTAL_TIME
         , EXECUTE_TIME
         , TX_ID
         , QUERY
      FROM V$STATEMENT
     WHERE TX_ID IN (SELECT ID
                       FROM V$TRANSACTION
                      WHERE MEMORY_VIEW_SCN = (SELECT MINMEMSCNINTXS FROM V$MEMGC LIMIT 1))
       AND EXECUTE_FLAG = 1
     ORDER BY 2 DESC
    ;
  • 아래 Altibase v5 이상 버전에서 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    SELECT ST.SESSION_ID
         , ST.TX_ID
         , TOTAL_TIME/1000000 'TOTAL(SEC)'
         , EXECUTE_TIME/1000000 'EXECUTE(SEC)'
         , FETCH_TIME/1000000 'FETCH(SEC)'
         , ST.QUERY
      FROM V$STATEMENT ST
         , V$TRANSACTION TX
     WHERE ST.TX_ID = TX.ID
       AND TX_ID IN (SELECT ID
                       FROM V$TRANSACTION
                          , (SELECT MINMEMSCNINTXS FROM V$MEMGC LIMIT 1) GC
                      WHERE MEMORY_VIEW_SCN = GC.MINMEMSCNINTXS
        OR MIN_MEMORY_LOB_VIEW_SCN = GC.MINMEMSCNINTXS)
       AND ST.SESSION_ID != SESSION_ID()
       AND TX.SESSION_ID <> SESSION_ID()
     ORDER BY 3 DESC
    ;

메모리(Memory) 
Anchor
MS
MS

...

OS에서 Altibase가 점유하는 메모리 사용률 관련 정보를 확인하기 위한 각 모니터링 요소에 대응하는 쿼리는 아래와 같다.

...

[MS01] Altibase의 메모리 사용 현황 
Anchor
MS01
MS01
[맨 위로]

  • Altibase를 구성하는 모듈별 메모리 사용 현황을 볼 수 있다.
  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT NAME
         , ROUND(ALLOC_SIZE/1024/1024) 'ALLOC(M)'
         , ROUND(MAX_TOTAL_SIZE/1024/1024) 'MAX_TOTAL(M)'
      FROM V$MEMSTAT
     ORDER BY 3 DESC
    ;

...

 [MS02] Altibase의 메모리 사용량 합계
Anchor
MS02
MS02
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    themeDJango
    languagesql
    SELECT ROUND(SUM(ALLOC_SIZE)/1024/1024) 'ALLOC(M)'
         , ROUND(SUM(MAX_TOTAL_SIZE)/1024/1024) 'MAX_TOTAL(M)'
      FROM V$MEMSTAT
    ;

...

[TS01] 메모리 테이블스페이스 사용량
Anchor
TS01
TS01
[맨 위로]

  • Altibase v5.5.1 이상 버전에서 사용할 수 있다. 

  • 휘발성(VOLATILE) 테이블스페이스 사용량도 볼 수 있게 되었다. Altibase v5.5.1부터 휘발성 메모리 테이블스페이스의 정보를 저장하는  V$VOL_TABLESPACES가 추가되었다.

    Code Block
    titleAltibase v5.5.1 이상
    themeDJango
    languagesql
    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)
    ;
  • Altibase v5.3.3 용 쿼리이다. 휘발성 메모리 테이블스페이스 정보는 나오지 않는다.  

    Code Block
    titleAltibase v5.3.3 용 쿼리
    themeDJango
    languagesql
    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 )
    ;
  • Altibase v4.3.9 용 쿼리이다.  
    Altibase v4 에서는 사용자가 메모리 테이블스페이를 생성할 수 있는 기능을 제공하지 않았기 때문에 'SYS_TBS_MEMORY'라는 하나의 테이블스페이스만 나온다. 

    Code Block
    titleAltibase v4 버전 용 쿼리
    themeDJango
    languagesql
    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 )
    ;

...

[TS02] 전체 메모리 테이블스페이스 사용량
Anchor
TS02
TS02
[맨 위로]

  • Altibase v4 이상 버전에서 사용할 수 있다. 

    Code Block
    themeDJango
    languagesql
    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)전체 메모리 테이블스페이스가 최대로 할당 가능한 페이지의 합계로 Altibase 프로퍼티 MEM_MAX_DB_SIZE에 의해 정의된다.
    TOTAL(M)전체 메모리 테이블스페이스가 현재까지 할당 받은 페이지의 합계이다.
    ALLOC(M)전체 메모리 테이블스페이스가 현재까지 할당 받은 페이지중 '빈 페이지'를 제외한 '사용중인 페이지'만의 합계이다.
    USED(M)전체 메모리 테이블스페이스의 '사용중인 페이지'중에서 '실제로 데이터가 적재된 페이지'의 합계이다.
    USAGE(%)전체 메모리 테이블스페이스가 '최대로 할당 가능한 페이지' 대비 '사용중인 페이지'에 대한 백분율. (즉, ALLOC/MAX)

[TS03] 디스크 테이블스페이스 사용량
Anchor
TS03
TS03
[맨 위로]

  • Altibase v5.5.1 이상 버전에서 사용할 수 있다. 다른 버전과 달리 언두 테이블스페이스의 사용량도 확인할 수 있다.

    Code Block
    titleAltibase v5.5.1 이상
    themeDJango
    languagesql
    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 )
    ;
  • Altibase v5.3.3, v5.3.5

  • Altibase v5 에서 디스크 테이블의 구조 변경으로 디스크 테이블스페이스의 실 사용량(USED)을 구할 수 없고 할당 크기(ALLOC)만을 알 수 있었으나 BUG-31372가 반영 후 실 사용량(USED)을 확인할 수 있게 되었다.
  • BUG-31372 가 반영된 버전은 아래와 같다.
    • Altibase v5.3.3.33
    • Altibase v5.3.5.15
    • Altibase v5.5.1.0.3
  • 이 버전에서는 언두 테이블스페이스와 임시 테이블스페이스의 실 사용량(USED)을 구할 수 없다.

    Code Block
    titleAltibase v5.3.3, v5.3.5 용 쿼리
    themeDJango
    languagesql
    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)
    ;

...

[TS04] 디스크 언두 테이블스페이스 사용량 
Anchor
TS04
TS04
[맨 위로]

  • 아래 쿼리는 Altibase v5.5.1 부터 사용할 수 있다. 

    Code Block
    themeDJango
    languagesql
    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
    ;

...

[TS05] 트랜잭션 별 언두 테이블스페이스 사용량 
Anchor
TS05
TS05
[맨 위로]

  • 아래 쿼리는 Altibase v5.5.1 부터 사용할 수 있다. 

    Code Block
    themeDJango
    languagesql
    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_STATUSSQL문 상태
    CLIENT_IP클라이언트 IP와 프로세스 ID
    AUTOCOMMIT세션의 AUTOCOMMIT 모드
    UTRANS_TIMEOUT세션의 UTRANS_TIMEOUT 설정값
    LAST_QUERY_START_TIMESQL문 시작 시각
    UNDO_USAGE트랜잭션의 언두 사용량(MB단위)
    QUERY언두를 사용하거나 접근한 트랜잭션에서 수행한 마지막 쿼리

...

[TS06] 전체 테이블스페이스 사용량 
Anchor
TS06
TS06
[맨 위로]

  • 아래는 Altibase v5.5.1 이상 버전에서 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    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 사용률

[TS07] 메모리 테이블스페이스 데이터 파일 체크포인트 경로 
Anchor
TS07
TS07
[맨 위로]

  • 아래 쿼리는 Altibase v5 버전부터 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    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
    ;

...

[TS08] 메모리 테이블스페이스 체크포인트 파일 
Anchor
TS08
TS08
[맨 위로]

  • 메모리 테이블스페이스의 stable한 체크포인트 파일을 보여준다. 아래 쿼리는 Altibase v5 버전부터 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    SELECT MEM_DATA_FILE DATAFILE_NAME
      FROM V$STABLE_MEM_DATAFILES
    ;

...

[TS09] 디스크 테이블스페이스 데이터 파일 
Anchor
TS09
TS09
[맨 위로]

  • 아래 쿼리는 Altibase v5 버전부터 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    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#데이터 파일의 번호. 하나의 디스크 테이블스페이스는 여러 개의 데이터 파일을 가질 수 있다.

...

[TS10] 디스크 테이블스페이스 데이터 파일 별 I/O 
Anchor
TS10
TS10
[맨 위로]

  • 아래 쿼리는 Altibase v5 버전부터 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    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
    ;

...

[TS11] 디스크 테이블스페이스 데이터 파일 별 단일 페이지 Read I/O 
Anchor
TS11
TS11
[맨 위로]

  • 아래 쿼리는 Altibase v5 버전부터 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    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
    ;

...

[TS12] 임시 테이블스페이스 사용량 
Anchor
TS12
TS12
[맨 위로]

  • 아래 쿼리는 Altibase v6.3.1 부터 사용할 수 있다. 

    Code Block
    themeDJango
    languagesql
    SELECT SUM(NORMAL_AREA_SIZE) SUM_NORMAL_AREA_SIZE
      FROM X$TEMPTABLE_STATS
     WHERE DROP_TIME = '19700101_090000'
    ;

...

[TS13] 트랜잭션 별 임시 테이블스페이스 사용량 
Anchor
TS13
TS13
[맨 위로]

  • 아래 쿼리는 Altibase v6.3.1 부터 사용할 수 있다. 

    Code Block
    themeDJango
    languagesql
    SELECT NORMAL_AREA_SIZE
      FROM X$TEMPTABLE_STATS T
         , V$STATEMENT STMT
     WHERE T.TRANSACTION_ID = STMT.TX_ID
    ;

[TS14] 전체 테이블스페이스 상태 
Anchor
TS14
TS14
[맨 위로]

  • 아래 쿼리는 Altibase v5.3.3 부터 사용할 수 있다. 

    Code Block
    themeDJango
    languagesql
    SELECT NAME TBS_NAME
         , DECODE(STATE, 1, 'OFFLINE', 
                         2, 'ONLINE', 
                         5, 'OFFLINE BACKUP', 
                         6, 'ONLINE BACKUP', 
                         128, 'DROPPED', 'DISCARD') STATE
      FROM V$TABLESPACES
    ;

...

[OB01] 메모리 테이블 사용량 
Anchor
OB01
OB01
[맨 위로]

  • 메모리 테이블의 사용량을 조회하는 쿼리이다. 아래 쿼리는 Altibase v4 이상 버전에서 사용할 수 있다.  

    Code Block
    titleAltibase v6.5.1 이상
    themeDJango
    languagesql
    SELECT MT.USER_NAME
         , MT.TABLE_NAME
         , MT.PARTITION_NAME
         , TBS.NAME TBS_NAME
         , TO_CHAR((MU.FIXED_ALLOC_MEM+MU.VAR_ALLOC_MEM)/1024/1024, '999,999,999.9') 'ALLOC(M)'
         , TO_CHAR((MU.FIXED_USED_MEM+MU.VAR_USED_MEM)/1024/1024,   '999,999,999.9') 'USED(M)'
         , TO_CHAR(((MU.FIXED_USED_MEM+MU.VAR_USED_MEM)/(MU.FIXED_ALLOC_MEM+MU.VAR_ALLOC_MEM))*100, '999.9') 'USAGE(%)'
      FROM (SELECT U.USER_NAME
                 , T.TABLE_NAME
                 , DECODE(T.IS_PARTITIONED, 'F', T.TABLE_OID, 'T', P.PARTITION_OID) TABLE_OID
                 , DECODE(T.IS_PARTITIONED, 'F', RPAD('-', 14), 'T', P.PARTITION_NAME) PARTITION_NAME
                 , DECODE(T.IS_PARTITIONED, 'F', T.TBS_ID, 'T', P.TBS_ID) TBS_ID
              FROM SYSTEM_.SYS_USERS_ U
                 , SYSTEM_.SYS_TABLES_ T LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ P ON T.TABLE_ID = P.TABLE_ID
             WHERE 1=1
               AND U.USER_ID <> 1
               AND U.USER_ID = T.USER_ID
               AND T.TBS_ID IN (SELECT ID FROM V$TABLESPACES WHERE TYPE IN (1, 2, 8)) 
           ) MT
         , V$MEMTBL_INFO MU
         , V$TABLESPACES TBS
     WHERE 1=1
       AND MT.TABLE_OID = MU.TABLE_OID
       AND TBS.ID = MT.TBS_ID
     ORDER BY 1, 2, 3
    ;
    Code Block
    titleAltibase v4 ~ 6.3.1
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , B.TABLE_NAME
         , D.NAME TBS_NAME
         , TO_CHAR((C.FIXED_ALLOC_MEM+C.VAR_ALLOC_MEM)/1024/1024, '999,999,999.9') 'ALLOC(M)'
         , TO_CHAR((C.FIXED_USED_MEM+C.VAR_USED_MEM)/1024/1024,   '999,999,999.9') 'USED(M)'
         , TO_CHAR(((C.FIXED_USED_MEM+C.VAR_USED_MEM)/(C.FIXED_ALLOC_MEM+C.VAR_ALLOC_MEM))*100, '999.9') 'USAGE(%)'
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_TABLES_ B
         , V$MEMTBL_INFO C
         , V$TABLESPACES D
     WHERE 1=1
       AND A.USER_NAME <> 'SYSTEM_'
       AND B.TABLE_TYPE = 'T'
       AND A.USER_ID = B.USER_ID
       AND B.TABLE_OID = C.TABLE_OID
       AND B.TBS_ID = D.ID 
     ORDER BY USER_NAME, TBS_NAME, TABLE_NAME
    ;
  • 주요 컬럼 설명

    Anchor
    OB01_col
    OB01_col

    USER_NAME

    테이블 소유자

    TABLE_NAME

    테이블 이름

    PARTITION_NAME

    테이블에 파티션드 테이블을 생성했을 경우 파티션드 테이블 이름. 메모리 파티션 테이블은 6.5.1 부터 지원.

    TBS_NAME

    테이블 생성 시 지정한 테이블스페이스 이름
    ALLOC(M)메모리 테이블에서 할당받은 페이지의 합계이다.
    USED(M)메모리 테이블이 할당받은 페이지 중에서 '실제 데이터가 적재된 페이지'의 합계이다. 예를 들어, ALLOC이 100M 크기인 메모리 테이블에 전체 DELELE를 수행하면 ALLOC은 100M로 변함없으나 USED는 0에 가깝게 된다. TRUNCATE 를 수행하면 ALLOC 을 줄일 수 있다.
    USAGE(%)메모리 테이블에 할당된 페이지 중에서 '실제 데이터가 적재된 페이지'에 대한 백분율로 나타낸다. (즉, USED/ALLOC)

 

[OB02] 큐 
Anchor
OB02
OB02
[맨 위로]

  • 큐 테이블의 사용량을 조회하는 쿼리이다. 아래 쿼리는 Altibase v4 이상 버전에서 사용할 수 있다.  

  • 컬럼 설명은 '메모리 테이블 및 사용량 컬럼 설명' 참고

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , B.TABLE_NAME
         , D.NAME TABLESPACE_NAME
         , C.TABLE_OID
         , TO_CHAR((C.FIXED_ALLOC_MEM+C.VAR_ALLOC_MEM)/1024/1024, '999,999,999.9') 'ALLOC(M)'
         , TO_CHAR((C.FIXED_USED_MEM+C.VAR_USED_MEM)/1024/1024,   '999,999,999.9') 'USED(M)'
         , TO_CHAR(((C.FIXED_USED_MEM+C.VAR_USED_MEM)/(C.FIXED_ALLOC_MEM+C.VAR_ALLOC_MEM))*100, '999.9') 'USAGE(%)'
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_TABLES_ B
         , V$MEMTBL_INFO C
         , V$TABLESPACES D
     WHERE 1=1
       AND A.USER_NAME <> 'SYSTEM_'
       AND B.TABLE_TYPE = 'Q'
       AND A.USER_ID = B.USER_ID
       AND B.TABLE_OID = C.TABLE_OID
       AND B.TBS_ID = D.ID
    ;

[OB03] Efficiency 가 낮은 메모리 테이블 
Anchor
OB03
OB03
[맨 위로]

  • 할당받은 전체 페이지에 비해 실제 사용이 낮은 메모리 테이블을 조회하는 쿼리이다.
  • 메모리 테이블에서 할당받은 페이지의 전체 크기가 1G 이상이고 USAGE가 50% 이하인 메모리 테이블을 출력한다. 

    Code Block
    titleAltibase v6.5.1 이상
    themeDJango
    languagesql
    SELECT MT.USER_NAME
         , MT.TABLE_NAME 
         , MT.PARTITION_NAME 
         , TBS.NAME TBS_NAME
         , TO_CHAR((MU.FIXED_ALLOC_MEM+MU.VAR_ALLOC_MEM)/1024/1024, '999,999,999.9') 'ALLOC(M)'
         , TO_CHAR((MU.FIXED_USED_MEM+MU.VAR_USED_MEM)/1024/1024,   '999,999,999.9') 'USED(M)'
         , TO_CHAR(((MU.FIXED_USED_MEM+MU.VAR_USED_MEM)/(MU.FIXED_ALLOC_MEM+MU.VAR_ALLOC_MEM))*100, '999.9') 'USAGE(%)'     
      FROM (SELECT U.USER_NAME 
                 , T.TABLE_NAME 
                 , DECODE(T.IS_PARTITIONED, 'F', T.TABLE_OID, 'T', P.PARTITION_OID) TABLE_OID 
                 , DECODE(T.IS_PARTITIONED, 'F', RPAD('-', 14), 'T', P.PARTITION_NAME) PARTITION_NAME 
                 , DECODE(T.IS_PARTITIONED, 'F', T.TBS_ID, 'T', P.TBS_ID) TBS_ID
              FROM SYSTEM_.SYS_USERS_ U
                 , SYSTEM_.SYS_TABLES_ T LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ P ON T.TABLE_ID = P.TABLE_ID
             WHERE 1=1
               AND U.USER_ID <> 1
               AND U.USER_ID = T.USER_ID
               AND T.TBS_ID IN (SELECT ID FROM V$TABLESPACES WHERE TYPE IN (1, 2, 8)) 
           ) MT
         , V$MEMTBL_INFO MU 
         , V$TABLESPACES TBS
     WHERE 1=1
       AND MT.TABLE_OID = MU.TABLE_OID
       AND TBS.ID = MT.TBS_ID
       AND ROUND((FIXED_ALLOC_MEM+VAR_ALLOC_MEM)/1024/1024, 2) >= 1024                                -- 메모리 테이블에 할당된 페이지가 1G 이상
       AND ROUND((FIXED_USED_MEM+VAR_USED_MEM)/(FIXED_ALLOC_MEM+VAR_ALLOC_MEM+0.01)*100, 2) <= 50     -- USAGE가 50% 이하   
     ORDER BY 1, 2, 3
    ;
    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT C.USER_NAME
         , B.TABLE_NAME
         , TO_CHAR((C.FIXED_ALLOC_MEM+C.VAR_ALLOC_MEM)/1024/1024, '999,999,999.9') 'ALLOC(M)'
         , TO_CHAR((C.FIXED_USED_MEM+C.VAR_USED_MEM)/1024/1024,   '999,999,999.9') 'USED(M)'
         , TO_CHAR(((C.FIXED_USED_MEM+C.VAR_USED_MEM)/(C.FIXED_ALLOC_MEM+C.VAR_ALLOC_MEM))*100, '999.9') 'USAGE(%)'
      FROM V$MEMTBL_INFO A
         , SYSTEM_.SYS_TABLES_ B
         , SYSTEM_.SYS_USERS_ C
     WHERE A.TABLE_OID = B.TABLE_OID
       AND B.USER_ID = C.USER_ID
       AND ROUND((FIXED_ALLOC_MEM+VAR_ALLOC_MEM)/1024/1024, 2) >= 1024                                -- 메모리 테이블에 할당된 페이지가 1G 이상
       AND ROUND((FIXED_USED_MEM+VAR_USED_MEM)/(FIXED_ALLOC_MEM+VAR_ALLOC_MEM+0.01)*100, 2) <= 50     -- USAGE가 50% 이하
       AND B.USER_ID <> 1
     ORDER BY 'FREE(M)' DESC
    ;
  • 주요 컬럼 설명

    ALLOC(M)메모리 테이블에서 할당받은 페이지의 합계이다.
    USED(M)메모리 테이블이 할당받은 페이지 중에서 '실제 데이터가 적재된 페이지'의 합계이다. 예를 들어, ALLOC이 100M 크기인 메모리 테이블에 전체 DELELE를 수행하면 ALLOC은 100M로 변함없으나 USED는 0에 가깝게 된다. TRUNCATE 를 수행하면 ALLOC 을 줄일 수 있다.
    USAGE(%)메모리 테이블에 할당된 페이지 중에서 '실제 데이터가 적재된 페이지'에 대한 백분율로 나타낸다. (즉, USED/ALLOC)

...

[OB04] 메모리 인덱스, 큐 인덱스 사용량 
Anchor
OB04
OB04
[맨 위로]

  • 메모리 테이블의 인덱스와 큐 테이블의 인덱스 사용량을 조회하는 쿼리이다.
  • 버전 별로 쿼리가 다르므로 버전에 맞는 쿼리를 사용해야 한다. 

    Code Block
    titleAltibase v5 이상
    themeDJango
    languagesql
    SELECT U.USER_NAME
         , T.TABLE_NAME
         , B.INDEX_NAME
         , LPAD(I.IS_PARTITIONED, 14) INDEX_PARTITIONED
         , ROUND(((USED_NODE_COUNT + PREPARE_NODE_COUNT) / 15 * 32768)/1024/1024, 1) AS 'SIZE(MB)'
      FROM V$MEM_BTREE_HEADER B
         , SYSTEM_.SYS_INDICES_ I
         , SYSTEM_.SYS_TABLES_ T
         , SYSTEM_.SYS_USERS_ U
     WHERE 1=1
       AND B.INDEX_ID = I.INDEX_ID
       AND I.TABLE_ID = T.TABLE_ID
       AND B.INDEX_TBS_ID <> 0
       AND U.USER_ID = T.USER_ID
     ORDER BY TABLE_NAME, B.INDEX_ID
    ;
  • 주요 컬럼 설명

    INDEX_PARTITIONED
    해당 인덱스가 파티션 인덱스인지 알려준다. F : 논파티션 인덱스 T : 파티션 인덱스 메모리 파티션 인덱스는 Altibase v6.5.1 부터 지원한다.
    SIZE(MB)
    인덱스에 달린 노드 수로 인덱스 크기를 알 수 있다. 인덱스 노드 15개당 하나의 페이지를 사용하며 페이지 크기는 32KB이다. Altibase 버전에 따라 노드 별 사용할 수 있는 슬롯의 개수에 차이가 있다. 이 때문에 같은 데이터일지라도 버전에 따라 인덱스 크기가 다를 수 있다.

...

[OB05] 디스크 테이블 
Anchor
OB05
OB05
[맨 위로]

  • 디스크 테이블의 사용량 정보이다. 버전 별로 쿼리가 다르므로 버전에 맞는 쿼리를 사용해야 한다. 

    Code Block
    titleAltibase v5.3.3 이상
    themeDJango
    languagesql
    SELECT U.USER_NAME USER_NAME
         , TBL.TABLE_NAME TABLE_NAME
         , DECODE(TBL.IS_PARTITIONED, 'T', TBL.PARTITION_NAME, 'F', '-') PARTITIONED_TABLE
         , TBS.NAME TBS_NAME
         , TO_CHAR((D.MAX * TBS.PAGE_SIZE)/1024, '999,999,999,999') 'MAX(KB)'
         , TO_CHAR((TBS.EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.TOTAL_EXTENT_COUNT)/1024, '999,999,999,999') 'ALLOC(KB)'
         , TO_CHAR(SEG.TOTAL_USED_SIZE/1024, '999,999,999,999') 'USED(KB)'
      FROM (SELECT TBL.USER_ID
                 , DECODE(TBL.IS_PARTITIONED, 'F', TBL.TABLE_OID, 'T', PT.PARTITION_OID) TABLE_OID
                 , TBL.TABLE_NAME
                 , PT.PARTITION_NAME
                 , DECODE(TBL.IS_PARTITIONED, 'F', TBL.TBS_ID, 'T', PT.TBS_ID) TBS_ID
                 , TBL.IS_PARTITIONED
              FROM SYSTEM_.SYS_TABLES_ TBL LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ PT ON TBL.TABLE_ID = PT.TABLE_ID
             WHERE TBL.TABLE_TYPE = 'T'
           ) TBL
         , (SELECT S.TABLE_OID, SUM(S.TOTAL_EXTENT_COUNT) TOTAL_EXTENT_COUNT, SUM(S.TOTAL_USED_SIZE) TOTAL_USED_SIZE 
              FROM X$SEGMENT S 
             WHERE S.SEGMENT_TYPE IN (6, 7) /* 6 : 테이블, 7 : LOB 데이터(6.1.1 이상), 5 : 인덱스 */
             GROUP BY S.TABLE_OID) SEG
         , SYSTEM_.SYS_USERS_ U
         , V$TABLESPACES TBS
         , (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 1=1
       AND SEG.TABLE_OID = TBL.TABLE_OID
       AND U.USER_ID = TBL.USER_ID
       AND D.SPACEID = TBL.TBS_ID
       AND TBS.ID = TBL.TBS_ID
     ORDER BY USER_NAME, TABLE_NAME, PARTITIONED_TABLE
    ;
    Code Block
    titleAltibase v5.1.5
    themeDJango
    languagesql
    SELECT U.USER_NAME USER_NAME
         , TBL.TABLE_NAME TABLE_NAME
         , DECODE(TBL.IS_PARTITIONED, 'T', TBL.PARTITION_NAME, 'F', '-') PARTITIONED_TABLE
         , TBS.NAME TBS_NAME
         , TO_CHAR((D.MAX * TBS.PAGE_SIZE)/1024/1024, '999,999,999') 'MAX(MB)'
         , TO_CHAR((TBS.EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/1024/1024, '999,999,999') 'ALLOC(MB)'
      FROM (SELECT TBL.USER_ID
                 , DECODE(TBL.IS_PARTITIONED, 'F', TBL.TABLE_OID, 'T', PT.PARTITION_OID) TABLE_OID
                 , TBL.TABLE_NAME
                 , PT.PARTITION_NAME
                 , DECODE(TBL.IS_PARTITIONED, 'F', TBL.TBS_ID, 'T', PT.TBS_ID) TBS_ID
                 , TBL.IS_PARTITIONED
              FROM SYSTEM_.SYS_TABLES_ TBL LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ PT ON TBL.TABLE_ID = PT.TABLE_ID
           ) TBL
         , V$SEGMENT SEG
         , SYSTEM_.SYS_USERS_ U
         , V$TABLESPACES TBS
         , (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 1=1
       AND SEG.SEGMENT_TYPE = 'TABLE'  /* 'TABLE' : 테이블, 'INDEX' : 인덱스 */
       AND SEG.TABLE_OID = TBL.TABLE_OID
       AND U.USER_ID = TBL.USER_ID
       AND D.SPACEID = TBL.TBS_ID
       AND TBS.ID = TBL.TBS_ID
     ORDER BY USER_NAME, PARTITIONED, TABLE_NAME, PARTITIONED_TABLE
    ;
    Code Block
    titleAltibase v4.3.9
    themeDJango
    languagesql
    SELECT U.USER_NAME 'USER_NAME'                                                                                      
         , TBL.TABLE_NAME 'TABLE_NAME'                                                                                  
         , TBS.NAME 'TBS_NAME'                                                                                          
         , TO_CHAR((TBS.TOTAL_PAGE_COUNT * TBS.PAGE_SIZE)/1024 , '999,999,999') 'TBS_MAX(KB)'                           
         , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/1024, '999,999,999') 'ALLOC(KB)'  
         , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_FULL_COUNT)/1024, '999,999,999') 'USED(KB)'    
      FROM X$SEGMENT SEG
         , SYSTEM_.SYS_TABLES_ TBL
         , V$TABLESPACES TBS
         , SYSTEM_.SYS_USERS_ U
     WHERE 1=1
       AND SEG.TABLE_OID = TBL.TABLE_OID
       AND SEG.SPACE_ID = TBL.TBS_ID
       AND SEG.SPACE_ID = TBS.ID
       AND TBL.USER_ID = U.USER_ID
       AND TBL.TABLE_TYPE = 'T'
       AND SEG.SEGMENT_TYPE = 6
     ORDER BY USER_NAME, TABLE_NAME
    ;
  • 주요 컬럼 설명

    TABLE_NAME

    테이블의 이름

    PARTITIONED_TABLE

    테이블에 파티션 테이블을 생성한 경우 파티션 테이블의 이름을 보여준다. 논-파티션드 테이블의 경우 '-'

    TBS_NAME

    테이블 생성 시 지정한 테이블스페이스를 보여준다. 파티션드 테이블에 테이블스페이스를 지정한 경우 파티션드 테이블에서 지정한 테이블스페이스 이름을 보여준다.

    MAX(MB)

    테이블이 속한 테이블스페이스의 최대 크기를 의미한다.

    ALLOC(MB)

    테이블이 할당받은 총 크기를 의미한다.

    USED(MB)

    테이블이 할당받은 공간 중 데이터가 포함된 크기를 의미한다.
    데이터를 DELETE 를 수행하면 DELETE한 공간은 재사용 가능하지만 디스크 테이블의 경우 메모리 테이블과는 다르게 DELETE를 수행해도 USED는 줄어들지 않는다.
    DELETE로 재사용 가능한 공간을 제외하고 실제 USED 를 확인하려면 AGING 작업을 수행해야 한다. 예) ALTER TABLE table_name AGING ;
    ALTER TABLE ~ AGING ; 수행 중에는 테이블에 X락을 잡기 때문에 해당 테이블에 대한 다른 요청은 대기 상태가 되므로 수행 시 주의해야 한다. AGING 작업을 수행하지 않으면 ALLOC 과 USED 는 항상 같은 값을 갖는다.



[OB06] 디스크 인덱스 사용량 
Anchor
OB06
OB06
[맨 위로]

  • 디스크 인덱스의 사용량 정보이다. 버전 별로 쿼리가 다르므로 버전에 맞는 쿼리를 사용해야 한다. 

    Code Block
    titleAltibase v5.3.3 이상
    themeDJango
    languagesql
    SELECT U.USER_NAME USER_NAME                                                                                         
         , I_LIST.TABLE_NAME                                                                                             
         , DECODE(I_LIST.PARTITION_NAME, NULL, '-', I_LIST.PARTITION_NAME) PARTITIONED_NAME                
         , I_LIST.INDEX_NAME INDEX_NAME                                                                                  
         , DECODE(I_LIST.INDEX_PARTITION_NAME, NULL, '-', I_LIST.INDEX_PARTITION_NAME) PARTITIONED_INDEX   
         , TBS.NAME TBS_NAME                                                                                             
         , TO_CHAR((D.MAX * TBS.PAGE_SIZE)/1024/1024, '999,999,999') 'MAX(MB)'                                                
         , TO_CHAR((TBS.EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.TOTAL_EXTENT_COUNT)/1024/1024, '999,999,999') 'ALLOC(MB)'     
         , TO_CHAR(SEG.TOTAL_USED_SIZE/1024/1024, '999,999,999') 'USED(MB)'                                                                           
      FROM (SELECT T.TABLE_NAME
                 , PT.PARTITION_NAME
                 , I.INDEX_NAME
                 , PI.INDEX_PARTITION_NAME
                 , DECODE(T.IS_PARTITIONED, 'F', I.TABLE_ID, 'T', PT.TABLE_ID) TABLE_ID
                 , DECODE(T.IS_PARTITIONED, 'F', T.TABLE_OID, 'T', PT.PARTITION_OID) TABLE_OID
                 , DECODE(I.IS_PARTITIONED, 'F', I.TBS_ID, 'T', PI.TBS_ID) TBS_ID
                 , I.INDEX_ID
                 , T.USER_ID
              FROM SYSTEM_.SYS_INDICES_ I LEFT OUTER JOIN SYSTEM_.SYS_INDEX_PARTITIONS_ PI ON PI.INDEX_ID = I.INDEX_ID 
                                          LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ PT ON PT.PARTITION_ID = PI.TABLE_PARTITION_ID 
                                          LEFT OUTER JOIN SYSTEM_.SYS_TABLES_ T ON T.TABLE_ID = I.TABLE_ID ) I_LIST
         , X$SEGMENT SEG
         , V$INDEX I
         , V$TABLESPACES TBS
         , SYSTEM_.SYS_USERS_ U
         , (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 1=1
       AND SEG.TABLE_OID = I.TABLE_OID
       AND SEG.SEGMENT_PID = I.INDEX_SEG_PID
       AND SEG.SPACE_ID = I_LIST.TBS_ID
       AND I_LIST.INDEX_ID = I.INDEX_ID
       AND I_LIST.TABLE_OID = I.TABLE_OID
       AND I_LIST.TBS_ID = TBS.ID
       AND D.SPACEID = I_LIST.TBS_ID
       AND U.USER_ID = I_LIST.USER_ID
     ORDER BY I_LIST.TABLE_NAME, I_LIST.INDEX_NAME, I_LIST.PARTITION_NAME, I_LIST.INDEX_PARTITION_NAME
    ;
    Code Block
    titleAltibase v5.1.5 버전
    themeDJango
    languagesql
    SELECT U.USER_NAME USER_NAME
         , I_LIST.TABLE_NAME
         , DECODE(I_LIST.PARTITION_NAME, NULL, '-', I_LIST.PARTITION_NAME) PARTITIONED_NAME
         , I_LIST.INDEX_NAME INDEX_NAME
         , DECODE(I_LIST.INDEX_PARTITION_NAME, NULL, '-', I_LIST.INDEX_PARTITION_NAME) PARTITIONED_INDEX
         , TBS.NAME TBS_NAME
         , TO_CHAR((D.MAX * TBS.PAGE_SIZE)/1024/1024, '999,999,999') 'MAX(MB)'
         , TO_CHAR((TBS.EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/1024/1024, '999,999,999') 'ALLOC(MB)'
      FROM (SELECT T.TABLE_NAME
                 , PT.PARTITION_NAME
                 , I.INDEX_NAME
                 , PI.INDEX_PARTITION_NAME
                 , DECODE(T.IS_PARTITIONED, 'F', I.TABLE_ID, 'T', PT.TABLE_ID) TABLE_ID
                 , DECODE(T.IS_PARTITIONED, 'F', T.TABLE_OID, 'T', PT.PARTITION_OID) TABLE_OID
                 , DECODE(I.IS_PARTITIONED, 'F', I.TBS_ID, 'T', PI.TBS_ID) TBS_ID
                 , I.INDEX_ID
                 , T.USER_ID
              FROM SYSTEM_.SYS_INDICES_ I LEFT OUTER JOIN SYSTEM_.SYS_INDEX_PARTITIONS_ PI ON PI.INDEX_ID = I.INDEX_ID 
                                          LEFT OUTER JOIN SYSTEM_.SYS_TABLE_PARTITIONS_ PT ON PT.PARTITION_ID = PI.TABLE_PARTITION_ID 
                                          LEFT OUTER JOIN SYSTEM_.SYS_TABLES_ T ON T.TABLE_ID = I.TABLE_ID ) I_LIST
         , V$SEGMENT SEG
         , V$INDEX I
         , V$TABLESPACES TBS
         , SYSTEM_.SYS_USERS_ U
         , (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 1=1
       AND SEG.TABLE_OID = I.TABLE_OID
       AND SEG.SEGMENT_PID = I.INDEX_SEG_PID
       AND SEG.SPACE_ID = I_LIST.TBS_ID
       AND I_LIST.INDEX_ID = I.INDEX_ID
       AND I_LIST.TABLE_OID = I.TABLE_OID
       AND I_LIST.TBS_ID = TBS.ID
       AND D.SPACEID = I_LIST.TBS_ID
       AND U.USER_ID = I_LIST.USER_ID
     ORDER BY I_LIST.TABLE_NAME, I_LIST.INDEX_NAME, I_LIST.PARTITION_NAME, I_LIST.INDEX_PARTITION_NAME
    ;
    Code Block
    titleAltibase v4.3.9
    themeDJango
    languagesql
    SELECT U.USER_NAME AS 'USER_NAME'
         , TBL.TABLE_NAME AS 'TABLE_NAME'
         , IDX.INDEX_NAME AS 'INDEX_NAME'
         , TBS.NAME AS 'TBS_NAME'
         , TO_CHAR((TBS.TOTAL_PAGE_COUNT * TBS.PAGE_SIZE)/1024/1024 , '999,999,999') AS 'TBS_MAX(KB)'
         , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_TOTAL_COUNT)/1024/1024, '999,999,999') AS 'ALLOC(MB)'
         , TO_CHAR((TBS.A_EXTENT_PAGE_COUNT * TBS.PAGE_SIZE * SEG.EXTENT_FULL_COUNT )/1024/1024, '999,999,999') AS 'USED(MB)'
     FROM  X$SEGMENT SEG
         , V$INDEX I
         , SYSTEM_.SYS_INDICES_ IDX
         , SYSTEM_.SYS_TABLES_ TBL
         , V$TABLESPACES TBS
         , SYSTEM_.SYS_USERS_ U
     WHERE SEG.TABLE_OID = I.TABLE_OID
       AND SEG.SEGMENT_DESC = I.INDEX_SEG_DESC
       AND I.INDEX_ID = IDX.INDEX_ID
       AND IDX.TABLE_ID = TBL.TABLE_ID
       AND SEG.SPACE_ID = IDX.TBS_ID
       AND SEG.SPACE_ID = TBS.ID
       AND IDX.USER_ID = U.USER_ID
       AND TBL.TABLE_TYPE = 'T'
       AND SEG.SEGMENT_TYPE = 5
     ORDER BY U.USER_NAME, TBL.TABLE_NAME, IDX.INDEX_NAME
    ;

...

[OB07] 파티션 테이블 정보 
Anchor
OB07
OB07
[맨 위로]

  • 파티션 테이블의 파티셔닝 방법, 파티셔닝 기준 등 파티션 테이블에 관한 정보를 보여주는 쿼리이다. 

    Code Block
    titleAltibase v6.5.1 이상
    themeDJango
    languagesql
    SELECT U.USER_NAME
         , T.TABLE_NAME
         , P.PARTITION_NAME
         , DECODE(PM.PARTITION_METHOD, 0, RPAD('RANGE', 16), 1, RPAD('HASH', 16), 2, RPAD('LIST', 16)) PARTITION_METHOD
         , RPAD(P.PARTITION_ORDER, 15) PARTITION_ORDER
         , RPAD(PM.ROW_MOVEMENT, 12) ROW_MOVEMENT
         , P.PARTITION_MIN_VALUE
         , P.PARTITION_MAX_VALUE
         , RPAD(P.PARTITION_ACCESS, 6) 'ACCESS'                             -- Altibase v6.5.1 이전 버전은 삭제 후 사용
         , TO_CHAR(P.CREATED, 'YYYY-MM-DD HH:MI:SS') CREATED                -- Altibase v6.5.1 이전 버전은 삭제 후 사용
         , TO_CHAR(P.LAST_DDL_TIME, 'YYYY-MM-DD HH:MI:SS') LAST_DDL_TIME    -- Altibase v6.5.1 이전 버전은 삭제 후 사용      
      FROM SYSTEM_.SYS_TABLES_ T
         , SYSTEM_.SYS_TABLE_PARTITIONS_ P
         , SYSTEM_.SYS_PART_TABLES_ PM
         , SYSTEM_.SYS_USERS_ U
     WHERE 1=1
       AND U.USER_ID = T.USER_ID
       AND T.TABLE_ID = P.TABLE_ID
       AND PM.TABLE_ID = T.TABLE_ID
    ;

...

[OB08] 시퀀스 
Anchor
OB08
OB08
[맨 위로]

  • 시퀀스 객체에 대한 정보를 보여주는 쿼리이다.

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT USER_NAME
         , TABLE_NAME SEQ_NAME
         , MIN_SEQ MIN
         , CURRENT_SEQ
         , MAX_SEQ MAX
         , INCREMENT_SEQ INCREMENT
         , IS_CYCLE
         , CACHE_SIZE CACHE
      FROM V$SEQ A
         , SYSTEM_.SYS_USERS_ B
         , SYSTEM_.SYS_TABLES_ C
     WHERE 1=1
       AND A.SEQ_OID = C.TABLE_OID
       AND B.USER_ID = C.USER_ID
       AND B.USER_NAME <> 'SYSTEM_'
    ;

...

[OB09] 시노님 
Anchor
OB09
OB09
[맨 위로]

  • 시노님에 대한 정보를 보여주는 쿼리이다.

    Code Block
    titleAltibase v5 이상
    themeDJango
    languagesql
    SELECT NVL(U.USER_NAME, 'PUBLIC') SYNONYM_OWNER
         , S.SYNONYM_NAME
         , S.OBJECT_OWNER_NAME OBJECT_OWNER
         , S.OBJECT_NAME
         , TO_CHAR(S.LAST_DDL_TIME, 'YYYY-MM-DD HH:MI:SS') LAST_DDL_TIME
      FROM SYSTEM_.SYS_SYNONYMS_ S 
           LEFT OUTER JOIN SYSTEM_.SYS_USERS_ U ON S.SYNONYM_OWNER_ID = U.USER_ID 
     WHERE 1=1
       --AND U.USER_ID <> 0       -- PUBLIC 시노님을 제외하고 싶은 경우 주석 제거하고 사용한다. 
    ;
    Code Block
    titleAltibase v4.3.9
    themeDJango
    languagesql
    SELECT NVL(U.USER_NAME, 'PUBLIC') SYNONYM_OWNER
         , S.SYNONYM_NAME
         , S.SCHEMA_NAME OBJECT_OWNER
         , S.OBJECT_NAME
      FROM SYSTEM_.SYS_SYNONYMS_ S LEFT OUTER JOIN SYSTEM_.SYS_USERS_ U ON S.USER_ID = U.USER_ID 
    ;

...

[OB10] PSM 
Anchor
OB10
OB10
[맨 위로]

  • 저장 프로시저와 저장 함수에 대해 실행  정보를 볼 수 있는 쿼리이다.

    Code Block
    titleAltibase v5 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , PROC_NAME PSM_NAME
         , DECODE(OBJECT_TYPE, 0, 'PROCEDURE', 1, 'FUNCTION', 3, 'TYPESET') PSM_TYPE
         , DECODE(STATUS, 0, 'VALID', 'INVALID') STATUS
         , TO_CHAR(B.CREATED, 'YYYY-MM-DD HH:MI:SS') CREATED
         , TO_CHAR(B.LAST_DDL_TIME, 'YYYY-MM-DD HH:MI:SS') LAST_DDL_TIME    -- Altibase v4 에서는 삭제 후 사용
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_PROCEDURES_ B
     WHERE 1=1
       AND A.USER_ID = B.USER_ID
       AND A.USER_NAME <> 'SYSTEM_' 
     ORDER BY 1, 2, 3
    ;

...

[OB11] PSM 생성구문 
Anchor
OB11
OB11
[맨 위로]

  • PROC_NAME 조건에 PSM 이름을 입력하면 해당 PSM 의 생성 구문을 보여준다.

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT PARSE
      FROM SYSTEM_.SYS_PROC_PARSE_
     WHERE PROC_OID = (SELECT PROC_OID
                         FROM SYSTEM_.SYS_PROCEDURES_
                        WHERE PROC_NAME = 'psm_name')   -- 조회하고자 하는 psm이름을 입력한다. 
     ORDER BY SEQ_NO
    ;

...

[OB12] VIEW 
Anchor
OB12
OB12
[맨 위로]

  • VIEW 객체에 대한 정보를 보여준다.

    Code Block
    titleAltibase v5 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , B.TABLE_NAME VIEW_NAME
         , DECODE(C.STATUS, 0, 'VALID', 'INVALID') STATUS
         , TO_CHAR(B.CREATED, 'YYYY-MM-DD HH:MI:SS') CREATED                 -- Altibase v4 에서는 삭제 후 사용
         , TO_CHAR(B.LAST_DDL_TIME, 'YYYY-MM-DD HH:MI:SS') LAST_DDL_TIME     -- Altibase v4 에서는 삭제 후 사용
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_TABLES_ B
         , SYSTEM_.SYS_VIEWS_ C
     WHERE 1=1
       AND A.USER_ID = B.USER_ID
       AND B.TABLE_ID = C.VIEW_ID
       AND B.TABLE_TYPE = 'V'
    ;

...

[OB13] VIEW 생성구문 
Anchor
OB13
OB13
[맨 위로]

  • TABLE_NAME 조건에 뷰 이름을 입력하면 해당 뷰의 생성 구문을 보여준다.

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT PARSE
      FROM SYSTEM_.SYS_VIEW_PARSE_
     WHERE VIEW_ID = (SELECT TABLE_ID
                        FROM SYSTEM_.SYS_TABLES_
                       WHERE TABLE_NAME = 'view_name')    -- 조회하고자 하는 view이름을 입력한다. 
     ORDER BY SEQ_NO
    ;

...

[OB14] PACKAGE 
Anchor
OB14
OB14
[맨 위로]

  • 패키지에 대한 정보를 보여준다.

    Code Block
    titleAltibase v6.3.1 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , PACKAGE_NAME
         , DECODE(PACKAGE_TYPE, 6, 'PACKAGE_SPEC', 7, 'PACKAGE_BODY') PACKAGE_TYPE
         , DECODE(STATUS, 0, 'VALID', 'INVALID') STATUS
         , TO_CHAR(B.CREATED, 'YYYY-MM-DD HH:MI:SS') CREATED
         , TO_CHAR(B.LAST_DDL_TIME, 'YYYY-MM-DD HH:MI:SS') LAST_DDL_TIME
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_PACKAGES_ B
     WHERE 1=1
       AND A.USER_ID = B.USER_ID
       AND A.USER_NAME <> 'SYSTEM_'
    ;

...

[OB15] PACKAGE 서브프로그램 
Anchor
OB15
OB15
[맨 위로]

...

[OB16] PACKAGE 생성구문 
Anchor
OB16
OB16
[맨 위로]

  • PACKAGE_NAME 조건에 패키지 이름을 입력하면 해당 패키지의 생성 구문을 보여준다.

    Code Block
    titleAltibase v6.3.1 이상
    themeDJango
    languagesql
    SELECT PARSE 
         , DECODE(PACKAGE_TYPE, 6, 'PACKAGE_SPEC', 7, 'PACKAGE_BODY') PACKAGE_TYPE
      FROM SYSTEM_.SYS_PACKAGE_PARSE_
     WHERE PACKAGE_OID IN (SELECT PACKAGE_OID
                             FROM SYSTEM_.SYS_PACKAGES_
                            WHERE PACKAGE_NAME = 'package_name')   -- 조회하고자 하는 패키지 이름을 입력한다. 
     ORDER BY SEQ_NO
    ;

...

[OB17] 트리거 
Anchor
OB17
OB17
[맨 위로]

  • 트리거 생성 정보를 보여준다.

    Code Block
    titleAltibase v4.3.9 이상
    themeDJango
    languagesql
    SELECT TR.USER_NAME
         , T.TABLE_NAME
         , TR.TRIGGER_NAME
         , RPAD(DECODE(TR.IS_ENABLE, 0, 'NO', 
                                     1, 'YES'), 9) IS_ENABLE
         , RPAD(DECODE(TR.EVENT_TIME, 1, 'BEFORE', 
                                      2, 'AFTER', 
                                      3, 'INSTEAD OF'), 10) EVENT_TIME
         , RPAD(DECODE(TR.EVENT_TYPE, 1, 'INSERT', 
                                      2, 'DELETE', 
                                      4, 'UPDATE'), 10) EVENT_TYPE
         , DECODE(TR.GRANULARITY, 1, 'FOR EACH ROW', 
                                  2, 'FOR EACH STATEMENT') GRANULARITY
      FROM SYSTEM_.SYS_TABLES_ T
         , SYSTEM_.SYS_TRIGGERS_ TR
     WHERE 1=1
       AND TR.TABLE_ID = T.TABLE_ID
    ;
  • 주요 컬럼 설명

    TABLE_NAME

    트리거가 정의된 테이블 이름

    IS_ENABLE

    트리거 동작 여부.

    EVENT_TIME

    트리거를 발생시킬 시간

    EVENT_TYPE

    트리거를 발생시키는 이벤트 종류

    GRANULARITY

    트리거를 발생시키는 단위

...

[OB18] 작업(Job) 
Anchor
OB18
OB18
[맨 위로]

  • 작업(Job) 객체에 대한 정보를 보여준다.

    Code Block
    titleAltibase v6.5.1 이상
    themeDJango
    languagesql
    SELECT JOB_NAME
         , EXEC_QUERY PROC_NAME
         , INTERVAL
         , LPAD(DECODE(INTERVAL_TYPE, 'YY', 'YEARLY', 
                                      'MM', 'MONTHLY', 
                                      'DD', 'DAILY', 
                                      'HH', 'HOURLY', 
                                      'MI', 'MINUTELY'), 13) INTERVAL_TYPE
         , LPAD(DECODE(STATE, 0, '-', 1, 'ING'), 5) STATE
         , LPAD(EXEC_COUNT, 10) EXEC_COUNT
         , LPAD(ERROR_CODE, 10) ERROR_CODE
         , TO_CHAR(START_TIME, 'YYYY-MM-DD HH:MI:SS') START_TIME
         , TO_CHAR(LAST_EXEC_TIME, 'YYYY-MM-DD HH:MI:SS') LAST_EXEC_TIME
         , TO_CHAR(END_TIME, 'YYYY-MM-DD HH:MI:SS') END_TIME
         , DECODE(IS_ENABLE, 'T', 'YES', 'F', 'NO') IN_ENABLE     -- Altibase v6.3.1 에서는 삭제 후 사용한다. 
      FROM SYSTEM_.SYS_JOBS_
    ;
  • 주요 컬럼 설명

    JOB_NAME

    JOB 객체의 이름

    PROC_NAME

    JOB에 등록한 프로시저 이름

    INTERVAL, INTERVAL_TYPE

    수행 주기

    STATE

    JOB 진행 상태. ING이면 작업 스케줄러에 의해 프로시저가 현재 수행 중임을 의미한다.

    EXEC_COUNT

    JOB의 실행 횟수.

    ERROR_CODE

    마지막 JOB 실행 결과.

    START_TIME

    JOB이 처음 수행을 시작한 시각.

    LAST_EXEC_TIME

    마지막으로 JOB을 수행한 시각 가장 최근에 수행된 시각을 의미한다.

    END_TIME

    마지막으로 수행된 JOB이 종료한 시각.

    IN_ENABLE

    작업 스케줄러에 의해 JOB 실행이 가능한 상태인지 알 수 있다.

...

[OB19] 데이터베이스 사용자 
Anchor
OB19
OB19
[맨 위로]

  • 데이터베이스 사용자 정보를 조회하는 문장입니다.

    Code Block
    themeDJango
    languagesql
    SELECT USER_ID
         , USER_NAME
         , TBS.NAME 'DEFAULT_TBS'
         , CREATED
      FROM SYSTEM_.SYS_USERS_ U
         , V$TABLESPACES TBS
     WHERE U.DEFAULT_TBS_ID = TBS.ID
    ;

     

     

[OB20] 테이블스페이스 목록 
Anchor
OB20
OB20
[맨 위로]

  • 테이블스페이스 목록을 조회하는 문장입니다.

    Code Block
    themeDJango
    languagesql
    SELECT ID 'TBS_ID'
         , NAME 'TBS_NAME'
         , DECODE(TYPE, 0, 'SYSTEM_TBS',
                        1, 'SYSTEM_TBS',
                        2, 'USER_MEM_TBS',
                        3, 'SYSTEM_TBS',
                        4, 'USER_DISK_TBS',
                        5, 'SYSTEM_TBS',
                        6, 'USER_DISK_TEMP',
                        7, 'SYSTEM_UNDO',
                        8, 'USER_VOL_TBS') 'TBS_TYPE'
      FROM V$TABLESPACES
    ;

     

     

...

[PV01] 시스템 권한 (System Privilege) 
Anchor
PV01
PV01
[맨 위로]

  • 모든 사용자에게 부여된 시스템 권한을 보여준다. 특정 사용자에게 보여된 권한만을 보려면 주석부분(A.USER_NAME 조건)을 삭제하고 사용자 이름을 입력하고 조회한다.

    Code Block
    titleAltibase v4.3.9 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME GRANTEE
         , C.USER_NAME GRANTOR
         , REPLACE(D.PRIV_NAME, '_', ' ') PRIV_NAME
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_GRANT_SYSTEM_ B
         , SYSTEM_.SYS_USERS_ C
         , SYSTEM_.SYS_PRIVILEGES_ D
     WHERE C.USER_NAME <> 'SYSTEM_'
       AND A.USER_TYPE <> 'R'                 -- 이 조건은 Altibase v6.5.1 이하 버전에서는 삭제 후 사용해야 한다.
       AND B.GRANTEE_ID = A.USER_ID
       AND B.GRANTOR_ID = C.USER_ID
       AND B.PRIV_ID = D.PRIV_ID 
       --AND A.USER_NAME = 'user_name' 
     ORDER BY GRANTEE, GRANTOR
    ;

...

[PV02] 객체 권한 (Object Privilege) 
Anchor
PV02
PV02
[맨 위로]

  • 모든 사용자에게 부여된 객체 권한을 보여준다.

  • Altibase v6.3.1 이상 버전에서 사용할 수 있는 쿼리이다. 하위 버전에서 사용하려면 주석이 추가된 부분을 삭제하면 된다. 

    Code Block
    titleAltibase v6.3.1 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME GRANTEE 
         , C.USER_NAME GRANTOR 
         , F.USER_NAME OBJECT_OWNER 
         , OBJ.OBJ_NAME OBJECT_NAME 
         , DECODE(OBJ.OBJ_TYPE, 'T', DECODE(OBJ.OBJ_TYPE1, 'T', 'TABLE', 'V', 'VIEW'), 
                                'S', 'SEQUENCE', 
                                'P', 'PROCEDURE', 
                                'Y', 'External library',
                                'D', 'DIRECTORY') OBJECT_TYPE
         , REPLACE(D.PRIV_NAME, '_', ' ') PRIV_NAME 
         , DECODE(B.WITH_GRANT_OPTION, 0, 'NO', 'YES') WITH_GRANT_OPTION
      FROM SYSTEM_.SYS_USERS_ A 
         , SYSTEM_.SYS_GRANT_OBJECT_ B 
         , SYSTEM_.SYS_USERS_ C 
         , SYSTEM_.SYS_PRIVILEGES_ D 
         , (SELECT TABLE_NAME as OBJ_NAME, TABLE_TYPE as OBJ_TYPE1, 'T' as OBJ_TYPE, TABLE_ID as obj_id, USER_ID
              FROM SYSTEM_.SYS_TABLES_ WHERE TABLE_TYPE IN ('V', 'T')
            UNION
            SELECT TABLE_NAME as OBJ_NAME, '' as OBJ_TYPE1, TABLE_TYPE as OBJ_TYPE, TABLE_ID as obj_id, USER_ID
              FROM SYSTEM_.SYS_TABLES_ WHERE TABLE_TYPE = 'S'
            UNION         
            SELECT PROC_NAME as OBJ_NAME, '' as OBJ_TYPE1, 'P' as OBJ_TYPE, PROC_OID as obj_id, user_id
              FROM system_.SYS_PROCEDURES_
            UNION
            SELECT directory_NAME as OBJ_NAME, '' as OBJ_TYPE1, 'D' as OBJ_TYPE, DIRECTORY_ID as obj_id, user_id
              FROM SYSTEM_.SYS_DIRECTORIES_
            UNION                                                                                                  -- 6.3.1 이하에서는 삭제 후 사용
            SELECT library_name as OBJ_NAME, '' as OBJ_TYPE1, 'Y' as OBJ_TYPE, library_ID as obj_id, user_id       -- 6.3.1 이하에서는 삭제 후 사용
              FROM SYSTEM_.SYS_LIBRARIES_                                                                          -- 6.3.1 이하에서는 삭제 후 사용
           ) OBJ 
         , SYSTEM_.SYS_USERS_ F
     WHERE 1=1
       AND C.USER_NAME <> 'SYSTEM_'
       AND A.USER_TYPE <> 'R'        -- 이 조건은 Altibase v6.5.1 이하 버전에서는 삭제 후 사용해야 한다.
       AND B.GRANTEE_ID = A.USER_ID
       AND B.GRANTOR_ID = C.USER_ID
       AND B.PRIV_ID = D.PRIV_ID
       AND B.OBJ_ID = OBJ.OBJ_ID
       AND OBJ.OBJ_TYPE = B.OBJ_TYPE
       AND OBJ.USER_ID = F.USER_ID
     ORDER BY GRANTEE, GRANTOR, OBJECT_OWNER, OBJECT_NAME, PRIV_NAME
    ;
  • 주요 컬럼 설명

    GRANTEE

    권한을 부여 받은 사용자의 이름

    GRANTOR

    권한을 부여한 사용자의 이름

    OBJECT_OWNER

    객체 소유자 이름

    OBJECT_NAME

    객체 이름

    PRIV_NAME

    권한 종류

    WITH_GRANT_OPTION

    객체 권한을 부여 받은 사용자가 다른 사용자에게도 해당 권한을 부여할 수 있는지를 의미한다.

     

     

[PV03] 롤(Role) 생성  정보 
Anchor
PV03
PV03
[맨 위로]

  • 데이터베이스에 생성된 롤(Role) 목록과 롤에 부여된 시스템 권한 및 객체 권한을 확인할 수 있다. 
  • 롤은 Altibase v6.5.1 부터 지원하는 기능이다. 

    Code Block
    titleAltibase v6.5.1 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME 'ROLE_NAME'
         , RPAD('SYSTEM', 9) PRIV_TYPE
         , '' OBJECT_NAME
         , '' OBJECT_TYPE
         , REPLACE(D.PRIV_NAME, '_', ' ') PRIV_NAME
         , '' WITH_GRANT_OPTION     
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_GRANT_SYSTEM_ B
         , SYSTEM_.SYS_PRIVILEGES_ D
     WHERE 1=1
       AND A.USER_ID <> 0
       AND A.USER_TYPE = 'R'
       AND B.GRANTEE_ID = A.USER_ID
       AND B.PRIV_ID = D.PRIV_ID
    UNION 
    SELECT A.USER_NAME 'ROLE_NAME'
         , RPAD('OBJECT', 9) PRIV_TYPE
         , F.USER_NAME||'.'||OBJ.OBJ_NAME OBJECT_NAME
         , DECODE(OBJ.OBJ_TYPE, 'T', DECODE(OBJ.OBJ_TYPE1, 'T', 'TABLE', 'V', 'VIEW'),
                                'S', 'SEQUENCE',
                                'P', 'PROCEDURE',
                                'Y', 'External library',
                                'D', 'DIRECTORY') OBJECT_TYPE
         , REPLACE(D.PRIV_NAME, '_', ' ') PRIV_NAME
         , DECODE(B.WITH_GRANT_OPTION, 0, 'NO', 'YES') WITH_GRANT_OPTION
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_GRANT_OBJECT_ B
         , SYSTEM_.SYS_PRIVILEGES_ D
         , (SELECT TABLE_NAME as OBJ_NAME, TABLE_TYPE as OBJ_TYPE1, 'T' as OBJ_TYPE, TABLE_ID as obj_id, USER_ID
              FROM SYSTEM_.SYS_TABLES_ WHERE TABLE_TYPE IN ('V', 'T')
            UNION
            SELECT TABLE_NAME as OBJ_NAME, '' as OBJ_TYPE1, TABLE_TYPE as OBJ_TYPE, TABLE_ID as obj_id, USER_ID
              FROM SYSTEM_.SYS_TABLES_ WHERE TABLE_TYPE = 'S'
            UNION        
            SELECT PROC_NAME as OBJ_NAME, '' as OBJ_TYPE1, 'P' as OBJ_TYPE, PROC_OID as obj_id, user_id
              FROM system_.SYS_PROCEDURES_
            UNION
            SELECT directory_NAME as OBJ_NAME, '' as OBJ_TYPE1, 'D' as OBJ_TYPE, DIRECTORY_ID as obj_id, user_id
              FROM SYSTEM_.SYS_DIRECTORIES_
            UNION
            SELECT library_name as OBJ_NAME, '' as OBJ_TYPE1, 'Y' as OBJ_TYPE, library_ID as obj_id, user_id
              FROM SYSTEM_.SYS_LIBRARIES_
           ) OBJ
         , SYSTEM_.SYS_USERS_ F
     WHERE 1=1
       AND A.USER_ID <> 0
       AND A.USER_TYPE = 'R'
       AND B.GRANTEE_ID = A.USER_ID
       AND B.PRIV_ID = D.PRIV_ID
       AND B.OBJ_ID = OBJ.OBJ_ID
       AND OBJ.OBJ_TYPE = B.OBJ_TYPE
       AND OBJ.USER_ID = F.USER_ID
    ;
  • 주요 컬럼 설명

    ROLE_NAME

    롤(Role)의 이름

    PRIV_TYPE

    롤에 부여된 권한이 시스템 권한인지 객체 권한인지 알 수 있다. 'SYSTEM' 은 시스템 권한이며 'OBJECT'는 객체 권한이다.
    OBJECT_NAMEPRIV_TYPE이 OBJECT인 경우 객체 이름을 출력한다. 객체소유자.객체이름 형식으로 보여준다.
    OBJECT_TYPEPRIV_TYPE이 OBJECT인 경우 객체 종류를 출력한다.
    PRIV_NAME권한 이름
    WITH_GRANT_OPTIONPRIV_TYPE이 OBJECT인 경우 객체 권한을 부여 받은 사용자가 다른 사용자에게도 해당 권한을 부여할 수 있는지를 의미한다.

     

     

[PV04] 롤(Role)을 부여받은 사용자 정보 
Anchor
PV04
PV04
[맨 위로]

  • 롤이 누구에게 부여되었고 누가 롤을 부여했는지 확인할 수 있다. 

    Code Block
    titleAltibase v6.5.1 이상
    themeDJango
    languagesql
    SELECT U1.USER_NAME GRANTEE
         , U2.USER_NAME GRANTOR
         , RU.USER_NAME ROLE_NAME
      FROM SYSTEM_.SYS_USER_ROLES_ R
         , SYSTEM_.SYS_USERS_ RU
         , SYSTEM_.SYS_USERS_ U1
         , SYSTEM_.SYS_USERS_ U2     
     WHERE 1=1
       AND RU.USER_TYPE = 'R'
       AND R.ROLE_ID <> 0
       AND RU.USER_ID = R.ROLE_ID
       AND R.GRANTEE_ID = U1.USER_ID   
       AND R.GRANTOR_ID = U2.USER_ID
    ;
  • 주요 컬럼 설명

    GRANTEE

    롤을 부여받은 데이터베이스 사용자

    GRANTOR

    롤을 부여한 데이터베이스 사용자

    ROLE_NAME

    롤 이름

...

[PV05] 시스템 및 객체 권한 종류 
Anchor
PV05
PV05
[맨 위로]

  • Altibase에서 지원하는 시스템 권한과 객체 권한 목록을 보여준다. 

    Code Block
    titleAltibase v4.3.9 이상
    themeDJango
    languagesql
    SELECT DECODE(PRIV_TYPE, 1, 'OBJECT', 2, 'SYSTEM') PRIV_TYPE
         , PRIV_NAME 
      FROM SYSTEM_.SYS_PRIVILEGES_ 
     ORDER BY PRIV_TYPE, PRIV_NAME
    ;

...

[CT01] 전체 제약조건 목록 
Anchor
CT01
CT01
[맨 위로]

  • 데이터베이스 내에 생성된 모든 제약조건 목록을 보여준다.

  • 아래 쿼리는 Altibase v6.3.1 이상 버전에서 동작하며 주석 부분을 삭제하면 하위 버전에서도 사용할 수 있다.

    Code Block
    titleAltibase v6.3.1 이상
    themeDJango
    languagesql
    SELECT USER_NAME
         , TABLE_NAME OBJECT_NAME
         , DECODE(B.TABLE_TYPE, 'T', 'TABLE', 'Q', 'QUEUE', 'V', 'VIEW', 'SEQUENCE') OBJECT_TYPE
         , C.CONSTRAINT_NAME CONST_NAME
         , DECODE(C.CONSTRAINT_TYPE, 0, 'FOREIGN KEY', 
                                     1, 'NOT NULL', 
                                     2, 'UNIQUE', 
                                     3, 'PRIMARY KEY', 
                                     4, 'NULL', 
                                     5, 'TIMESTAMP', 
                                     6, 'LOCAL UNIQUE', 
                                     7, 'CHECK') CONST_TYPE
         , COLUMN_NAME
         , CHECK_CONDITION          -- Altibase v6.3.1 이전 버전에서는 삭제 후 사용
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_TABLES_ B
         , SYSTEM_.SYS_CONSTRAINTS_ C
         , SYSTEM_.SYS_COLUMNS_ D
         , SYSTEM_.SYS_CONSTRAINT_COLUMNS_ E
     WHERE A.USER_ID=C.USER_ID
       AND B.TABLE_ID = C.TABLE_ID
       AND A.USER_ID = D.USER_ID
       AND A.USER_ID = E.USER_ID
       AND B.TABLE_ID = D.TABLE_ID
       AND B.TABLE_ID = E.TABLE_ID
       AND C.CONSTRAINT_ID = E.CONSTRAINT_ID
       AND D.COLUMN_ID = E.COLUMN_ID
       AND A.USER_NAME <> 'SYSTEM_' 
     ORDER BY USER_NAME, OBJECT_NAME, CONST_TYPE
    ;

...

[CT02] PK, FK, UNIQUE 관련 제약조건 및 테이블, 인덱스 목록 
Anchor
CT02
CT02
[맨 위로]

  • Primary key, Foreign key, Unique 제약조건에 대한 정보를 보여준다.

    Code Block
    titleAltibase v4.3.9 이상
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , B.TABLE_NAME
         , DECODE(C.CONSTRAINT_TYPE, 0, 'FK', 2, 'UNIQUE', 3, 'PK', 4, 'NULL') CONST_TYPE
         , C.CONSTRAINT_NAME CONST_NAME
         , DECODE(D.INDEX_NAME, C.CONSTRAINT_NAME, NULL, INDEX_NAME) INDEX_NAME
         , (SELECT TABLE_NAME
              FROM SYSTEM_.SYS_TABLES_
             WHERE TABLE_ID = C.REFERENCED_TABLE_ID) R_TABLE
         , (SELECT INDEX_NAME
              FROM SYSTEM_.SYS_INDICES_
             WHERE INDEX_ID = C.REFERENCED_INDEX_ID) R_INDEX
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_TABLES_ B
         , SYSTEM_.SYS_CONSTRAINTS_ C LEFT OUTER JOIN SYSTEM_.SYS_INDICES_ D ON C.INDEX_ID = D.INDEX_ID
     WHERE C.TABLE_ID = B.TABLE_ID
       AND A.USER_NAME <> 'SYSTEM_'
       AND C.USER_ID = A.USER_ID
       AND C.CONSTRAINT_TYPE IN (3, 0, 2, 6) --PK, FK, UNIQUE, LOCAL UNIQUE 
     ORDER BY TABLE_NAME, CONST_TYPE
    ;

...

[CT03] 복합 인덱스 컬럼 구성 목록 
Anchor
CT03
CT03
[맨 위로]

  • 복한 인덱스 구성 정보를 보여준다.

    Code Block
    themeDJango
    languagesql
    SELECT D.USER_NAME
         , C.TABLE_NAME
         , B.INDEX_NAME
         , E.COLUMN_NAME
         , A.INDEX_COL_ORDER COL_ORDER
         , DECODE(A.SORT_ORDER, 'A', 'ASC', 'D', 'DESC') SORT
      FROM SYSTEM_.SYS_INDEX_COLUMNS_ A
         , SYSTEM_.SYS_INDICES_ B
         , SYSTEM_.SYS_TABLES_ C
         , SYSTEM_.SYS_USERS_ D
         , SYSTEM_.SYS_COLUMNS_ E
     WHERE D.USER_NAME <> 'SYSTEM_'
       AND C.TABLE_TYPE = 'T'
       AND A.INDEX_ID = B.INDEX_ID
       AND A.TABLE_ID = C.TABLE_ID
       AND A.USER_ID = D.USER_ID
       AND A.COLUMN_ID = E.COLUMN_ID
     ORDER BY USER_NAME, TABLE_NAME, INDEX_NAME, COL_ORDER
    ;

...

[CT04] 인덱스 정보 요약 
Anchor
CT04
CT04
[맨 위로]

  • 모든 인덱스 정보를 보여준다.

    Code Block
    themeDJango
    languagesql
    SELECT A.USER_NAME
         , C.INDEX_NAME
         , C.INDEX_ID
         , B.TABLE_NAME
         , NVL(D.NAME, 'SYS_TBS_MEMORY') TBS_NAME
         , C.IS_UNIQUE
         , C.COLUMN_CNT
      FROM SYSTEM_.SYS_USERS_ A
         , SYSTEM_.SYS_TABLES_ B
         , SYSTEM_.SYS_INDICES_ C LEFT OUTER JOIN V$TABLESPACES D ON C.TBS_ID = D.ID
     WHERE A.USER_NAME <> 'SYSTEM_'
       AND B.TABLE_TYPE = 'T'
       AND C.TABLE_ID = B.TABLE_ID
       AND C.USER_ID = A.USER_ID
     ORDER BY B.TABLE_NAME, C.INDEX_NAME
    ;

...

[RP01] 이중화 Sender 정보 
Anchor
RP01
RP01
[맨 위로]

  • 이중화 Sender 스레드에 대한 정보이다. 아래 쿼리는 Altibase v5 이상에서 사용할 수 있다.

    Code Block
    titleAltibase v5 버전 이상
    themeDJango
    languagesql
    SELECT REP_NAME
         , PEER_IP REMOTE_IP
         , PEER_PORT REMOTE_REP_PORT
         , DECODE(STATUS, 0, 'STOP', 1, 'RUN', 2, 'RETRY') AS STAUS
         , REPL_MODE                                                    -- Altibase v4 버전에서는 이 컬럼을 삭제한다. 
         , DECODE(NET_ERROR_FLAG, 0, 'OK', 'ERROR') AS NETWORK
         , XSN
      FROM V$REPSENDER
    ;
  • 주요 컬럼 설명

    REP_NAME이중화 객체의 이름.
    REMOTE_IP이중화 대상인 원격서버의 ip 주소
    REMOTE_REP_PORT이중화 대상인 원격서버의 이중화 포트번호로 원격서버의 프로퍼티에 의해 정해진다.
    STAUSSender의 현재 상태로 1 이어야 정상이다. / STOP(0), RUN(1), RETRY(2)
    REPL_MODESender의 현재 이중화 모드. Altibase v5 버전부터 지원하는 컬럼이다.
    NETWORKNetwork 에러 여부로 0이어야 정상이다. / OK(0), ERROR(1)
    XSNSender가 마지막으로 송신한 SN(Serial Number/리두로그일련번호)으로 v$repgap의 REP_SN과 동일하다.

...

[RP02] 이중화 Receiver 정보 
Anchor
RP02
RP02
[맨 위로]

  • 이중화 Receiver 스레드에 대한 정보이다. 아래 쿼리는 Altibase v5 버전 이상에서 사용할 수 있다.

    Code Block
    titleAltibase v4 버전 이상
    themeDJango
    languagesql
    SELECT REP_NAME
         , PEER_IP REMOTE_IP
         , PEER_PORT REMOTE_REP_PORT
         , APPLY_XSN
      FROM V$REPRECEIVER
    ;
  • 주요 컬럼 설명

    REMOTE_IP이중화 주체인 원격서버의 IP 주소.
    REMOTE_REP_PORT이중화 주체인 원격서버의 Sender가 접속한 포트번호로 특별히 정해지지 않았기에 그때그때 다르다.
    APPLY_XSNReceiver가 현재 반영중인 원격서버의 SN.

...

[RP03] 이중화갭 
Anchor
RP03
RP03
[맨 위로]

  • 이중화 갭 정보를 확인하는 쿼리이다. 아래 쿼리는 Altibase v5.3.3 버전 이상에서 사용할 수 있다.

    Code Block
    titleAltibase v5.3.3 이상
    themeDJango
    languagesql
    SELECT REP_NAME
         , REP_SN
         , REP_LAST_SN
         , REP_GAP
         , READ_FILE_NO
         , START_FLAG        -- Altibase v5.3.3 이전 버전에서는 이 컬럼을 삭제 후 사용한다. 
      FROM V$REPGAP
    ;

...

[RP04] 이중화 전체 현황 
Anchor
RP04
RP04
[맨 위로]

  • 아래 쿼리는 Altibase v4 이상에서 사용할 수 있다.

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT A.REPLICATION_NAME REP_NAME
         , D.HOST_IP REMOTE_IP
         , NVL(TO_CHAR(E.REP_GAP), '-') AS REP_GAP
         , A.XSN RESTART_XSN
         , DECODE(B.PEER_PORT, NULL, 'OFF', 'ON') AS SENDER
         , DECODE(C.PEER_PORT, NULL, 'OFF', 'ON') AS RECEIVER
      FROM SYSTEM_.SYS_REPL_HOSTS_ D
         , SYSTEM_.SYS_REPLICATIONS_ A
           LEFT OUTER JOIN V$REPSENDER B ON A.REPLICATION_NAME = B.REP_NAME
           LEFT OUTER JOIN V$REPRECEIVER C ON A.REPLICATION_NAME = C.REP_NAME
           LEFT OUTER JOIN (SELECT REP_NAME, MAX(REP_GAP) REP_GAP
                              FROM V$REPGAP
                             GROUP BY REP_NAME) E ON A.REPLICATION_NAME = E.REP_NAME
     WHERE A.REPLICATION_NAME = D.REPLICATION_NAME
     ORDER BY REP_NAME
    ;

...

[RP05] 이중화를 수행하지 못해 누적된 리두로그 파일 측정 
Anchor
RP05
RP05
[맨 위로]

  • 아래 쿼리는 Altibase v5 이상 버전에서 사용할 수 있다.

    Code Block
    themeDJango
    languagesql
    SELECT CASE2((BUFFER_MIN_SN < READ_SN), 
                    'REP BUFFER '||ROUND((BUFFER_MAX_SN-READ_SN)/(BUFFER_MAX_SN-BUFFER_MIN_SN)*100, 2)||' % LEFT ', 
                    (SELECT TO_CHAR(CUR_WRITE_LF_NO - READ_FILE_NO) FROM V$LFG, V$REPGAP)
                ) LOGFILE_FOR_REP
      FROM V$REPLOGBUFFER
    ;

...

[RP06] 이중화 대상 테이블 목록 
Anchor
RP06
RP06
[맨 위로]

  • 이중화 객체에 등록된 테이블을 확인할 수 있다. 

    Code Block
    titleAltibase v4 이상
    themeDJango
    languagesql
    SELECT REPLICATION_NAME REP_NAME
         , LOCAL_USER_NAME||'.'||LOCAL_TABLE_NAME LOCAL_TBL
         , REMOTE_USER_NAME||'.'||REMOTE_TABLE_NAME REMOTE_TBL
      FROM SYSTEM_.SYS_REPL_ITEMS_
     ORDER BY 1, 2
    ;

...