콘텐츠로 이동

상황별 자주 쓰는 SQL

Ctrl + F로 키워드 검색

테이블스페이스 정보 간단 확인

SELECT
    A.TABLESPACE_NAME                           AS "TABLESPACE NAME",
    A.FILE_NAME                                 AS "DIRECTORY",
    (A.BYTES - B.FREE)                          AS "USED",
    B.FREE                                      AS "FREE",
    A.BYTES                                     AS "TOTAL",
    TO_CHAR((B.FREE / A.BYTES * 100), '999.99') AS "FREE PERCENTAGE", 
    A.AUTOEXTENSIBLE                            AS "EXTEND"
FROM (
    SELECT FILE_ID, TABLESPACE_NAME, FILE_NAME, SUM(BYTES) AS "BYTES", AUTOEXTENSIBLE
    FROM DBA_DATA_FILES
    GROUP BY FILE_ID, TABLESPACE_NAME, FILE_NAME, AUTOEXTENSIBLE
) A, (
    SELECT TABLESPACE_NAME, FILE_ID, SUM(NVL(BYTES,0)) AS "FREE"
    FROM DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME, FILE_ID
) B
WHERE
    A.TABLESPACE_NAME = B.TABLESPACE_NAME
    AND A.FILE_ID = B.FILE_ID
ORDER BY A.TABLESPACE_NAME;


테이블 정보 간단 확인

--ALL_TABLES로 확인
SELECT
    TABLE_NAME                                       AS "TABLE NAME",
    NUM_ROWS                                         AS "ROWS",
    ROUND((NUM_ROWS * AVG_ROW_LEN / 1024 / 1024), 2) AS "MB"
FROM
    ALL_TABLES
WHERE
    OWNER IN ('owner_name1','owner_name2'...)
    AND TABLE_NAME IN ('table_name1','table_name2'...);

--DBA_SEGMENTS로 확인
SELECT
    OWNER, SEGMENT_NAME, SEGMENT_TYPE, BYTES / 1024 / 1024 AS "MB"
FROM
    DBA_SEGMENTS
WHERE
    OWNER = 'owner_name'
    AND SEGMENT_NAME = 'table_name'
    AND SEGMENT_TYPE = 'TABLE';


락 정보 간단 확인

--락이 걸린 오브젝트 확인
SELECT A.OBJECT_NAME, A.OBJECT_TYPE, V.*
FROM V$LOCKED_OBJECT V, ALL_OBJECTS A
WHERE V.OBJECT_ID = A.OBJECT_ID

--락 걸린 세션 확인
SELECT S.SID, S.SERIAL#, A.OBJECT_NAME
FROM V$SESSION S, V$LOCK L, ALL_OBJECTS A
WHERE
    S.SID = L.SID
    AND L.ID1 = A.OBJECT_ID
    AND L.TYPE = 'TM';

--해당 세션 강제 끊기
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';