류짱:Beyond MySelf

MSSQL Failover Cluster의 TempDB를 로컬 디스크로 변경 하는 방법

서비스중인  SQL Server 2012R2  Failover Cluster의 TempDB를 로컬 디스크로 변경하는 작업을 위한 가이드를 공유해봅니다.
아래 작업을 진행한 배경은 요기(http://ryuchan.kr/525)서 확인 가능합니다.

[사전 작업]
- 각 노드에 SSD 디스크 추가
- 반드시 사전에 양쪽 노드의 동일 한 위치에 Tempdb가 위치할 폴더를 생성 합니다.
 
[ 작업 절차 ]
SSD 추가 작업이 완료 된 후 각 노드의 동일한 위치에 Tempdb폴더가 생성 되었다는 가정하에..

1. 현재 SQL 소유권을 가지고 있는 Node 확인
-> node2


2. SQL 서버의 소유권을 가지고 있는 서버로 로그온 후 sql management 실행  Tempdb 위치 확인

SELECT name, physical_name AS CurrentLocation 
FROM sys.master_files 
WHERE database_id = DB_ID(N'tempdb'); 
GO

현재 Tempdb는 클러스터 공유 디스크(E 드라이브)에 연결 되어 있음을 확인

3. Alter database 명령어를이용해서 Tempdb 위치 변경

USE master; 
GO 
ALTER DATABASE tempdb  
MODIFY FILE (NAME = tempdev, FILENAME = 'c:\sql\temp\tempdb.mdf'); 
GO 
ALTER DATABASE tempdb  
MODIFY FILE (NAME = templog, FILENAME = ' c:\sql\temp \templog.ldf'); 
GO 

위 커멘드를 실행하면 아래 빨간 네모 박스와 같은 경고메시지가 발생합니다.
tempdb가 클러스터 디스크에서 로컬 디스크로 변경 된다는 경고이므로 참고만 합니다.

4. SQL service 재 시작


5. Tempdb 위치 확인


SQL Failover Test
기존 Node 2에서 Node1로 Failover 가 정상적으로 완료 됨을 확인 할 수 있습니다. 물론 Failback도 잘 되었습니다.

[참고 자료]
Local Tempdb with SQL Server 2012R2 Failover Cluster #1
http://ryuchan.kr/525

Local Tempdb with SQL Server 2012R2 Failover Cluster #2
http://ryuchan.kr/526

Move System Databases
https://docs.microsoft.com/en-us/sql/relational-databases/databases/move-system-databases


감사합니다.


저작자 표시 비영리 변경 금지
신고

Comment 0

Local Tempdb with SQL Server 2012R2 Failove Cluster #2

각 노드에 Failover Cluster가 구성 되었기 때문에 이번에는 해당 노드에 TempDB만 로컬 디스크를 이용하는
SQL Server 2012R2 Failover Cluster를 구성 하는 방법을 소개 합니다.

SQL 설치를 위해서는 해당 노드의 OS(Widows Server 2012R2)에 .NetFrameWork3.5가 설치 되어야 하는데 이게 기능 추가에서
잘 되지 않죠?
dism 명령어를 이용해서 추가 해 보았습니다.

Dism 명령어를 이용한 닷넷프레임워크 설치 방법의 자세한 내용은 예전 포스팅을 참고 부탁 드립니다.(여기)

SQL의 Failover Cluster 구성도 몇 번 공유 한적이 있기 때문에 간략하게 설치 과정을 소개하합니다.

아래 클러스터의 디스클 할당 하는 부분은 현재 TempDB만 로컬 디스크로 설정할 것이기 때문에 살펴 보겠습니다.
SQL 클러스터 구성 중 아래 화면에서 데이터의 디렉터리를 설정 하는 부분에서 TempDB의 디렉터리를 로컬 디스크로 설정합니다.

여기서 주의 할점은 TempDB가 위치할 폴더가 반드시 두 노드의 동일한 위치여야 한다는 것입니다.

TempDB가 로컬 디스크이기 때문에 경고 메시지가 발생 합니다.아래 메시지를 보시면 위에서 얘기한 각 노드에 동일한 위치에 Tempdb가
존재 하야 한다는 설명이 있습니다.

 Yes를 클릭 한 후 다음으로 넘어 갑니다.

TempDB가 로컬 디스크로 지정 되었음에도 첫 번째 노드에서 SQL Failover Cluster가 잘 구성 되었습니다.

이제 두번째 노드에서 SQL Failover Cluster를 설치 합니다.

두번째 노드에서도 문제 없이 설치가 완료 되었습니다.

SQL Failover Cluster 의 구성 완료 후 SQL관리 콘솔을 실행하여 다시 한번 TempdDB의 위치를 확인 해 보았습니다.

아래 그림에서 처럼 TempDB가 로컬 디스크에 위치 됨을 확인 할 수 있습니다.


이 상태에서 SQL Server의 Fail over를 테스트 합니다.


문제 없이 Failover가 진행 되었고 Node2에도 TempDB의 파일이 생성 됨을 확인 할 수 있습니다.


위 가이드는 SQL Failover Cluster를 새로 구성하는 과정에서 TempDB를 로컬 디스크로 할당 한 것이지만
실제 Failover Cluster로 운영 중인 서버에서도 로컬 디스크로의 변경이 잘 되며 다음에 그 방법을 포스팅 하겠습니다.

Move System Databases
https://docs.microsoft.com/en-us/sql/relational-databases/databases/move-system-databases

감사합니다.

[참고 자료]


저작자 표시 비영리 변경 금지
신고

Comment 0

Local Tempdb with SQL Server 2012R2 Failove Cluster #1

서비스 중인 PC 온라인 게임 서버의 DB 성능 이슈로 사용자 랙이 발생한다고 하여 오래 전에 해당 서버를 분석한 적이 있는데
해당 게임의 개발사는 그 게임은 TempDB를 많이 쓰는 구조라며 TempDB를 SSD로 변경해 줄것을 줄곧 요청 하고 있었던 상황이었습니다.

그러나 해당 서버가 Failover Cluster로 구성 되어 있어 SSD로 환경으로 DB 서버를 교체 하기가 매우 난감했었고, 다행히도
서버가 SQL 2012R2 버전이라 아래와 같이 TempDB만  클러스터 노드에 SSD를 추가하여 운영 해 볼 것을 제안 하였습니다.

아래 문서를 보시면 아시겠지만 SQL Server 2012부터는 TempDB가 로컬 디스크여도 Failover Cluster의 구성이 가능 합니다.

SQL Server failover cluster installation supports Local Disk only for installing the tempdb files.
https://msdn.microsoft.com/en-us/library/ms143506(v=sql.110).aspx
Storage Types for Data Files
The supported storage types for data files are:
 • Local Disk
 • Shared Storage
 • SMB File Share

TempDB만 로컬 디스크를 사용하는 SQL Server 2012R2 Failover Cluster를  VMware환경에 구성 한 후 문제 없이 Fail over가 진행 되는 것을

확인 하고 해당 방법을 공유해 봅니다.^^

[환 경]
 - SQL Server 2012R2 Failover Cluster on VMware single host

[구성 방법]

먼저 VMware vCenter에 접속해 MSCS 구성을 위한 VM 디스크를 생성합니다.
VMware에서 제공하는 아래 가이드를 참고 하시기 바랍니다.

Setup for Failover Clustering and Microsoft Cluster Service
https://docs.vmware.com/en/VMware-vSphere/6.0/vsphere-esxi-vcenter-server-601-setup-mscs.pdf

추가로 클러스터 구성 방법은 예전에도 많이 포스팅을 하였기 때문에 아래 가이드에는 많은 부분이 생략 되어 있음을
참고 부탁 드립니다.^^

첫번째 노드에 VMDK 디스크를 할당 하고

두번째 노드에는 첫번재 노드에 할 당한 디스크를 추가 합니다.


위 방법으로 2대의 노드에 SQL FCI 를 위한 디스크를 생성 한 후

각 노드의 디스크 관리자에서 디스크를 확인 한 후 디스크 포맷 및 드라이브 문자를 할당 합니다.

그 후 각 노드에 Failover Cluster 기능을 설치 한 후 유효성 검사를 실시합니다.

유효성 검사에서 Disk와 Network 등에 경고 메시지가 있긴 하지만 클러스터 구성엔 문제가 없기 때문에 아래와 같이
cluster20.local.loca이라는 이름으로 클러스터를 구성 하였습니다.

이제 클러스터가 구성이 되었기 때문에 다음에는 해당 클러스터 위에 SQL Server 2012R를 설치 하고 TemdDB만 로컬 디스크로 할당 하는 방법에 대해서
소개를 하겠습니다.

고맙습니다.



저작자 표시 비영리 변경 금지
신고

Comment 0

원격지의 어플리케이션이 SQL Server와 정상적으로 통신이 되지 않을 경우 실제 해당 클라이언트에서 SQL Server로 연결이 안되는지 확인 해 볼 필요가 있습니다.

OLE DB Provider를 이용하는 UDL Test를 통해서 연결을 확인 해 볼 수 있습니다.

[SQL Server 확인 사항]
연결 테스트를 하기 전에 먼저 SQL Server가 사용하는 port를 확인 합니다.
기본적으로 1433 port를 이용하기 때문에 저는 아래와 같이 1433포트를 사용하는 프로세스를 확인 해 보았습니다.

SQL Server의 인스턴스 네임을 확인 합니다. 아래와 같이 instance name 확인 하였는데 값이 Null 로 나온다면 설치시 기본 인스턴스 네임 즉 MSSQLSERVER 라는 이름을 사용중이라는 것이니 참고 하시기 바라며 이 부분이 매우 중요합니다.

[SQL Server에 연결을 시도할 Client  컴퓨터]

클라이언트 컴퓨터에서 telnet 명령어를 이용해서 해당 머신에서 SQL Server의 port가 오픈 되어 있는지 확인 해 봅니다.

SQL Server가 사용하는 1433 포트가 오픈 되어 있다면 까만 화면에 커서만 깜빡이게 됩니다. 해당 부분을 빠져 나오기 위해서는 Ctrl + ] 를 누릅니다. 그리고 quit 명령어를 이용하면 명령 프롬프트를 완전히 빠져 나올 수 있습니다.

