일요일, 10월 07, 2012

page life expectancy 적정 값



어느 정도 규모(?) 있는 대용량의 바쁜 시스템에서 Page life expectancy 적정 값을 생각할 , MS 지침에 나와있는 300 sec(5) 경험적으로 너무도 작은 값이라 있다.
바삐 움직이는 시스템의 메모리에 올라와 있는 데이터 페이지들이 5분에 한번 꼴로 사라진다고 생각하면
, 그래서  중요한 쿼리의 플랜 컴파일이 다시 일어나고, 디스크로 부터 데이터를 읽어 들이는 작업이 일어나는 것은
작은 규모에서는 수용할 있을지라도, 같이 대용량 시스템에서 더군다나 매우 바삐 움직여야 하는 핵심 시스템에서는
결코 좋은 현상이라 없다.

그래서, 값은 이상적으로는 크면 클수록 좋으며,
대용량 시스템에서는 피크 시간대를 고려하여 좀더 의미 있는 값을 갖도록 하는 것이 좋다.

Johathan kehayias는 Page life expectancy 임계값에 대한 의미있는 공식 소개하고 있는데
임계값 --> DataCacheSizeInGB/4GB*300
300 sec란 값이 과거 4GB 메모리가 주류를 이룬 시점에서 작성된거니, 기준을 수정해야 한다는 이야기이다.

그래프 상의 피크시간은 3 시간 정도이며, 시스템의 page life exp 값은 거의 20,000 sec 가까워
충분한 메모리를 확보하고 있는데, 이러한 수치 값은 용량 산정 여유 메모리를 충분히 가져간 것일 있으나,
대개의 경우 쿼리의 효과적인 메모리 사용이 가져온 결과라 있겠다.

월요일, 7월 02, 2012

데이터베이스 백업파일 과 차등백업 파일을 통한 데이터베이스 마이그레이션


개요

대용량 데이터베이스 서버 마이그레이션 전략 중 하나로서, 서비스 다운타임을 최소화하기 위해 데이터베이스 백업파일과 차등 백업 파일을 가지고

데이터베이스를 마이그레이션 하는 방법을 제시하고 이를 검증한다.

1.원본 서버
SQL Server 2000 Ent
대상 데이터베이스











Northwind데이터 베이스

2.목표 서버
SQL Server 2008 Ent

3.마이그레이션 절차
SQL Server 2000 원본 서버
전체 백업 수행




Orders 테이블 데이터 변경











차등 백업 수행





SQL Server 2008R2 에서의 전체 데이터베이스 복원
이때, No Recovery 모드로 복원

restore FILELISTONLY

from disk = 'D:\temp\DB\NorthWind_Full.bak'

go



RESTORE DATABASE
Northwind

FROM DISK
= 'D:\temp\DB\NorthWind_Full.bak'

WITH MOVE
'Northwind' TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\northwind.mdf',

MOVE
'Northwind_log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\northwind.ldf',

FILE
= 1, NORECOVERY

GO


/*

파일1에서데이터베이스'Northwind', 파일'Northwind'에대해384개의페이지를처리했습니다.

파일1에서데이터베이스'Northwind', 파일'Northwind_log'에대해1개의페이지를처리했습니다.

RESTORE DATABASE이(가) 385개의페이지를0.061초동안처리했습니다(49.212MB/초).

*/


이 때, 풀 백업 본의 데이터파일에 대한 버전 업그레이드가 이루어진다.


다음, 차등 백업 파일로 완전 복원



RESTORE DATABASE Northwind

FROM DISK
= 'D:\temp\DB\NorthWind_Diff.bak'


/*

파일1에서데이터베이스'Northwind', 파일'Northwind'에대해40개의페이지를처리했습니다.

파일1에서데이터베이스'Northwind', 파일'Northwind_log'에대해1개의페이지를처리했습니다.

데이터베이스'Northwind'을(를) 버전539에서현재버전661(으)로변환하는중입니다.

데이터베이스'Northwind'을(를) 버전539에서버전551(으)로업그레이드하는중입니다.
..생략..

RESTORE DATABASE이(가) 41개의페이지를0.013초동안처리했습니다(24.113MB/초).

*/


