분류 전체보기 1386

SQL Server를 활용한 Perfmon 로그 저장

SQL Server를 활용한 Perfmon 로그 저장 시스템의 성능을 분석하기 위하여 성능 모니터를 많이 사용하는데 이번에는 성능모니터의 로그를 SQL Server를 활용하여 테이블에 저장하여 사용하는 방법을 알아 보겠습니다. 성능 모니터 정보를 저장할 데이터베이스를 생성 합니다. 실습에서는 Perfmon 이라는 데이터베이스를 생성합니다. 이 때 데이터베이스의크기는 충분히 늘려줍니다. 운영을 하다 보면 생각보다 성능 카운터의 로그가 많이 쌓이는 것을 알 수있습니다. [시작] – [관리도구] – [데이터 원본(ODBC)]를 선택 합니다. [ODBC 데이터 원본 관리자]에서 [시스템 DSN]탭에서 [추가] 버튼을 클릭합니다. [SQL Server]를 선택 합니다. [SQL Server에 새로운 데이터 원본 ..

VLF 환경과 성능

VLF 환경과 성능 SQL Server에서 로그파일은 데이터 파일처럼 익스텐트로 구성되지 않고 가상 로그 파일(Virtual Log File 이하 VLF)로 구성되어 있습니다. VLF는 로그 파일의 크기에 따라 가변적으로 변하며 SQL Server에 의해 정해 집니다. VLF의 최소 단위는 256K이며 트랜잭션 로그가 가장 작은 512K일 때 두 개의 VLF가 생성 됩니다. 데이터베이스에 물리적인 로그 파일이 둘 이상 있으면 로그의 끝이 물리적 파일의 가상 로그 파일을 돌아 다시 첫 번째의 물리적인 파일의 첫 번째 가상로그 파일로 데이터를 기록 하게 됩니다. (가상로그 파일의 순서대로 순환 한다고 생각하면 됩니다.) 실습을 위하여 SSMS를 실행하여 다음과 같은 쿼리문을 이용하여 데이터베이스를 생성 합니..

Block 모니터링.

Block 모니터링. 데드락(DeadLock)에 관해서는 지난 아티클에서 알아 보았습니다. 데드락 관련 링크 : http://blog.naver.com/jevida/140164120810 이번에는 블로킹 모니터링을 하도록 하겠습니다. [SP_Lock]이라는 시스템 저장프로시저는 잠금과 관련된 정보를 제공합니다. 하지만 블로킹이 발생 하였을 때 블로킹 하는 프로세스와 블로킹 당하는 프로세스의 관계를 파악하기에는 불편함이 있습니다. Sysprocess 와 inpubuffer를 통하여 블로킹의 관계와 최근 수행된 이벤트 정보를 확인해 보도록 하겠습니다. BEGIN TRY DROP TABLE #TEMP END TRY BEGIN CATCH END CATCH GO BEGIN TRY DROP TABLE #TEMP2 ..

추적파일을 테이블로 로드하기

추적파일을 테이블로 로드하기 SQL Server Profier를 사용하여 저장된 추적파일을 테이블로 로드하는 방법을 알아 보겠습니다. Profiler를 통하여 추적파일을 저장 합니다. 추적파일을 Profier에서 로드하니 검색에 많이 불편합니다. 추적파일을테이블로 로드하여 쿼리문을 이용하여 필요한 정보를 조회 할 수 있습니다. SELECT IDENTITY(INT, 1,1) AS NUM, * INTO TBL_PROFILER FROM ::FN_TRACE_GETTABLE('D:\SSIS_TEST\DEADLOOCK.TRC', DEFAULT) GO SELECT top 10 * FROM TBL_PROFILER GO [구문] FN_TRACE_GETTABLE('FileName', number_files)  Filen..

DeadLock(교착상태) 모니터 하기 최근 들어 서비스에서 DeadLock(교착상태) 이슈가 자주 발생 하여 이번 아티클은 DeadLock을 모니터링 하는 방법에 대해서 알아 보도록 하겠습니다.. DeadLock(교착상태)? 한 태스크에서 잠근 리소스를 다른 태스크에서 잠그려고 하여 둘 이상의 태스크가 서로 영구적으로 차단하는 현상. (서로 맞물린 상태의 차단) 순환 교착(cycle DeadLock) : 서로 다른 개체를 차단할 때 발생 변환 교착(Conversion DeadLock) : 같은 대상에 대해 둘 이상의 세션이 동시에 잠금을 변경하려고 할 때 발생 교착 상태를 일으킬 수 있는 리소스 잠금 : 개체, 페이지, 행, 메타데이터, 응용 프로그램 등의 리소스에 대한 잠금을 획득하려고 대기 하는 경..

Tempdb 경합 (동시성 강화)

Tempdb 경합 (동시성 강화) Tempdb 데이터베이스를 많이 사용하면 SQL Server에서 페이지를 할당 하려고 할때 경합이 발생 할 수 있다.  --tempdb를 많이 사용하는 예 임시 테이블(로컬 또는 전역)을 반복해서 만들고 삭제 테이블 변수 CURSORS와 관련된 작업 테이블 ORDER BY GROUP BY HASH PLANS   -- 경합 확인 방법 SELECT * FROM SYS.SYSPROCESSES 시스템 테이블 출력에서 waitresource가 2:1:1(PFS 페이지)또는 2:1:3(SGAM 페이지)로 표시되며 경합 정도에 따라 SQL Server가 응답하지 않는것 처럼 나타날 수 있다. --원인 혼합 익스텐트에서 페이지 할당의 일환으로 SQL Server는 PFS(..

LOGON 트리거

LOGON 트리거 여러명이 DB에 작업을 할 경우 로그인에 대한 이력이 필요한 상황이 있습니다. 예를 들면..누가 언제 로그인을 했는지...감사목적으로 많이 이용합니다. 이때 LOGON트리거를 사용하여 특정 계정이 로그온 할때 이력을 기록하여 살펴 볼수 있습니다. http://msdn.microsoft.com/ko-kr/library/bb326598.aspx SA로 트리거를 해보았습니다. --트리거 생성 CREATE TRIGGER connection_limit_trigger ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON AS BEGIN IF ORIGINAL_LOGIN()= 'sa' AND (SELECT COUNT(*) FROM sys.dm_exec_sessions WHE..

스토리지 장애로 인한 DB복구 이야기

스토리지 장애로 인한 DB복구 이야기 안녕하세요. 스토리지 박스의 장애로 인하여 데이터 크래쉬 발생..데이터를 복구하기 까지의 과정을 정리하였습니다. 결론은...복구 실패!! 증상 : 서버에서 모든 SQLServer 호출 실패. 커넥션은 살아 있으나 데이터 처리가 불가능. SP_READERRRORLOG 결과823오류 발생 확인. (여기 까지만 해도 단순 디스크 불량인줄 알았음) 윈도우 이벤트 확인 결과 디스크 드라이브가 통째로 사라짐. 스토리지 박스의 장애로 인하여 드라이브 자체가 사라짐과 동시에 레이드 구성 초기화 되었음. 복구 전문업체에 의뢰하여 디스크 복구 진행. MDF와 LDF를 복구하여전달 받음. CHECKPRIMARYFILE 를 사용하여 데이터, 로그 이름 및 파일 위치 확인. SP_ATTAC..

저장 프로시저 실행 수, CPU 소모량, IO, Duration

저장 프로시저 실행 수, CPU 소모량, IO, Duration -- 1.저장프로시져별실행수뽑기 select db_name(st.dbid) DBName ,object_schema_name(st.objectid,dbid) SchemaName ,object_name(st.objectid,dbid) StoredProcedure ,sum(qs.execution_count) Execution_count from sys.dm_exec_cached_planscp join sys.dm_exec_query_stats qs on cp.plan_handle=qs.plan_handle cross apply sys.dm_exec_sql_text(cp.plan_handle)st where DB_Name(st.dbid) is no..