본문 바로가기

CS/DataBase

(ISSUE) 개발 DB가 풀 찼었네...


업무 중에 과거 데이터를 복구하는 작업이 있었다.

자그마치 16년도 부터 18년도 까지의 작업이력을 복구하는 작업이었다.


SQL 로더를 사용해 백업서버의 데이터를 개발 디비로 끌어오는 도중...

어느순간부터 카운트가 올라가지 않는 현상이 발생하였다.


처음에 나는 CTL 과 DAT 파일 과의 컬럼이 안맞나...?

라고 생각하였지만 마침 추가된 컬럼이 있었지만 NOTNULL이기에 상관이 없었다.


고심끝에 선임 개발자 분께 물어본결과

"용량 풀찬거 아니야?" 라는 답변을 들었다.


확인을 해보니 현재 사용률이 100%로 이더라...


디비 사용률이 100% 일지는 정말로 몰랐다.. 이걸 내눈으로 확인하다니!!!


다음부터는 데이터가 들어가지 않을때 우선적으로 현재 용량을 확인해보자~!



[용량확인쿼리]


 SELECT

    DECODE(GROUPING(TABLESPACE_NAME), 1, 'TOTAL', TABLESPACE_NAME) AS TABLESPACE_NAME

    , SUM(TOTAL_MB) AS "TOTAL(GB)"

    , SUM(USED_MB) AS "USED(GB)"

    , SUM(FREE_MB) AS "FREE(GB)"

    , ROUND(SUM(USED_MB) / SUM(TOTAL_MB) * 100, 2)  AS "USAGE"

FROM (

        SELECT

            SUBSTR(TABLESPACE_NAME, 1, 30) AS TABLESPACE_NAME

            , ROUND(SUM(TOTAL) / 1024 / 1024 /1024) AS TOTAL_MB

            , ROUND(SUM(TOTAL) / 1024 / 1024 /1024) - ROUND(SUM(SUM_BYTES) / 1024 / 1024 /1024) AS USED_MB

            , ROUND(SUM(SUM_BYTES) / 1024 / 1024/ 1024) AS FREE_MB

        FROM (

                SELECT

                    TABLESPACE_NAME

                    , 0 AS TOTAL

                    , SUM(BYTES) AS SUM_BYTES

                FROM DBA_FREE_SPACE

                GROUP BY TABLESPACE_NAME

                UNION

                SELECT

                    TABLESPACE_NAME

                    , SUM(BYTES) AS TOTAL

                    , 0 AS SUM_BYTES

                FROM DBA_DATA_FILES

                GROUP BY TABLESPACE_NAME

            )

        GROUP BY TABLESPACE_NAME

)

GROUP BY ROLLUP (TABLESPACE_NAME)

ORDER BY TABLESPACE_NAME;



'CS > DataBase' 카테고리의 다른 글

(ORACLE) PARTITION BY 의 활용  (0) 2019.12.04
(ORACLE) 다중 LIKE 검색  (0) 2019.12.03
(ORACLE) 캐시와 공유 메모리  (0) 2019.11.26
(ORACLE) 오라클의 여러 프로세스  (0) 2019.11.26
(ORACLE) I/O 와 디스크 관계  (0) 2019.11.26