SQL Server/SQL Server Tip 662

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..

Online restore

Online restore 온라인 복원? 데이터 베이스가 온라인 상태에서 복원을 하는 것을 뜻한다. SQL Server 2005 Enterprise 이상 버전에서 지원한다. 대용량 데이터베이스에서는 파일 그룹을 나누어 사용하는 경우가 많다. 백업 단위 또한 매우 클 것이다. 만약 데이터베이스 장애가 발생하여 복원 할 일이 생겼다. 이 때 모든 데이터가 PRIMARY 그룹에만 있다면 어떻게 될까? 데이터베이스는 PRIMARY그룹을 복원하느라 많은 시간이 걸릴 것이다. 하지만 파일 그룹이 나누어져 있다면 PRIMARY 먼저 복원하고 부분적으로 필요에 따라 우선순위를 정하여 파일 그룹을 복원하여 사용하자. 데이터베이스 복원 시 PRIMARY 그룹만 복원되어도 온라인 상태가 되는 것을 확인 할 수 있다. --K..

SQL Server User Connection

SQL Server User Connection SQL Server에서 User_Connections 할당과 할당된 User_Connections 만료되면 어떻게 될까? SQL Server 에러 로그에는 어떤 내용이 기록되는지 확인 하자. 준비사항. 1. 테스트를 위하여 간단히 C#을 이용해서 프로그램을 개발. A. 충분한 커넥션 할당을 위하여 배열 20000개 생성. B. 성능 모니터를 통한 User Connection 확인. C. DMV를 이용한 커넥션 확인. select * from sys.dm_exec_connections go 2. 현재의 user_connections 커넥션 설정 확인. - 최대 32767개 까지 가능 sp_configure 'show advanced options', 1 re..

SQL Server 32bit Memory limit on Windows Server 2008R2 64bit

SQL Server 32bit Memory limit on Windows Server 2008R2 64bit Windows Server 64bit에서 SQL Server 2005 32bit를 설치 하였을 때 AWE를통하여 4GB 이상 메모리를 사용할 수 있을까? 결론은 가능하다! AWE는 32bit에서 USER 모드의 물리적 메모리 주소 공간을 3GB 이상 사용해야 하는환경에서 사용하던 옵션이다. 64bit로 넘어오면서 사용할 수 있는 물리적 메모리 주소공간이 증가하면서 AWE옵션은 사실상 불필요해 졌다. X64 8TB IA64 7TB 그래서 64bit의 SQLServer는 옵션에 AWE옵션이 존재하지만 설정을 해도 자동으로 무시가 된다. 32bit에서는 AWE를사용하는 환경에서 활성화 할 수 있는 옵션..

PAE, 4GT, AWE 정리

SQL Server DBA (SQL Server Technical Assistance Group) 작성일자(2011년, 09월, 13일) 문서등급(일반) 문서 정보문서 정보 SQL TAG 에서 발간하는 Microsoft SQL Server DBA를 위한 책이다. 우리는 완벽하지 않기 때문에 내용 중 일부는 틀릴 수 있고, 그런 내용은 SQLTAG.ORG를 통해 피드백 주길 바란다. 해당하는 내용은 리서치와 검증을 통해 빠르게 수정 될 수 있도록 하겠다. 연락처 SQLTAG (SQL Server Technical Assistance Group) http://www.sqltag.org 문서 히스토리 버전 일자이력사항 작성자승인자1.02012.01.31최초작성 강성욱 ..... 저작권 Copyright 201..