로그파일 트랜잭션 오류 해결 방법 모음
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)
'IT > SQLD' 카테고리의 다른 글
[MSSQL] 트랜잭션(Transaction) (0) | 2023.10.23 |
---|---|
MSSQL 대량 데이터 삭제 요령 (0) | 2023.10.23 |
mssql transaction log 파일 강제 삭제 (0) | 2023.10.23 |
[MSSQL] 트랜잭션 로그파일 삭제 및 잘라내기 (0) | 2023.10.23 |
[MSSQL] 트랜잭션 로그 보기 (0) | 2023.10.23 |