1차적으로 telnet을 이용해서 SQL Server의 포트가 정상적으로 open 된 것을 확인 하였습니다. 다음으로는 아래와 같이 바탕화면에 텍스트 파일을 하나 만듭니다.
바탕화면에서 오른쪽 마우스를 이용해서 새 텍스트 파일을 만듭니다.

만들어지 텍스트 파일의 확장자를 *.udl로 변경을 합니다.

해당 udl 파일의 등록 정보를 클릭 합니다.

Provider 탭에서 Microsoft OLE DB Provider fo SQL Server 를 선택 한 후 Next를 클릭 합니다.

연결 탭에서 먼저 연결할 SQL Server의 IP를 입력 합니다. 여기서 주의 할 부분이 만약 연결 할 서버의 SQL Server 인스턴스 네임이 MSSQLServer가 아니라 명명된 이름이라면 해당 인스턴스 네임을 반드시 입력 해야 한다는 것입니다.

즉 기본 인스트 네임일 경우 아래와 같이 IP만 입력하면 되지만 명명된 인스턴스 네임일경우에는 "서버IP\인스터네임" 입력 해야 합니다. 
ex) 100.100.100.82\instancename

그리고 SQL Server에 로그 온 할 수있는 계정을 입력 한 후 test connection을 클릭합니다.

