2005/01/25

SQL Server 튜닝 가이드

다음 문서는 Microsoft Technet 에 SQL 컨설턴트 차주언 님이 기고하신 글 입니다.

아주 기본적인면서도 중요한 내용입니다. 이정도만 지켜주어도 SQL서버의 성능향상 효과는 아주 크리라 생각됩니다.^^

각 항목은 Technet 문서에 링크되어 있습니다.

[개발자를 위한 튜닝 가이드]

? 1. 쿼리디자인 (클라이언트)

? 2. 그 외 개발자 권고 사항


[관리자를 위한 튜닝 가이드]

? 3. 운영체제 환경 설정편 

? 4. SQL 인스턴스 환경 설정 

? 5. 데이터베이스 설정

? 6. 인덱스 

? 7. 잠금 

? 8. 모델링 

[전체문서다운로드]



24-TechNetB_masthead_ltr.gif

Active directory 백업 및 복원 방법

□ Active Directory 백업

백업시, 시스템상태를 포함하여 백업을 합니다. 그러면 다음과 같은 항목이 함께 백업이 됩니다.

? Active Directory(NTDS)
? 부팅 파일
? COM+ 클래스 등록 데이터베이스
? 레지스트리
? 시스템 볼륨(SYSVOL)


□ Active Directory 복원

Active Directory 복원에는 3가지 방법이 있습니다.

A. 신뢰할 수 없는 복원(Non-Authoritative Restore)

의미: 복원하는 DC 이외에 나머지 DC들의 AD 복제본이 무사하고 유효한 경우 로컬에 복원된 sysvol 데이터를 무시하고, Inbound 복제 파트너 DC(Domain Controller)로부터 모든 sysvol 데이터를 복제하여 복원합니다.

1. 도메인 컨트롤러의 시스템 상태를 복원하려면 먼저 디렉터리 서비스 복원 모드로 컴퓨터를 시작합니다. 이렇게 하려면 컴퓨터를 다시 시작한 다음 부팅 메뉴가 나타날 때 F8 키를 누릅니다.
2. 디렉터리 서비스 복원 모드를 선택합니다. 
3. 복구할 Windows 2000 설치를 선택한 다음 Enter 키를 누릅니다.
4. 로그온 프롬프트에서 Dcpromo.exe 처리 도중에 제공했던 디렉터리 서비스 복원 모드 자격 증명을 제공합니다.
5. 확인을 눌러 안전 모드 사용을 승인합니다.
6. 시작을 누르고 프로그램, 보조프로그램, 시스템 도구를 차례로 가리킨 다음 백업을 누릅니다.
7. 복원 탭을 누릅니다.
8. 적절한 백업 미디어와 복원할 시스템 상태를 누릅니다.
9. 파일을 복원할 위치 상자에서 원래 위치를 누릅니다.
10. 복원 시작을 누릅니다.
11. 복원 작업이 완료되면 컴퓨터를 다시 시작합니다.

B. 신뢰할 만한 복원(Authoritative Restore)

의미: 로컬에 복원된 sysvol 데이터를 outbound 복제 파트너 DC로 sysvol 데이터를 복제하여 복원합니다. 

정상적인 파일 복원 작업 중에 Microsoft Windows 백업 기능은 신뢰할 수 없는 복원 모드로 작동됩니다. 이 모드에서 Windows 백업 기능은 원래의 USN(업데이트 시퀀스 번호)와 함께 Active Directory 개체를 포함하는 모든 파일을 복원합니다

신뢰할 수 있는 복원은 DC에 복원하는 AD개체들의 USN을 변경하여 각 개체가 도메인에 있는 어떤 DC의 어떤 AD보다도 가장 높은 값을 가지도록 한다. 이것은 한가지 부정적인 결과를 가져올수 있다. 트러스트관계에 있는 개체가 복원하는 개체보다 최신일 경우 예전정보로 복원되기 때문이다.

데이터를 복원한 후에는 Ntdsutil.exe를 사용하여 신뢰할 만한 복원을 수행해야 합니다.

1. 명령 프롬프트에서 ntdsutil을 입력한 다음 Enter 키를 누릅니다.
2. authoritative restore를 입력한 다음 Enter 키를 누릅니다.
3. restore database를 입력한 다음 Enter 키를 누르고 확인을 누른 후 예를 누릅니다.

특정 하위 트리만 할경우는 다음과 같이 하면 된다.
restore subtree ou=insideapple, dc=severinfo, dc=pe, dc=kr

