SQL Server 2008 에서 대용량 데이터베이스를 복구하는 데 발생하는 메모리 부족 오류!
-- Virtual Address 확인
추가적으로 701 오류 발생 시 덤프를 생성할 수 있도록 설정하는 DUMP TRIGGER 방법은 다음과 같습니다.
[참고자료]
오류: 701, 심각도: 17, 상태: 123.
There is insufficient system memory in resource pool 'internal' to run this query.
30만개가 넘는 VLF 를 가진 트랜잭션 로그가 포함된 데이터베이스를 복원하면서 발생하는 MemToLeave 공간 부족 이슈!
아무튼 MemToLeave 관련 이슈를 만났을 때, 우선 확인해 봐야 할 스크립트입니다. 예약된 작업에 추가하여 문제 발생 예상 시점에 SQL server process 내의 Max free block size 를 다음 쿼리를 통해 확인해 봅니다.
32bit SQL Server 환경에서 데이터베이스 복원 시, 쿼리 실패 이슈가 있어 정리해 봅니다.
30만개가 넘는 VLF 를 가진 트랜잭션 로그가 포함된 데이터베이스를 복원하면서 발생하는 MemToLeave 공간 부족 이슈!
아무튼 MemToLeave 관련 이슈를 만났을 때, 우선 확인해 봐야 할 스크립트입니다. 예약된 작업에 추가하여 문제 발생 예상 시점에 SQL server process 내의 Max free block size 를 다음 쿼리를 통해 확인해 봅니다.
32bit SQL Server 환경에서 데이터베이스 복원 시, 쿼리 실패 이슈가 있어 정리해 봅니다.
USE LAIGO
GO
-- 테이블 생성
CREATE TABLE TblVA (regdate datetime, total bigint, free bigint)
CREATE TABLE TblVA (regdate datetime, total bigint, free bigint)
-- Virtual Address 확인
With VASummary(Size,Reserved,Free) AS
(SELECT
Size = VaDump.Size,
Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
WHEN 0 THEN 0 ELSE 1 END),
Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
WHEN 0 THEN 1 ELSE 0 END)
FROM
(
SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
AS Size, region_allocation_base_address AS Base
FROM sys.dm_os_virtual_address_dump
WHERE region_allocation_base_address <> 0x0
GROUP BY region_allocation_base_address
UNION
SELECT CONVERT(VARBINARY, region_size_in_bytes), region_allocation_base_address
FROM sys.dm_os_virtual_address_dump
WHERE region_allocation_base_address = 0x0
)
AS VaDump
GROUP BY Size)
INSERT INTO TblVA
SELECT getdate(), SUM(CONVERT(BIGINT,Size)*Free)/1024 AS [Total avail mem, KB] ,CAST(MAX(Size) AS BIGINT)/1024 AS [Max free size, KB]
FROM VASummary
WHERE Free <> 0
추가적으로 701 오류 발생 시 덤프를 생성할 수 있도록 설정하는 DUMP TRIGGER 방법은 다음과 같습니다.
DBCC TRACEON(2551, 2546, -1)
DBCC DUMPTRIGGER ('set',701)
Get memory
http://technet.microsoft.com/en-us/library/2007.05.sqlqa.aspx
작성자 : Lai Go / 작성일자 : 2011.04.01
DBCC TRACEON (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms187329.aspx
Trace Flags (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms188396.aspx작성자 : Lai Go / 작성일자 : 2011.04.01