연결이 성공 되면 아래와 같이 "Test connection succeeded" 메시지가 팝업 됩니다.

감사합니다.^^

[참고 자료]
Basics first : "UDL Test"
http://blogs.msdn.com/b/farukcelik/archive/2007/12/31/basics-first-udl-test.aspx

저작자 표시 비영리 변경 금지
신고

Comment 0

몇 주 전 SQL Server 2008 서버에 hotfix를 설치 한 후 서버를 재 시작 하였는데 SQL Server의 시작이 실패 된 사례가 있었습니다.
원인은 시스템 데이터 베이스인 Master DB와 MSDB의 collation 이 동일하지 않았기 때문이었는데 해당 문제를 해결 하기 위해서는 master DB에 대한 rebuild 작업이 필요 하였습니다.

[환 경]
MSSQL server 2008 SP2

[
증 상
]
SQL Server 2008 sp2로 운영 중인 서버에 hotfix (sp2 cu4) 적용 후 SQL Server 시작 실패
http://support.microsoft.com/kb/2527180

[SQL Server Error log]

2011-12-11 20:06:34.01 spid7s Creating procedure sp_sqlagent_get_perf_counters...
2011-12-11 20:06:34.01 spid7s 오류: 468, 심각도: 16, 상태: 9.

2011-12-11 20:06:34.01 spid7s equal to 작업에서의 "SQL_Latin1_General_CP1_CI_AS"() "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.