4.AD 복원작업이 완료된 후, 서버를 재시작 하기 위한 옵션에서 No라도 한다.

서버를 재시작하게 되면 복원은 신뢰성이 없게 될것이며 다른 AD 복제본으로 부터 원치 않는 데이터를 재 상속받게 될 위험이 있다.

C. 기본 복원(Primary Restore)

의미: 로컬에 다른 복제를 받거나 복제할 다른 DC가 없을 때, 복원된 로컬의 sysvol 데이터를 이용하여 새로운 NTFRS 데이터베이스를 구성합니다.

조건: 로컬에 다른 DC가 존재하지 않아야 하며, 이 DC가 최초의 DC로 복원됩니다.

* Windows Server 2003 의 경우 ASR 백업셋이 존재하는 경우 CD설치시 F2키를 눌러 ASR백업셋을 통해서 복구과정을 훨씬 단축할수 있다.



24-TechNetB_masthead_ltr.gif

2005/01/04

분산쿼리를 위한 Linked Server 설정

분산 쿼리를 사용하면 여러 SQL Server 인스턴스에 저장된 분산 데이터 및 관계형 및 비관계형 데이터 원본에 저장되어 OLE DB 공급자를 통해 액세스되는 유형이 다른 데이터 까지 데이터 원본에 대해 분산 쿼리, 업데이트, 명령, 트랜잭션 등을 수행할 수 있습니다.




그림과 같이 매우 다양한 데이터를 원본으로 이용이 가능합니다.

데이터 원본에 접근하는 방법은 일반적인 웹프로그래밍이나, DB연동프로그램과 같으나, 그사이에 SQL Server가 끼어 있다는 것 외에는 모두 동일합니다.

EM을 통한 Linked Server 설정방법입니다.

1. 연결된 서버는 호스트네임이나, IP Address를 입력하고, 서버유형에는 같은 SQL Server 일경우에는 SQL Server를 선택합니다. 나머지 항목은 자동으로 알아서 해줍니다.



쿼리분석문은 다음과 같다.

EXEC sp_addlinkedserver [@server = ] '연결된 서버의 이름'
     [, @srvproduct = ] '연결된 서버의 제품 이름']
     [, @provider = ] 'OLE DB 공급자의 이름'
     [, @datasrc = ] '데이터 원본 경로'
     [, @location = ] '위치'
     [, @provstr = ] '공급자 문자열'
     [, [@catalog = ] '카탈로그 속성' ]


예제,

exec sp_addlinkedserver @server = 'bb',
 @srvproduct = 'ccc' ,
 @provider = 'SQLOLEDB' , 
 @datasrc = '10.0.0.176'


같은 SQL Server에 연결할경우는

EXEC sp_addlinkedserver '10.0.0.176', N'SQL Server'


다른방법은 [관리도구]-[데이터원본ODBC] 에서 ODBC 연결설정을 한후, EM에서 원격서버 추가에서

연결된서버 이름에 원하는 연결이름과,
공급자에서 ODBC를 선택,
데이터원본에 ODBC관리자에서 등록했던 ODBC명만 넣어주면 된다.



2. 원격서버에 연결할 계정정보를 설정하는 탭입니다.



Linked Server 가 만들어진후에는 그서버에 접속하는 계정정보를 매핑해줘야 한다.

로컬로그인 계정과, 원격서버의 계정을 매핑해주거나, 가장하여 접근을 하거나, 특정 보안컨텍스트를 통해서 연결이 가능하다.

쿼리를 통한 로그인 설정은

sp_helpserver 를 통해서 연결가능한 서버 목록을 확인한후,

EXEC sp_addlinkedsrvlogin '10.0.0.176', false, NULL, 'kissme7', '1234'

3. 데이터 연결 서버 옵션설정




원격서버에 있는 저장프로시져를 호출할경우 RPC를 활성화시킨다.

EXEC sp_serveroption '10.0.0.176', 'rpc, TRUE

EXEC sp_serveroption '10.0.0.176', 'rpc out, TRUE


연결이 완료된후, 다음과 같은 쿼리가 가능하다. 원격서버의 객체인경우 원격서버명을 앞에다만 붙여주면 된다.

select * from [10.0.0.176].Northwind.dbo.Customers mnw
join Northwind.dbo.Orders nw
on mnw.CustomerID = nw.CustomerID
where mnw.CustomerID like 'AN%'


04-mssql2k_linkedserver_0.gif
04-mssql2k_linkedserver_1.gif
04-mssql2k_linkedserver_2.gif
04-mssql2k_linkedserver_3.gif

가장 많이 본 글