🧰 [DB] SQL Server(MS-SQL) 운영 - DBCC 명령어 정리
🛠️ DBCC란 무엇인가요?
DBCC(Database Console Commands)는 데이터베이스의 상태를 점검하고, 유지보수하며, 관리 작업을 수행하는 데 사용되는 매우 강력한 명령어 세트입니다.
DBCC는 크게 네 가지 카테고리로 나뉩니다.
- 유지관리(Maintenance): 인덱스 재구성, 파일 크기 조정 등.
- 유효성 검사(Validation): 데이터베이스의 물리적/논리적 무결성 확인.
- 정보 제공(Informational): 성능 통계 및 설정값 확인.
- 기타(Miscellaneous): 추적 플래그 설정 등 특수 작업.
DBCC 명령어 실행을 통해 무결성 / 로그 스페이스 / 실행 중인 트랜잭션 / Shink 를 통한 로그 정리 등을 가능합니다.
🏆 IT 운영팀 필수 DBCC 명령어 Top 10
1. DBCC CHECKDB (무결성 점검)
가장 중요한 명령어입니다. DB 내 모든 개체의 논리적, 물리적 무결성을 검사합니다.
- 언제 쓰나요? 정기 점검 시, 혹은 DB 복원 후 데이터에 이상이 없는지 확인할 때.
- 명령어: DBCC CHECKDB ('DB이름');
2. DBCC SQLPERF(LOGSPACE) (로그 공간 모니터링)
모든 데이터베이스의 트랜잭션 로그 파일 크기와 사용률을 한눈에 보여줍니다.
- 언제 쓰나요? LDF 파일이 가득 차서 서비스가 멈추는 것을 방지하기 위한 모니터링 용도.
- 명령어: DBCC SQLPERF(LOGSPACE);
3. DBCC OPENTRAN (활성 트랜잭션 확인)
특정 DB에서 가장 오래된 활성 트랜잭션을 찾아줍니다.
- 언제 쓰나요? 로그 파일이 줄어들지 않거나, 특정 세션이 락(Lock)을 잡고 해제하지 않을 때 원인을 찾기 위해 사용합니다.
- 명령어: DBCC OPENTRAN ('DB이름');
4. DBCC SHRINKFILE (로그 파일 크기 줄이기)
비대해진 로그 파일(.ldf)의 물리적 크기를 줄여 디스크 공간을 확보합니다.
⚠️ 주의: 데이터 파일(.mdf)을 줄이는 것은 성능 저하(단편화)를 유발하므로 권장하지 않으며, 로그 파일 위주로 사용하세요.
- 명령어: DBCC SHRINKFILE (로그파일명, 목표용량MB);
5. DBCC INPUTBUFFER (실행 쿼리 확인)
특정 세션(SPID)이 현재 실행 중인 쿼리가 무엇인지 확인합니다.
- 언제 쓰나요? CPU 점유율이 높은 프로세스가 정확히 어떤 쿼리를 돌리는지 잡고 싶을 때.
- 명령어: DBCC INPUTBUFFER (SPID번호);
6. DBCC FREEPROCCACHE (실행 계획 캐시 삭제)
SQL Server가 저장하고 있는 쿼리 실행 계획 캐시를 강제로 비웁니다.
- 언제 쓰나요? 특정 쿼리가 잘못된 실행 계획을 잡고 성능이 급락했을 때 긴급 조치로 사용합니다. (전체 서버 성능에 일시적 부하를 줄 수 있으니 주의!)
- 명령어: DBCC FREEPROCCACHE;
7. DBCC USEROPTIONS (세션 설정 확인)
현재 연결된 세션의 설정(격리 수준, 날짜 형식 등)을 확인합니다.
- 언제 쓰나요? 애플리케이션 연결 설정이 의도한 대로(예: Read Committed) 되어있는지 확인할 때.
- 명령어: DBCC USEROPTIONS;
8. DBCC SHOW_STATISTICS (통계 정보 상세 확인)
인덱스나 테이블의 통계 정보가 얼마나 최신인지, 데이터 분포는 어떤지 상세히 보여줍니다.
- 언제 쓰나요? 인덱스는 있는데 쿼리가 느릴 때, 통계 정보가 꼬였는지 확인하기 위해 사용합니다.
- 명령어: DBCC SHOW_STATISTICS ('테이블명', '인덱스명');
9. DBCC CLEANTABLE (삭제된 데이터 공간 반환)
가변 길이 컬럼(varchar, text 등)에서 데이터를 대량 삭제한 후, 즉시 공간을 반환하게 합니다.
- 언제 쓰나요? 대규모 데이터 삭제(Delete) 후 디스크 공간이 즉시 확보되지 않을 때 강제로 실행합니다.
- 명령어: DBCC CLEANTABLE ('DB이름', '테이블명');
10. DBCC DROPCLEANBUFFERS (메모리 버퍼 비우기)
메모리에 캐시된 데이터 페이지를 모두 삭제합니다.
- 언제 쓰나요? 튜닝 작업 시, 메모리 효과를 배제한 "최악의 성능(Cold Start)"을 테스트하고 싶을 때 사용합니다. (운영 서버에서는 절대 금물!)
- 명령어: DBCC DROPCLEANBUFFERS;
💡 운영팀을 위한 Tip
- 자동화: DBCC CHECKDB는 가급적 사용자가 적은 새벽 시간에 유지관리 계획(Maintenance Plan)으로 자동화해 두는 것이 좋습니다.
- DMV와의 병행: 최근 MS는 DBCC 대신 sys.dm_exec_input_buffer 같은 DMV(동적 관리 뷰) 사용을 권장하고 있습니다. DBCC가 손에 익으셨다면 서서히 DMV도 함께 공부해보시는 걸 추천드려요.
- DMV 동적 관리뷰에 대해서도 정리하도록 하겠습니다.
DBCC 명령어 요약
| 목적 | 명령어 |
| 로그 상태 | DBCC SQLPERF |
| 가장 오래된 활성 트랜잭션 검사 | DBCC OPENTRAN |
| 무결성 검사 | DBCC CHECKDB |
| 파일 줄이기 | DBCC SHRINKFILE |
| 캐시 초기화 | DBCC FREEPROCCACHE |
'프로그래밍' 카테고리의 다른 글
| [APM] Scouter , 스카우터란 무엇인가? (서버 및 Java 설치) (0) | 2026.01.23 |
|---|---|
| 인프런 서바이벌 챌린지 완벽 분석! - 공부하면서 돈벌기 (0) | 2026.01.21 |
| [Python] 프로그래머스 큰 수 만들기 (0) | 2025.12.31 |
| 🐍 파이썬 코딩테스트 입문 문법 정리 (초보자용) (0) | 2025.12.15 |
| 🏷 아파치(Apache)와 톰캣(Tomcat)의 차이, 구성 방식 (0) | 2025.12.10 |