2011-12-11 20:06:34.01 spid7s 오류: 912, 심각도: 21, 상태: 2.

2011-12-11 20:06:34.01 spid7s Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 200, state 7, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.

2011-12-11 20:06:34.01 spid7s 오류: 3417, 심각도: 21, 상태: 3.

2011-12-11 20:06:34.01 spid7s Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.

2011-12-11 20:06:34.01 spid7s SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.


[원 인]
Master DB
MSDB collation이 일치 하지 않아 발생한 장애로 Master DB rebuild 후 정상 복구

같은 시기에 설치 된 다른 업무 환경의 운영 서버에서 collation 확인을 확인 해 보니 해당 서버도 MSDB의 collation만 틀린 것을 확인 하였습니다.

=> select name,collation_name from sys.databases where database_id < 10

master SQL_Latin1_General_CP1_CI_AS
model SQL_Latin1_General_CP1_CI_AS
msdb Korean_Wansung_CI_AS
tempdb SQL_Latin1_General_CP1_CI_AS

=> msdb collation Korean_Wansung 임을 확인

[조치 방법]
master database rebuild 하여 시스템 데이터베이스의 collation을 일치 시켜 줌

master database rebuild

Z:\>setup.exe /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=
SWXXXXX\admin /SQLCOLLATION=SQL_Latin1_General_CP1_CI_AS /SAPWD=xxxxxx

[참고 자료]
Rebuilding System Databases
http://technet.microsoft.com/en-us/library/dd207003.aspx

감사합니다.

저작자 표시 비영리 변경 금지
신고

Comment 0

DBCC SHRINKFILE
http://msdn.microsoft.com/ko-kr/library/ms189493.aspx

트랜잭션 로그를 백업 후 shrink를 실행 했는데도 로그 파일의 크기가 줄어 들지 않는다면.....

sp_helpdb '데이터베이스 이름'

dbcc sqlperf(logspace)

SELECT name ,size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB
FROM sys.database_files;

select * from sys.databases 실행 후 Log_reuse_wait_desc 값을 확인 후 만약 Log_bakcup 상태일 경우
다시 한번 로그 백업을 실행 한 후 shrink를 하면 사이즈가 줄어 듬.

dbcc opentran 명령어를 실행해서 열려 있는 활성 transaction이 있는지도 확인 해 야 함.

[참고 자료]
sys.databases
http://msdn.microsoft.com/en-us/library/ms178534.aspx

Factors That Can Delay Log Truncation
http://msdn.microsoft.com/en-us/library/ms345414.aspx

감사합니다.

저작자 표시 비영리 변경 금지
신고

Comment 0

SQL Server를 실행하는 컴퓨터 간에 데이터베이스를 이동하기 위해서는 많은 준비가 필요하며 다양한 방법이 있을 듯 합니다만  최근에 제가 진행한 SQL Server 마이그레이션 방법을 정리 해 봅니다.

[환 경]
현 운영 서버(A) : Windows Server 2003 IA64 / MS SQL Server 2005 Failover Cluster
신규 운영서(B) : Windows Server 2008 / MS SQL Server 2005 Failover Cluster

[시나리오]
신규 서버에는 이미 Cluster가 설치 되어 있고 클러스터 관리자에서 SQL 그룹을 만들고 해당 그룹에 모든 디스크 리소스가 추가 된 상태라고 가정 함
신규 서버가 현재 운영 중인 SQL Server 장애 조치 클러스터 네트워크 이름과  서비스 IP를 사용할 예정이라고 가정 함

1. 현 운영 서버의 모든 database  백업 및 SQL Server 구성 확인

가. SQL Server 데이터베이스  시스템 버전 확인 
      Select @@version
나. ServerName, MachinName, InstanceName, Edition, ProductVersion, ProductLevel 확인
      SELECT
      SERVERPROPERTY('ServerName') AS ServerName,
      SERVERPROPERTY('MachinName') AS MachinName,
      SERVERPROPERTY('InstanceName') AS InstanceName,
      SERVERPROPERTY('Edition') AS Edition,
      SERVERPROPERTY('ProductVersion') AS ProductVersion,
      SERVERPROPERTY('ProductLevel') AS ProductLevel,
      GO

다. OS 환경 확인
     msinfo32

