데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

트랜잭션 로그 여유 공간 모니터링

 

  • 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

 

 

[참고자료]

http://blogs.msdn.com/b/sqlcat/archive/2009/12/14/monitoring-free-space-in-tempdb-transaction-log.aspx

 

 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1804
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1282
1911 Memory Pressure jevida(강성욱) 2016.10.12 1123
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2478
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1565
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3108
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1314
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1308
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 1937
1904 SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2496
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 1794
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1575
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1238
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1690
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2125
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1347
» 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1358
1896 SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1145
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1435
1894 SQL Server에서 Drop 및 Delete 사용자 찾기 jevida(강성욱) 2016.10.12 1630





XE Login