IT/SQLD

MSSQL 로그파일 트랜잭션 내용 정리 (오류 해결 :트랜잭션 로그가 꽉 찼습니다.)

알콩달콩아빠 2023. 10. 23. 10:32
728x90
반응형

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

 


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를 다시 구축해야 되는 문제가 생기게 된다 

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

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

 

출처 : MSSQL 로그파일 트랜잭션 내용 정리 (오류 해결 :트랜잭션 로그가 꽉 찼습니다.) :: 까치의 일상노트 (tistory.com)

728x90
반응형