라. 데이터베이스 시스템 구성 확인
     sp_helpdb;

마. 데이터베이스별 파일 구성 확인
     select * from sys.master_files;

바. Database 구성 정보 확인
     sp_configure; 실행 시 모든 구성정보가 보이지 않는다면 명령어 실행 
     sp_configure 'show advanced options','1';
     reconfigure;

사. 암호 전송 스크립트 실행 및 정보 저장
    
http://support.microsoft.com/kb/918992

아. SQL Server 에이전트에서 실행 중인 작업 확인 및 스크립트 생성
   
http://support.microsoft.com/kb/314546

자. 기타 Linked server 나 다른 필요 사항 확인


2. 엑셀을 이용하여 '마' 항목에서 확인한 데이터베이스 Attache 스크립트 작성
    위 '마' 항목에서 확인 한 데이터베이스 파일 정보를 바탕으로 엑셀의 CONCATENATE 함수를 이용하여 아래와 같이
    스크립트용 파일 준비

=CONCATENATE(F,G,H,I,J,K,L,M,N)"
EXEC sp_attach_db @dbname=N'test',@filename1 = N'G:\test.mdf',@filename2 = N'F:\LogData\test_log.LDF' 

 

3. 현재 운영 중인 SQL Server 장애 조치 클러스터 이름 및 IP를 임시로 변경
   
http://support.microsoft.com/kb/244980

4. DB 파일 copy를 위해 현 운영 서버의 SQL Server 리소스만 offline 
   만약 SQL sever 그룹 전체를 offline 할 경우 운영 서버에서 사용 중인 Data를 copy 할 수 없기 때문에 주의^^

5. Robocopy 나 xcopy 혹은 다른 방법을 이용하여 원본 서버(A)에서 신규 서버(B)로 데이터 베이스 파일 copy
   robocopy 명령어를 이용한 파일 복사
  
http://ryuchan.kr/entry/robocopy-명령어를-이용한-파일-복사

6. 파일 복사 완료 후 신규 서버에 SQL Server 장애조치 클러스터 구성 
    Window server 2008R2 환경에 MS SQL Server 2005 설치 시 약간의 주의가 필요 함(추가 블로그 포스팅 예정)

7. SQL Server 장애조치 클러스터 설치 완료 후 '2번에서 작성한 attache 스크립트를 이용하여 데이터베이스 attache

8. '1번 - 사, 아' 에서 생성 된 로그인 및  암호 전송 스크립트와 작업 스크립트 실행

9. 신규 서버의 Datatabase 적합성 확인 및 '1-바'에서 확인 한 Configuration 값 확인 및 설정

[참고 자료]
SQL Server를 실행하는 컴퓨터 간에 데이터베이스를 이동하는 방법
http://support.microsoft.com/kb/314546

SQL Server 2005 인스턴스 간에 로그인 및 암호를 전송하는 방법
http://support.microsoft.com/kb/918992

감사합니다. ^^

저작자 표시 비영리 변경 금지
신고

Comment 0

지난 주말에 Windows Server 2008R2에 MSSQL Server 2005의 이중화를 구성하고 DB 마이그레이션을 하였습니다. SQL Server 설치 완료후  'SQL Server Fulltext'를 온라인으로 만들지 못하는 오류가 발생하여 아래와 같은 방법으로 해결 하였습니다.
Windows Server 2008 OS에 오랜만에 SQL Server 2005를 설치 했었네요^^

[환 경]

Windows server 2008 R2 EE
MSSQL Server 2005  Failover cluster

[증 상]

서비스를 시작하려고 시도하는 동안 일반 서비스 'SQL Server Fulltext'을(를) 온라인으로 만들지 못했습니다(오류 '1075'). 가능한 원인: 지정된 서비스 매개 변수가 잘못되었을 수 있습니다.
로그 이름:         System
원본:            Microsoft-Windows-FailoverClustering
날짜:            2011-11-05 오후 4:21:34
이벤트 ID:        1041
작업 범주:         일반 서비스 리소스
수준:            오류
키워드:          
사용자:           SYSTEM
컴퓨터:           w2k8-node1.ryuchan.kr
설명:
서비스를 시작하려고 시도하는 동안 일반 서비스 'SQL Server Fulltext'을(를) 온라인으로 만들지 못했습니다(오류 '1075'). 가능한 원인: 지정된 서비스 매개 변수가 잘못되었을 수 있습니다.

