34
SQL 문문문문 문문문 문 문문 문문 문문 문문문 문 문문

SQL 문제해결 방법론 및 사례

  • Upload
    kirk

  • View
    155

  • Download
    0

Embed Size (px)

DESCRIPTION

SQL 문제해결 방법론 및 사례. 고객 기술 지원부 김 종구. 목 차. 문제 해결 방법론 사례 연구 … - 장애 복구와 관련된 KB 기사들 - DB 에 문제가 발생한 경우 - 백업 및 복원 - MDAC 설치 및 제거 - Oracle 과의 연동 - MSDTC 재설치 - 로그 파일 줄이기 기술 자료들. 문제 해결 방법론. 문제를 구체적으로 정의 한다 . - 가능한 모든 데이터 ( 로그 ) 를 수집한다 . - 문제 발생지가 어디인가 ? - PowerPoint PPT Presentation

Citation preview

SQL 문제해결 방법론 및 사례고객 기술 지원부 김 종구

목 차• 문제 해결 방법론• 사례 연구… - 장애 복구와 관련된 KB 기사들 - DB 에 문제가 발생한 경우 - 백업 및 복원 - MDAC 설치 및 제거 - Oracle 과의 연동 - MSDTC 재설치 - 로그 파일 줄이기• 기술 자료들

문제 해결 방법론• 문제를 구체적으로 정의 한다 . - 가능한 모든 데이터 ( 로그 ) 를 수집한다 . - 문제 발생지가 어디인가 ? - 발생 빈도를 확인한다 . - 특정 작업 이후에 발생한 것인가 ?• 구체화된 문제를 바탕으로 해결책 모색 . - 설정 및 구현이 잘못된 경우 . - corruption 으로 인해 발생된 문제 .

모든 데이터 ( 로그 ) 수집• 이벤트 로그 ( 시스템 , 응용 프로그램 )• Sqldiag log - Clustering 의 경우 (Q233332 참조 )• Sqlstp.log (setup 실패 시 )• Sqlsp.log (ServicePack 설치 실패 시 )• Profiler log• Performance log

문제 발생지 및 발생 빈도 확인DB 자체의 문제인지 Component 또는 Cl

ient 상의 문제인지를 확인한다 .Query Analyzer 에서 수행하여 정상적으로

수행이 되는가를 확인한다 .

문제 발생이 규칙적인가 불규칙적 인가 ?다른 머신에서도 재현 가능한가 ?

사례 연구…• 장애 복구와 관련된 KB 기사들• DB 에 문제가 발생한 경우• 백업 및 복원• MDAC 설치 및 제거• Oracle 과의 연동• MSDTC 재설치• 로그 파일 줄이기

장애 복구와 관련된 KB 기사들• Q307775 INF: Disaster Recovery Articles

for Microsoft SQL Server

DB 운영 및 이전 작업 중 발생할 수 있는 여러 가지 상황에 대한 KB 기사들을 모아 놓은 자료 .

DB 에 문제가 발생한 경우• DB 파일에 물리적으로 문제가 발생 Ex) Err. 823 Torn Page detected• SQL 서버가 시작 시 DB 에 대해 복구가 완료되었다는 확신을 못 가진 경우 Ex) Suspect

Err. 823 Torn Page Detected

• 하드웨어 장애로 인해 발생하며 물리적으로 consistency 에 문제가 생긴 경우 .

- 오류 : 823, 심각도 : 24, 상태 : 2 spid51 I/O error (torn page) detected duri

ng read at offset 0x0000000040e000 in file 'F:\EDMSDB\EDMS_Data.MDF'..

해결 방법[Best Practice]1. BACKUP 으로부터 Restore 가 Best.[Backup 이 없는 경우 ]1. DBCC CHECKDB 수행 . - 문제가 발생한 object 를 찾는다 . 또는 select * from tbl 이 되지 않는 tbl 을 찾는다 .2. Select * from tbl with (index = 0|1|2…) 를 이용하여 접근가능한 data 의 개수를 찾음 .3. DB schema 를 scripting 하여 다른 DB 를 생성 .4. DTS 를 이용하여 정상적인 object 를 이동 .

5. 문제가 발생한 tbl 은 insert into new_tbl select * from DB..tbl with (index=1) where ‘i

ndexed_column_name’ <= ‘condition’ 와 같은 형식으로 데이터를 저장함 .

6. 문제가 있는 DB 를 Detach 하고 새로 만든 DB 를 기존 DB 의 이름으로 attach함 .

