2010년 6월 3일 목요일

DBCC SqlPerf Command

Monitoring SQL 2005 Performance Statistics With The DBCC SqlPerf Command

The SqlPerf Database Consistency Check (DBCC) command most of which is undocumented with the exception of the LogSpace option in the SQL Books On Line (BOL) can be used to monitor the performance statistics of your SQL 2005 database.

Here you will find brief descriptions and examples of each of the DBCC SqlPerf Commands to use on your SQL 2005 server.

DBCC SqlPerf (LogSpace)

The LogSpace option retrieves information about the transaction logs for all of the databases on the server and it writes the following: Database Name, Log Size (MB), Log Space Used (%) and Status.

Example: Exec ('DBCC SqlPerf (logspace)')

DBCC SqlPerf (UmsStats)

The UmsStats option retrieves information for your threads and it writes the following: Statistic and Value which includes statistic information on the following: Scheduler ID, Num users, Num runnable, Num workers, Idle workers, Work queued, Cntxt switches, Cntxt switches(idle), cheduler ID, Num users, Num runnable, Num workers, Idle workers, Work queued, Cntxt switches, Cntxt switches(idle), Scheduler Switches

and Total Work

Example: Exec ('DBCC SqlPerf (UmsStats)')

DBCC SqlPerf (WaitStats)

The WaitStats option retrieves information for the servers resources wait types and it writes the following: Wait Type, Requests, Wait Time and Signal Wait Time

Example: Exec ('DBCC SqlPerf (WaitStats)')

DBCC SqlPerf (IoStats)

The IoStats option retrieves information about your server’s outstanding reads and writes and it writes the following: Statistic and Value which includes statistic information on the following: Reads Outstanding and Writes Outstanding.

Example: Exec ('DBCC SqlPerf (IoStats)')

DBCC SqlPerf (RaStats)

The RaStats option retrieves information about your servers read-ahead statistics and it writes the following: Statistic and Value which includes information on the following: RA Pages Found in Cache, RA Pages Placed in Cache, RA Physical IO and Used Slots

Example: Exec ('DBCC SqlPerf (RaStats)')

DBCC SqlPerf (Threads)

The Treads option retrieves information for the server’s currently running threads and writes and it writes the following: Spid, Thread ID, Status, LoginName, IO, CPU and MemUsage

Example: Exec ('DBCC SqlPerf (Threads)')

ETC : DBCC SqlPerf(spinlockstats)

DBCC SqlPerf(netstats)

2010년 6월 2일 수요일

DBA가 주기적으로 수행해야 하는 작업

DBA가 주기적으로 수행해야 하는 작업
시스템에 따라 차이가 있을 수 있지만, DBA는 시스템 유지를 위하여 일반적으로 수행해야 하는 작업들에 대하여 이해하고 있어야 하며, 다음과 같은 작업들을 주기적으로 수행해야 합니다.

■ 일 단위로 수행해야 하는 작업
표준화는 관리에 있어서 매우 중요한 요소입니다. 자신의 시스템에 가장 적합한 표준화체계를 수립하고, 전체 시스템에 대하여 표준화된 관리 체계를 적용하여 관리해야 합니다.
다중의 DB 서버를 관리하는 경우에는 표준화가 특히 중요합니다.