[조치 방법]
이전에 SQL server 2005 SP2가 나오기 전에는 2번째 방법을 주로 이용했었는데 이제는 SP4까지 릴리즈 되어서 별 조치를 하지 않아도 되겠네요.

그래도 이전 운영 서버가 SP1 인 환경으로 운영중인데 해당 서버를 동일 환경으로 마이그레이션 해야한다면 2번 방법을 선택 해야겠네요.^^.

1. SQL Server 2005 SP2를 설치 합니다. 해당 이슈는 Non-issue로 SP2를 통해서 해결 되었습니다.

     List of known issues when you install SQL Server 2005 on Windows Server 2008
      http://support.microsoft.com/kb/936302/en-us

2. 양쪽 노드의 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFESQL$InstanceName\
Multi-String Value: DependsOnService 의 기본 값인 NTLMSSP, RPCSS
RPCSS
로 변경 후 시스템 재 시작


 

[참고 자료]
The SQL Server FullTextSearch (MSSQLSERVER) service depends the following service: NTLMSSP. This service might not be installed.
http://blogs.technet.com/b/anurag_sharma/archive/2009/02/24/the-sql-server-fulltextsearch-mssqlserver-service-depends-the-following-service-ntlmssp-this-service-might-not-be-installed.aspx

List of known issues when you install SQL Server 2005 on Windows Server 2008
http://support.microsoft.com/kb/936302/en-us

감사합니다.

저작자 표시 비영리 변경 금지
신고

Comment 0

최근 SQL 관련 이슈들이 많습니다. Lock pages in Memory가 설정 되어 있느냐 아니냐에 따라서 SQL server 프로세스의 Working set(작업집합)의 모니터링 결과 값이 완전 달라 지는 현상입니다. 지금까지 잘 모르고 있었던 내용이네요..-___-;

 

[환 경]
Windows Server 2008 R2 / MS SQL Server 2008 + sp2


[문의 사항]
동일 환경의 A 서버와 B서버의 SQL Server 성능 카운터 중 Workingset - Private 의 사용량이 다른 이유?

[증 상]
A 서버의 물리적 메모리는 16G이며 SQL server의 Max Memory를 12G로 설정 한 후 성능 모니터에서
Working set - private을 확인 하면 아래와 같이 SQL sever가 사용하고 있는 현재 메모리 량인 12G의 메모리가 모니터링 됨

그러나 B 서버의 경우 32G의 전체 메모리 중 SQL server의 Max Memory가 26G로 설정 되어 있는데 성능 모니터에서 Working set - Private을 확인하면 약 200M의 메모리를 사용 하는 것으로 확인 됨