7. 기존 사용자를 DB_Owner 로 설정8. DBCC CHECKDB 를 다시 수행 .

[DBCC CHECKDB Repair_Allow_Data_loss 이용 ]1. 문제가 발생한 DB 에 대하여 DBCC CHECKD

B 를 수행하면 결과 창에서 위 옵션을 권장하는 경우가 있음 .2. 위 명령을 여러 번 수행하면 문제가 해결되는

경우도 있음 .3. 위 옵션 외에도 repair_fast repair_rebuild 옵션도 있음 . (BOL 참조 )

5. 다음과 같은 구문을 수행 . DBCC TRACEON (3604) Go sp_dboption, ‘DB_name’, ‘single user’, True Go DBCC CHECKDB (‘DB_Name’, Repair_Allow

_Data_Loss) Go

Suspect1. 원인 - 다양함 . (root cause 를 찾는다 .) - 시작 시 다른 process 가 파일을 사용하 고 있는 경우 . - mdf 나 ldf 파일에 손상이 간 경우 등등 .2. 해결 방법 - sp_resetstatus 이용 - Emergency Mode 로 변경하여 DB 접근 - DBCC Rebuild_log 명령 이용 (sql magazine 9 월호 기사 참조 )

• Sp_configure ‘allow updates’, 1 reconfigure with override• Select * from sysdatabases where name

= ‘<db_name>’ update sysdatabases set status = 32768

where name = ‘<db_name>’• Restart the SQL Server• DBCC REBUILD_LOG(‘<db_name>’, ‘<log_filename>’

백업 및 복원1. 복구 모델 ( 전체 , 대량 로그 , 단순 )2. 백업 종류 ( 전체 , 차등 , 트랜잭션 로그 )3. 기본 복구 시나리오 - 전체 백업에서 복원 - 차등 백업에서 복원 - 트랜잭션 로그 백업에서 복원4. 고급 복구 시나리오 - 파일 그룹 백업 및 복원 - 특정 시점으로 복원하기 (stopat, stopatmark) - 데이터 파일로 부터 복원 (sp_attach_db, sp_attach_single_file_db 등5. Striped backup.(7.0 vs 2000)

MDAC1. MDAC Version Check Component Checker 를 이용 . http://www.microsoft.com/data2. Windows 2K 부터 system component 로

통합됨 .3. MDAC 제거 및 Uninstall - 제거 : comcheck.exe /d - uninstall : dasetup.exe /u (MDAC 2.6

이후부터 가능 )4. 특정 파일만 바꾸기 불가 (SFP 기능 때문 )

MDAC Release 정보• MDAC 2.1 – SQL 7.0• MDAC 2.5 - Windows 2000• MDAC 2.5 SP1 – Windows 2000 SP1• MDAC 2.5 SP2 – Windows 2000 SP2• MDAC 2.6 - SQL Server 2000• MDAC 2.6 SP1 – SQL Server 2000

SP1• MDAC 2.6 SP2 – SQL Server 2000

SP2• MDAC 2.7 – Windows XP

5. Upgrade 문제 .6. 설치 실패 문제 해결 1) stop all services that uses MDAC

components including the following services.

- Certificate Server - Exchange Server - Internet Explorer - Internet Information Server - Microsoft Office (All Office

Applications) - Outlook and Outlook Express - SNA Server - SMS Server - SQL Server - Visual Studio (All Development

Products)

2) odbc32.dll, oledb32.dll, msado15.dll 이 사용 중인지 확인 (ListDll utility 이용 )

http://www.sysinternals.com 에서 다운 . 3) 권한 확인 4) 백신 프로그램 , Disk Security 프로그램

종료 . 5) 디스크 여유 공간 (40MB) 확인 6) Temp 폴더 설정 확인 . 7) 7.0 Cluster 에는 MDAC 2.6 설치 안됨 .

7. 그래도 실패하면… 1) Full installation – MDAC 압축 해제 후 설치

(c:\mdacsetup 폴더로 해제 ) c:\mdac_typ.exe /c /t:c:\mdacsetup 2) log 남기기 c:\mdacsetup\setup.exe /gc c:\mlog.txt c:\mdac_typ.exe /c:\”setup /gc c:\mlog.txt MDAC 2.6 이후에는 %system root%에 das

etup.log 가 있음 .

Oracle 과의 연동 • 권장 기사 : Using Oracle with Microsoft Transacti

on server and COM+http://