• 시작되어야 할 서비스들이 제대로 시작되어 있는지 확인합니다.
• Windows NT 또는 Windows 2000의 이벤트 뷰어를 사용하여 오류 발생 여부를 점검
합니다.
• SQL Server 오류 로그에 오류 메시지가 기록되어 있는지 점검합니다. 자세한 내용은
[SQL Server 오류 로그 보기]를 참조하십시오.
• 데이터베이스 파일과 로그 파일의 확장에 대비하여 디스크에 충분한 여유 공간이 있
는지 확인합니다.
• 데이터베이스 파일과 로그 파일의 크기와 실제로 사용되는 공간을 모니터링하며, 공
간 부족으로 자동 확장이 예상되는 경우에는 미리 파일을 확장하여 충분한 공간을 확
보합니다.
• SQL Server 작업(Job)의 성공/실패 여부를 점검합니다.
• 매일 데이터베이스 전체 백업 또는 차등 백업을 수행하기로 되어 있는 경우라면, 데이
터베이스 전체 백업을 수행합니다. 자동화되어 있는 경우에는 백업이 성공적으로 수
행되었는지 점검합니다. 데이터베이스 전체/차등 백업 주기는 시스템 여건과 복원 전
략에 따라 달라집니다.
• SQL Server 트랜잭션 로그를 백업 받습니다. 자동화되어 있는 경우에는 백업이 성공
적으로 수행되었는지 점검합니다. 백업 주기는 시스템 여건에 따라 분 단위, 시간 단
위, 일 단위로 달라질 수 있으며, 트랜잭션 백업 주기에 따라 트랜잭션 로그 파일의 적
정 크기가 달라집니다. 참고로 복원이 불필요한 테스트 DB에 대해서는 복구 모델을
단순으로 설정하면 트랜잭션 로그에 대한 주기적인 관리를 줄일 수 있습니다.
• Master, model, msdb, 배포(distribution) 데이터베이스도 변경 사항이 있으면 주기적
으로 백업해야 합니다. 시스템 카탈로그의 변경이 이루어진 후에는 master 데이터베
이스의 전체 백업을 수행합니다. 경고, 작업(Job), 운영자, 로그 전달(log-shipping),
복제, DTS 패키지 등에 변경이 발생한 다음에는 msdb를 백업해야 합니다. Model 데이
터베이스에 변경작업을 수행한 다음에는 model을 백업해야 합니다.
• 시스템 모니터를 사용하여 성능 카운터를 모니터링함으로써, 적절한 성능이 유지되고
있는지 점검합니다. 최소한 시스템 모니터에서 프로세서, 메모리, 디스크(I/O), 네트워
크에 대한 카운터들은 필수로 점검해야 합니다. 문제 발생 시 또는 추가적인 분석이
필요한 경우에는 관련 성능 카운터들을 추가로 분석합니다.
• 복구 모델이 전체 복구가 아니라면, 최소 로깅 작업(Minimal-logged operation)을 수행
한 다음에는 차등 백업을 수행합니다.
블로킹, 교착상태(Deadlock)의 발생 여부를 점검합니다.
• 오래 수행되는 쿼리 또는 리소스를 과다하게 사용하는 쿼리가 있는지 점검합니다.
문제가 발생하면 문제 해결을 위한 활동을 수행하며, 문제 분석 및 해결 과정에 대한
내용을 가능한 한 상세하게 문서화합니다.
• 통계 자동 갱신(Auto update statistics) 옵션이 비활성화되어 있는 데이터베이스의 테
이블들에 대해서는 주기적으로 (예:매일, 매주) UPDATE STATISTICS 작업을 수행합니다.


■ 주간 단위로 수행해야 하는 작업

• 모든 시스템 데이터베이스와 운영중인 사용자 데이터베이스에 대한 전체/차등 데이
터베이스 백업을 수행합니다.
• 통계 자동 갱신(Auto update statistics) 옵션이 비활성화되어 있는 데이터베이스의
테이블들에 대해서 UPDATE STATISTICS를 매일 또는 매주 수행합니다.
• 인덱스의 조각화를 제거합니다. CREATE INDEX WITH DROP_EXISTING 또는 DBCC
DBREINDEX를 수행하여 인덱스를 재구성함으로써 물리적, 논리적 조각화를 제거할 수
있으며, DBCC INDEXDEFRAG를 사용하면 논리적인 조각화를 제거할 수 있습니다. 자세한
내용은 온라인 설명서를 참조하십시오.
• 대형 일괄 처리의 작업 등으로 인하여 로그 파일이 과다하게 확장된 경우에는 로그
파일의 사용되지 않는 여분의 공간을 제거합니다.


■ 월간 단위로 수행해야 하는 작업

• 전체 운영 체제를 백업합니다.
• 최소 월 1회 모든 시스템 데이터베이스와 운영 데이터베이스에 대하여 전체 백업을
수행해야 합니다.
• DBCC CHECKDB를 수행하여 데이터베이스의 무결성을 점검합니다. DBCC
CHECKDB를 수행하면 서비스나 다른 작업에 영향을 미칠 수 있으므로, 테스트 장비
에 모든 시스템 데이터베이스와 운영 데이터베이스를 복원하고, 복원된 모든 시스템
데이터베이스와 운영 데이터베이스를 대상으로 DBCC CHECKDB를 수행하여 무결
성을 점검하는 것이 바람직합니다.
• Sqldiag.exe를 수행하고 결과를 저장합니다.
• 성능 데이터를 수집하여 시스템이 충족시켜야 하는 기준과 비교하여, 성능 향상 및 향
후의 용량 계획에 활용합니다.


[참고] 정확한 점검을 위해서는 모든 유지 관리 활동 작업에 대하여 로그를 저장하는 것 이 필요합니다. 데이터베이스 유지 관리 계획 마법사와 SQL Server 작업(Job)에서는 자동으로 작업 결과를 저장하도록 설정 가능합니다.