-
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를 다시 구축해야 되는 문제가 생기게 된다
필자는 진짜로 이런일이 생겨 인덱스 재구성 하는 것을 진행 해주었다
실제로 연습하는 것은 상관이 없지만, 문제가 생길 수 있으니 운영 서버이면
꼭 작업을 멈춘다음에 진행하자
인덱스 재구성 하는것은 이 포스팅에서 참고 하자반응형'데이터 엔지니어링 > SQL' 카테고리의 다른 글
Oracle UPDATE 문 사용법과 다양한 예제 모음 (0) 2024.11.14 [Oracle] 오류 해결 ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다. (0) 2021.02.24 DDL, DML, DCL 이란? (0) 2019.09.21 데이터 베이스 기초 (0) 2019.09.21