Upload
ewan
View
96
Download
8
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 Transa
ction 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 재설치 - 로그 파일 줄이기• 기술 자료들