서버관리자나, DBA는 주기적인 서버 모니터링을 통해서 서버가 항상 청청한 상태로 운영되도록 하기 위한 모니터링이 필요하다.
xp_fixeddrives 는 DBA를 위한 프로시져로 비공식 프로시져 이다. xp_fixeddrives 이미 여러 전문가들에 의해서 소개된바 있다.
SQL Server 에는 다음과 같은 비공식 프로시져들이 존재한다. (*여기서 비공식이란 온라인도움말 문서화에 포함되지 않는 프로시져를 말한다)
xp_dirtree
xp_enum_oledb_providers
xp_enumcodepages
xp_enumdsn
xp_enumerrorlogs
xp_enumgroups
xp_fileexist
xp_fixeddrives
xp_getnetname
xp_readerrorlog
xp_regdeletekey
xp_regdeletevalue
xp_regread
xp_regwrite
xp_subdirs
(예제: http://www.mssqlcity.com/Articles/Undoc/UndocExtSP.htm )
물론 디스크 여유공간 모니터링에 대한 방법은 사버 운영자의 운영기법에 따라서 여러가지가 존재할수 있다. 필자의 경우는 Windows 관리 인터페이스인 WMI를 권장한다.
참고 : WMI : 디스크 사용량 모니터링 Vbscript
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=221
실제 예제 쿼리를 보도록 하자. 아주 간단한 코드이므로 쉽게 이해할 수 있는 코드이다.
create table #FreeSpace(
Drive char(1),
MB_Free int)
insert into #FreeSpace exec xp_fixeddrives
select @MB_Free = MB_Free from #FreeSpace where Drive = 'C'
-- Free Space on C drive Less than Threshold
if @MB_Free < 1024
exec master.dbo.xp_sendmail
@recipients ='webmaster@serverinfo.pe.kr',
@subject ='C Drive 여유공간 임계치 이하',
@message = 'Free space on C Drive
has dropped below 1 gig'
select @MB_Free = MB_Free from #FreeSpace where Drive = 'F'
-- Free Space on F drive Less than Threshold
if @MB_Free < 2048
exec master.dbo.xp_sendmail
@recipients ='webmaster@serverinfo.pe.kr',
@subject ='F 드라이브 여유공간 임계치 이하',
@message = 'Free space on F Drive
has dropped below 2 gig'
위 쿼리는, 디스크 여유공간을 임시로 저장할 임시테이블 #FreeSpace 를 생성후 xp_fixeddrives 를 통해서 반환된 결과 레코드를 넣는 방법이다.
예제에서는, C 및 F 드라이브를 각각 모니터링하는데 지정된 용량 이하인 경우 xp_sendmail 프로시져를 통해서 메일을 보낸는 방법이다.
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=101 를 이용해 보는 것도 좋은 방법이다.
위 쿼리를 Sql Agent 스케쥴러에 등록을 해서 매일 또는 매주 실행하도록 해놓으면 좋은 모니터링 방법이 될것이다.
다음 웹페이지에 소개된 쿼리문도 참고해 보기 바란다. 위 쿼리문보다 훨씬더 자세한 정보를 기록하는 쿼리문으로 위의 경우 디스크 여유공간만 확인하는데 다음 쿼리는 전체 공간 및 GB 단위 변경코드도 추가되어 있다.
http://www.sqldbtools.com/Scripts/xp_FixedDrivesWrapper.sql
http://www.sql-server-performance.com/tp_centralized_sql_server_monitoring_b.asp
댓글 없음:
댓글 쓰기