차등 백업본의 데이터 파일 업그레이드가 이루어 진다.
당연한 말이겠지만, 차등 백업 본에 해당하는 업그레이드만 발생하니,
작업이 매우 짧게 끝난다.

또한, 차등복원시 데이터 파일 디렉토리 지정 같은 옵션은 생략해도 된다.
(이미 풀 백업 본에 지정되어 있으므로)




SQL Server 복제환경에서 구독자의 호스트명(IP) 변경



1.     개요
이미 구성되어 운영중인 복제 서비스에서 구독자의 서버 정보가 서버 명 즉, 호스트 명이 아닌 IP로 등록되어 있을 경우, 해당 IP가 변경되면 복제 서비스가 더 이상 동작되지 않는 일이 발생하게 된다.

이러한 문제가 발생했을 때, 조치 할 수 있는 일반적인 방법은 구독자를 삭제하고 다시 구성하는 것이나
,초를 다투는 운영서버 환경에서 다운타임이 어느 정도 될지 예측하는 것은 쉬운 일이 아니다.

따라서, 이 문서에서는 구독자의 속정정보인 메타데이터를 변경하는 방법을 제시하고자 한다.
하지만 주의할 것은, 이 방식은 알려지지 않는 시스템 테이블을 변경하는 작업이 수반되며
이는 시스템에 심각한 영향을 줄 수 있으므로, 반드시 관리자는 주의 깊게 수행해야 한다.

위와 같은 문제를 근본적으로 피해갈 수 있는 방법은 복제 구성 시 공식문서에 나와있듯이 호스트 명 혹은 도메인 명으로 등록하는 것이 가장 바람 직 하다.


2.     구독자 서버의 속성 변경 절차
a.     먼저 도메인 명으로 구독서버를 게시자에 등록한다.


다음 명령어를 통해 등록된 서버를 확인한다.


b.   배포 데이터베이스에서 해당 호스트 네임에 해당하는 subscriber_id를 업데이트 한다.
다음 테이블을 보면 등록된 구독자에 대한 구독 서버 id가 설정되어 있고, 이 값을
Hostname으로 매핑한 srvid 값으로 변경한다.





또한 배포자데이터베이스의 배포에이전트 테이블의 subscriber_id도 역시 동일하게 수정한다.



  
[수정 후]


c.   다음은 게시 데이터베이스(여기서는 northwind)내의 시스템 테이블인 sysSubscriptions 테이블의 srvid
동일하게 Hostname과 매핑된 srvid값으로 수정한다.






d.  배포 에이전트의 속성에서 배포에이전트 시작 파라미터 값 중 구독 서버 값(아마 IP값일 것이다)
을 호스트 명으로 수정하고 다시 시작한다.





e.   작업 결과 확인
게시데이터베이스에서 다음 명령어 sp_helpsubscription 로 구독 서버 명 확인




화요일, 1월 31, 2012

DTEXE 로 SSIS 패키지 실행시 Server 명에 IP 주소 지정시 오류발생

[오류 메시지]
CMD 창에서 dtexec 명령어로 ssis 패키지 실행 시 다음의 오류 발생

dtexec /SQL "BM****" /Server "10.25.2.xx" /User "a_xxx_xxx" /Password "xxx" /Decrypt "xxx"




[이슈의 배경]
.SQL Server 2005 SSIS 패키지를 SQL Server 2008에서 수행
.SQL Server 2008 테스트 환경에서 수행시는 문제가 없었으나, 운영환경(SQL Server 2008)에서 수행시 위의 오류가 발생

[원인/해결법]
서버명 대신 IP address를 지정하여 발생한 문제로
/Server 호스트 이름을 명명할 정상적으로 수행된다.
로컬서버에서호출한경우 /Server, /User, /Password 생략하여호출