트랜잭션 로그 여유 공간 모니터링
- Version : SQL Server 2005, 2008, 2008R2, 2012
SQL Server에서 발생하는 트랜잭션은 모두 트랜잭션 로그에 기록된다. 간혹 트랜잭션 로그 공간이 가득 차서 데이터베이스 운영에 문제가 발생하는 경우가 있다.
다음 스크립트를 사용하여 주기적으로 트랜잭션 로그 공간을 모니터링 하여 안정적인 운영을 할 수 있도록 하자.
SELECT name , db.log_reuse_wait_desc , ls.cntr_value AS size_kb , lu.cntr_value AS used_kb , CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) AS used_percent , CASE WHEN CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) > .5 THEN CASE /* tempdb special monitoring */ WHEN db.name = 'tempdb' AND log_reuse_wait_desc NOT IN ('CHECKPOINT', 'NOTHING') THEN 'WARNING' /* all other databases, monitor foor the 50% fill case */ WHEN db.name <> 'tempdb' THEN 'WARNING' ELSE 'OK' END ELSE 'OK' END AS log_status FROM sys.databases db JOIN sys.dm_os_performance_counters lu ON db.name = lu.instance_name JOIN sys.dm_os_performance_counters ls ON db.name = ls.instance_name WHERE lu.counter_name LIKE 'Log File(s) Used Size (KB)%' AND ls.counter_name LIKE 'Log File(s) Size (KB)%' |
현재 스크립트에서는 사용률 50% 한도는 체크하고 있다. 다음 구문에서 사용자 요구사항을 수정하여 사용한다.
CASE WHEN CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) > .5 THEN |
[참고자료]
2013-12-12 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 에디션 다운그레이드와 제한된 기능 확인 (0) | 2015.07.23 |
---|---|
Downgrade from SQL Server Ent to Std Edition (0) | 2015.07.23 |
SQL Server가 서비스 격리를 처리하는 방법 (0) | 2015.07.23 |
쿼리 매개변수화 확인하기 (0) | 2015.07.23 |
SQL Server에서 Drop 및 Delete 사용자 찾기 (0) | 2015.07.23 |