ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MSSQL 로그파일 트랜잭션 내용 정리 (오류 해결 :트랜잭션 로그가 꽉 찼습니다.)
    데이터 엔지니어링/SQL 2021. 2. 22. 18:00
    반응형

    로그파일 트랜잭션 오류 해결 방법 모음

     


    1. DB 의 현재 사용량 확인

       Use [ DB명]
       DBCC SQLPERF(LOGSPACE)
       로그스페이스  설정값에 대해 확인
       SP_HelpDB [DB명]
       실제 위치랑 사용량 확인 

    위에 쿼리 실행시 조회 위에 내용이 조회가 되게 됩니다.



    2. MDF (Database File) 파일 용량을 현재 사용량으로 축소

       Use [DB명]
       DBCC SHRINKDATABASE ([DB명], TRUNCATEONLY)


    3. MDF (Database File) 파일 용량을 200MB 로 축소

       Use [DB명]
       DBCC SHRINKDATABASE ([DB명], 200)



    4. LDF (Log File) 파일 용량을 현재 사용량으로 축소

       Use [DB명]
       DBCC SHRINKFILE ([DB명], TRUNCATEONLY)



    5. LDF (Log File) 파일 용량을 10MB 로 축소

       Use [DB명]
       DBCC SHRINKFILE ([DB명], 10)



    ----------SQL로 처리하는 방법(SQL 창을 사용하는 방법)

    -- 사용할 DB 선택
    USE DB이름

    -- 복구 모델을 SIMPLE 로 변경하면 트랙잭션 로그 파일을 비운다.
    ALTER DATABASE DB이름 SET RECOVERY SIMPLE;

    -- 데이터 베이스의 필요 없는 공간을 축소한다.
    DBCC shrinkdatabase(act_data);

    -- 복구 모델을 FULL 로 다시 변경해야 트랜잭션 로그가 쌓인다.
    ALTER DATABASE DB이름 SET RECOVERY FULL;

    축소할 DB 이름이  temp_db 라면.

    USE act_data;
    ALTER DATABASE temp_db SET RECOVERY SIMPLE;
    DBCC shrinkdatabase(temp_db);
    ALTER DATABASE temp_db SET RECOVERY FULL;

    이것을 실행한다 

    DBCC SQLPERF(LOGSPACE);
    그리고 다시 확인 



    위에 내용을 사용하여 db를 백업하고 다시 비워 주는 작업을 해주는 것인데 
    이것을 진행 할 떄 데이터 량이 작아야 한다 많으면 시간이 오래 걸리고 그 안에 
    무슨일이 생기면 다시 문제가 생길 수가 있기 때문이다.

    그래서 현업에서는 무조건 서버를 다 내리고 진행 하거나 
    작업을 멈춘다음 진행하게 상황을 만든 다음 진행하게 된다 
    다른 트랜잭션이나 로그가 싸이게 되면 문제가 될 수 있기 때문

    왜 문제가 생기냐면 위에 내용은 조각화를 한다음 다른 파일에 그 조각화 한 내용르 
    넘기고 다시 조각화를 맞춰 정상화 하는 작업을 하게 되는 프로세스 이므로 
    이 조각화 하는 중간에 로그가 싸이거나 중간에 중단해 버리면 인덱스나 
    프로시저 내용이 다 망가져 버려 db를 다시 구축해야 되는 문제가 생기게 된다 

    필자는 진짜로 이런일이 생겨 인덱스 재구성 하는 것을 진행 해주었다 
    실제로 연습하는 것은 상관이 없지만, 문제가 생길 수 있으니 운영 서버이면 
    꼭 작업을 멈춘다음에 진행하자 

    인덱스 재구성 하는것은 이 포스팅에서 참고 하자 

    반응형

    댓글

Designed by Tistory.