[원 인]
Lock pages in memory 권한이 부여되어 있는 경우 아래 카운터로는 SQL Buffer Pool 사이즈를 정확히 모니터링할 수 없습니다.
Lock pages in Memory가 설정 되어 있을 경우에는 Total server Memory 카운터에  Buffer pool에 할당 된 메모리 값이 나타나게 됩니다.

  • The Private Bytes counter and the Working Set counter in Performance Monitor
  • The Mem Usage column on the Processes tab in Task Manager

    How to reduce paging of buffer pool memory in the 64-bit version of SQL Server
    http://support.microsoft.com/kb/918483/en-us

    After you assign the Lock pages in memory user right and you restart the SQL Server service, the buffer pool of the SQL Server process still responds to memory resource notification events, and it dynamically increases or decreases in response to these events. However, you cannot see memory allocations for the buffer pool that are locked in memory in the following performance counters:
    • The Private Bytes counter and the Working Set counter in Performance Monitor
    • The Mem Usage column on the Processes tab in Task Manager

    After these pages are locked, these performance counters represent the memory allocations inside the SQL Server process when those allocations do not use the buffer pool.

    The Total Server Memory(KB) counter of the SQL Server:Memory Manager performance object accurately represents the memory that is allocated for the buffer pool.

     

    또한 SQL Server VAS내에 Reserved 공간과 Committed 된 공간은 DBCC MemoryStatus Memory Manager 항목에서 확인할 수 있습니다.

    http://support.microsoft.com/kb/907877

     

    감사합니다.^^

     

    저작자 표시 비영리 변경 금지
    신고

    Comment 0

    해당 글은 아래 사이트의 내용을 복사 한 후 약간 편집하여 정리한 SQL Server의 메모리 사용량 확인 방법입니다.

    메모리 사용 모니터링
    http://technet.microsoft.com/ko-kr/library/ms176018.aspx

    메모리 사용 모니터링

    SQL Server의 인스턴스를 주기적으로 모니터링하여 메모리 사용이 일반적인 범위를 벗어나지 않는지 확인할 수 있습니다.

    메모리 부족 상태를 모니터링하려면 다음 개체 카운터를 사용하십시오.

    • Memory: Available Bytes
    • Memory: Pages/sec

    Available Bytes 카운터는 현재 프로세스에 사용할 수 있는 메모리의 바이트 수를 나타냅니다. Pages/sec 카운터는 하드 페이지 폴트 때문에 디스크에서 가져오거나 작업 집합 내의 디스크 여유 공간에 쓴 페이지 수를 나타냅니다.

    Available Bytes 카운터 값이 작으면 컴퓨터 전체 메모리가 부족하거나 응용 프로그램이 메모리를 해제하지 않는다는 의미입니다. Pages/sec 카운터의 비율이 높으면 페이징이 과도하다는 의미입니다.
    디스크 작업의 원인이 페이징이 아닌지 확인하려면 Memory: Page Faults/sec 카운터를 모니터링하십시오.

    컴퓨터에 사용 가능한 메모리가 충분하더라도 페이징 및 그로 인한 페이지 폴트 비율은 낮은 것이 일반적입니다. Microsoft Windows VMM(Virtual Memory Manager) SQL Server 및 다른 프로세스의 작업 집합 크기를 줄일 때 이러한 프로세스에서 페이지를 가져옵니다.

    VMM 작업으로 인해 페이지 폴트가 발생할 수 있습니다. SQL Server나 다른 프로세스가 과도한 페이징의 원인인지 확인하려면 SQL Server 프로세스 인스턴스의 Process: Page Faults/sec 카운터를 모니터링하십시오.

    페이지 폴트란 프로그램이 자신의 주소 공간에는 존재하지만 시스템의 RAM에는 현재 없는 데이터나 코드에 접근 시도하였을 경우 발생하는 현상을 말합니다. 페이지 폴트가 발생하면 운영 체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해줍니다.


    SQL Server가 사용하는 메모리 격리

    기본적으로 SQL Server는 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경합니다. SQL Server는 메모리가 더 필요할 경우 운영 체제를 쿼리하여 실제 여유 메모리가 사용 가능한지 확인하고 사용 가능한 메모리를 사용합니다. SQL Server에서는 현재 할당된 메모리가 필요하지 않은 경우 운영 체제에서 사용할 수 있도록 해당 메모리를 해제합니다.
    그러나 minservermemory maxservermemory 서버 구성 옵션을 사용하여 메모리를 동적으로 사용하도록 옵션을 재정의할 수 있습니다. 자세한 내용은 서버
    메모리 옵션을 참조하십시오.

    SQL Server에서 사용하는 메모리의 양을 모니터링하려면 다음 성능 카운터를 검사하십시오.

    • Process: Working Set
    • SQL Server: Buffer Manager: Buffer Cache Hit Ratio
    • SQL Server: Buffer Manager: Total Pages
    • SQL Server: Memory Manager: Total Server Memory (KB)

     



    WorkingSet
    카운터는 프로세스에서 사용하는 메모리의 양을 나타냅니다. 이 숫자가 계속 min server memory max server memory 서버 옵션에 설정된 메모리의 양보다 작으면 SQL Server가 메모리를 너무 많이 사용하도록 구성된 것입니다.

    Buffer Cache Hit Ratio 카운터는 응용 프로그램에 따라 다릅니다. 그러나 90% 이상의 비율이 알맞습니다. 이 값이 90%보다 크게 유지될 때까지 메모리를 추가하십시오. 값이 90%보다 크면 데이터 캐시를 통해 모든 데이터 요청의 90% 이상이 충족된 것입니다.

    TotalServerMemory (KB) 카운터가 컴퓨터의 실제 메모리 양과 비교하여 계속 높게 나타나면 메모리를 추가해야 합니다.

    [참고 사이트]

    리소스 사용 모니터링(시스템 모니터)

    http://technet.microsoft.com/ko-kr/library/ms191246.aspx

    저작자 표시 비영리 변경 금지
    신고

    Comment 0