support.microsoft.com/support/complus/mtsandoracle.asp

• Linked Server 연결 시 Oracle 에서 제공하는 ODBC 드라이버 사용을 권장 .

• 분산 트랜잭션을 위해서는 XA 와 DTC 간의 통신이 필요 . 에러 발생 시 ,“OLE/DB 공급자 'MSDAORA' 이 ( 가 ) 분산

트랜잭션을 시작할 수 없으므로 작업을 수행할 수 없습니다” 메시지

Ex) insert into #test6 exec(select * from openquery (OraSrv, ‘select * from test’))

• 최신의 Oracle Client 설치• 최신의 Oracle Net8 설치• MDAC 2.6 SP1 이상 설치• Client software registry key 값을 변경 .• Oracle XA Transaction 을 지원하도록 설정 . 두 개의 view, V$XATRANS$ DBA_PENDING_TRANSACTIONS 가

Oracle 에 생성되어 있어야 함 . 또한 select 권한이 있어야 함 . • MSDTCORA.EXE 를 이용하여 확인 .

MSDTC 재설치• KB Q279786 참조1. 필수 서비스 외 나머지 멈춤 & set manually start.2. 서버 재시작3. Msdtc –uninstall4. 다음 registry key 제거 . HKEY_CLASSES_ROOT\CID HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic

es\MSDTC HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MSDTC

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\MSDTC

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC

5. %system root%\system32 에서 Dtcsetup.exe 실행6. 설치가 끝난 후 서비스를 원래대로 재설정 .7. Msdtc –resetlog 수행 .

로그 줄이기

• Transaction log 의 작동 방법 . - 초기 공간은 Virtual Log 로 나눠진다 . - MinLSN 으로 표시된 부분은 truncate 시

지워지지 않는다 . - 로그가 파일의 마지막 부분까지 기록되고

나면 , wrap around 방식을 이용하여 로그의 앞부분으로 이동 , 이 작업 후에야 truncate

가 가능 .

Transaction Log Virtual Log File

• Log files are divided into virtual log files

• The number of VLFs varies; at least two VLFs in a file

Log Log FileFile

8 KB Header8 KB Header

VLF VLF VLF VLF

Available File Space

Number of VLFs VLF Size

Up to 1 MB 2 – 4 : space / 248 KB 248 KB - 334 KBUp to 64 MB 4 256 KB - 16 MBUp to 1 GB 8 8 MB - 128 MBAbove 1 GB 16 64 MB +

Technical Resources1. BOL (updated version)

http://www.microsoft.com/sql/techinfo/productdoc/2000/books.asp

2. SQL Server 홈페이지 http://www.microsoft.com/korea/sql http://www.microsoft.com/sql3. 기술지원 홈페이지 http://support.microsoft.com

4. White Paper - For SQL 2000 HTTP://support.microso

ft.com/support/search/canned.asp?R=d&H=SQL Server 2000 White Papers&LL=kbSQLServ2000Search&Sz=kbwhitepaper&CDID=EN-US-KB&LCID=1033

- For SQL 7.0 & SQL 6.5 http://support.microsoft.com/default.aspx?scid=/support/sql/papers.asp

5. Newsgrouphttp://www.microsoft.com/korea/sql/support/n

ewsgroups/default.asphttp://support.microsoft.com/newsgroups/defau

lt.aspx?ICP=GSS3&NewsGroup=microsoft.public.kr.sql&SLCID=kr&sd=GN&id=fh;KO;NEWSGROUPS

6. MSDN & TechNethttp://support.microsoft.com/default.aspx?S

D=msdn&pr=sql (SQL Portal)http://msdn.microsoft.com/library/default.as

p?url=/nhp/Default.asp?contentid=28000409 (SQL Product Technical Information)

http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001300 (SQLXML)

http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/sql/default.asp

7. WebCasthttp://support.microsoft.com/default.aspx?s

cid=fh;RID;webcst&style=toc&sd=gn 8. Online Seminar http://www.microsoft.com/seminar/9. Online chat http://msdn.microsoft.com/chats/10.Newsletter http://www.microsoft.com/mi

sc/subscribe.htm

Summary • 문제 해결 방법론• 사례 연구… - 장애 복구와 관련된 KB 기사들 - DB 에 문제가 발생한 경우 - 백업 및 복원 - MDAC 설치 및 제거 - Oracle 과의 연동 - MSDTC 재설치 - 로그 파일 줄이기• 기술 자료들