본문 바로가기

IT Professional/Microsoft SQL Server

SQL Server Cluster internal HDD 에 백업하기 Always on 도 있지만.. SQL 의 경우 MSCS 를 사용하는 경우가 많습니다. 문제는 백업을 할 경우, 비싼 External Storage 를 사용하기에는 좀 아깝다는 것에 문제가 있습니다. 그래서... 일반적으로 서비스는 External Storage 에, 백업이나 로그는 Internal 에 하는 것이 일반적인데... 문제는 유지관리 계획을 이용하여 백업을 하기에는 클러스터 SQL 을 백업하기 위해서는 클러스터 Shared 만 백업이 가능하도록 설정이 보인다는 겁니다. 통상적으로 요즘은 서버에도 1TB 정도의 로컬 디스크가 남는 것이 일반적인데.... 그렇다고 해서 유지 관리 계획을 사용하지 않고,스크립트로 직접 코딩을 하기에는 유지관리 계획에서 제공하는 기능을 구현하기가 만만치 않습니다. 물.. 더보기
MS SQL 서버의 Transaction 로그 관리 대용량 DBMS 를 사용하는 경우, 일부 사용자들은 Log 수준을 Simple 로 정의하므로서 I/O 성능적인 향상이 있을 것이라는 추측을 하게되고 실제로 그렇게 하는 경우가 있다. 다른 제품들과는 다르게 SQL Server, RDBMS 의 로그는 단순한 로그가 아니라 Data 의 일부로 취급 받는다. 시스템의 상태 정도를 나타내는 로그의 수준이 아니라, 비정상적인 방법으로 Transcation-log 를 읽거나 줄이는 경우 정상적인 시작이 되지 않는 것도 이 때문이다. 대용량 DBMS 를 사용하는 경우, 일부 사용자들은 Log 수준을 Simple 로 정의하므로서 I/O 성능적인 향상이 있을 것이라는 추측을 하게되고 실제로 그렇게 하는 경우가 있다. 하지만 이는 잘못된 생각이다. Full 모드의 경우 알.. 더보기
멀쩡하게 돌아가던 SQL 이 갑자기 Lock 이 발생하며 멈춘다면...(1) Ghost Cleanup 주구 장창 높은 시스템 점유율을 나타내면서 시스템의 속도를 떨어뜨리는 문제를 해결하는 것도 문제지만... 한번씩 그것도 주기적으로 시스템을 무응답 상태로 빠뜨리는 상황이 종종 있다. 이 경우에 Batch 형태로 돌아가는 작업을 잡아 내게 되면 정말 Happy 하지만, 유감스럽게도 대부분의 경우 Batch 가 없는 경우가 많다. (실제로 Batch 가 있다면 벌써 개발자 수준에서 처리를 하는 경우가 대부분이다.) 각각의 Case 가 있지만.. 일단 첫번째 Case Ghost Clean up 에 대하여 알아 보자. Ghost Cleanup 갑자기 Lock 이 발생하면서 단 몇 ms 면 끝날 Select 문이 짧게는 1분 길에는 수십분에 걸쳐서 실행되는 경우가 있다. 물론 중요 서비스라는 난리가 아닐 것이고... 더보기
MS SQL 병목 탐지 시스템 인프라 담당자에게는 미안한 말이지만, 시스템 파라메터 열심히 튜닝하는 것보다, 쿼리 한줄, DB 옵션 하나 수정하는게 훨씬 성능이 잘 나온다는 이야기 들이 있다. 맞는 말이다. (나도 시스템 엔지니어지만, 맞는 건 맞는 거니까...) 그런데 솔직히 SQL 을 제대로 튜닝하는 DBA 를 만나기가 쉽지 않다. 튜닝은 고사하고 SQL 에 뭐거 문제인지 진단하는 방법론을 가지는 엔지니를 만나는 것도 꽤 어려운 일이다. 그렇다면, MS SQL 을 다루는 사람들은 왜 이렇게 튜닝을 힘들어 할까? 물론 오라클 만큼이나 시장이 성숙하지 않은 것은 사실이지만, 적지 않은 기간 동안 운영되어 온 SQL 은 왜 이렇게 튜닝 파워가 낮을까? 그 이유는 아마도 툴의 부재라고 보인다. (이건 아마도 가장 큰 책임은 MS .. 더보기
Microsoft SQL Server CPU 경합 방지 옵션 SQL 서버를 운영하다 보면 개발 머신이 아닌 경우, 대부분의 서버에서 멀티 CPU 시스템을 사용하게 된다. 당연히 CPU 가 많은 경우가 CPU 가 적은 경우보다 빠르겠지만, 그렇지 않은 경우가 몇가지 있는데, 병렬 처리로 인한 Deadlock 발생, 그리고 동일한 자원의 사용을 위한 경합에 의한 장애가 발생하는 경우이다. 먼저 CPU 의 병렬 처리로 인한 Deadlock 은 아래를 참고... http://masterjoe.tistory.com/entry/Deadlock-의-진단과-해결 CPU Core 의 개수에 준하게 TempDB 의 파일을 만든다. 그리고 일반적으로 해야 하는 설정이지만, 빼먹는 설정이 바로.... Temp DB 의 설정이다. 일단 설정의 방법 부터 알아 보자. 1. 각 서버의 CP.. 더보기
SQL 서버 사용 중 Query 나 DML 이 인덱스 사용을 비 정상적으로 할 때... SQL 스키마 구조에서 가장 중요한 것이 무어냐고 묻는다면, 단연 인덱스의 효율성이라 이야기 할 수 있다. 아무리 많은 Data 가 증가할 지라도, 인덱스를 효율적으로 사용하는 쿼리는 이론상 속도의 저하가 발생하지 않는다. RDBMS 상에서 Data 가 늘어 가는 것은 오히려 당연한 이치이고, 아무리 많은 Data 가 증가할 지라도, 인덱스를 효율적으로 사용하는 쿼리는 이론상 속도의 저하가 발생하지 않는다. (백업이나 Data 관리의 부하가 증가하는 것은 다른 문제로 하자.) 그런데, 정말 잘 만든 인덱스를 타지 않는 쿼리가 있다면... 성능에 심각한 문제를 발생하게 될 것이다. 문제는 두가지다. 우리가 잘못했거나... MS 의 최적화기가 잘못 동작하거나.... 대부분의 경우 최적화기가 오동작을 하는 것.. 더보기
Deadlock 의 진단과 해결 RDBMS 에서 Deadlock 이라는 단어가 종종 등장한다. 대부분의 DB 안내서에 자주 등장하는 이야기 지만.. 의외로 해당 문제 때문에 trouble shooting 을 수행하여야 하는 경우는 드뭅니다. 대부분의 dealock 이 개발 단계에서 탐지되고, 수정되기 때문이죠. 그렇다면, 여기서 '대부분' 이라는 키워드를 사용하는 경우는 어떤 경우이며, '대부분' 에 포함되지 않는 예외 Case 는 어떤 것들이 있는지, 그리고 그에 대한 해결은 어떻게 접근하는지에 대하여 생각해 보기로 하겠습니다.. Deadlock 의 정의에 대해서는 따로 설명하지 않겠습니다. 정의는 적당한 문서가 많이 있습니다.. Deadlock 의 탐지 1. SQL 이벤트 2. 과도한 CPU 의 사용 3. 작업 모니터에 CXPack.. 더보기
잘 되던 SQL Replication 이 안될 때 - OS error 3. SQL Replication 에 대해서는 여러가지 사용예가 있지만, 경우에 따라서는 어떤 복제나 DR 솔루션보다 유용할 수 있다. - 주의!!! 경우에 따라서다.. 절대 만능은 아니다. 적용은 언제나 심사 숙고... 멀쩡하게 동작하던 SQL 의 replication 이 어느 순간부터 동작하는 않는 경우가 있다. 이런 경우 가장 자주 맞딱뜨리는 오류가 아래와 같다. The process could not read file '[snapshot file path]' due to OS error 3. (Source: MSSQL_REPL, Error number: MSSQL_REPL20016) SQL 의 모든 복제는 Snapshot 복제를 전제로 하므로 모든 Transaction, merge 등 모든 복제는 Sn.. 더보기
MSCS 상에서SQL 2005 서버 설치시 11001 오류 MSCS 상에서 설치하는 경우 드물게 아래와 같은 오류를 만나면서 설치가 role back 되는 경우를 만날 수 있다. Error 11001 message is :no such host is known. 일순 당황하면서 방화벽이나 기타 네트워크 설정을 살펴보겠지만, 대부분의 경우 이전에 설치 실패를 하고 나서 발생하는 문제일 가능성이 높다. 실재로 해당 Host 에 접근하는 Network 의 문제가 아니라면, 기존에 남아 있는 Registry 의 문제일 확률이 매우 높다. 특히 이전의 설치 실패를 경험한 경우라면 더욱 그렇다. 이런 경우라면 아래의 Registry 에 설치하고자 하는 Instance 의 이름이 존재하는지 먼저 살펴보자. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.. 더보기
Domain controller 취약점 장애로 인한 SQL 2005 의 설치 오류 SQL 2005 서버의 설치시 오류 대응 방법 비단 SQL 2005 뿐만이 아니라 고가용성 서버의 경우 설치는 운영 체제 차원에서부터 숙련된 엔지니어의 설치 작업을 필요로 한다. 특히 신규 구축이 아니라 기존 구축된 환경에 대한 변경 작업을 수행할 때에는 다양한 기존의 환경을 고려하여야 하므로 숙련된 엔지니어라도 해당 환경을 정확하게 고려하여 deploy 한다는 것은 만만한 일이 아니다. 특히 기존의 active directory 를 사용하여 MSCS 상의 SQL 을 구축하는 경우 알 수 없는 형태의 오류를 만나는 경우가 종종 있는데, 특히 보안 그룹을 설정하는 동안 만나게 되는 오류는 원인을 추적하기가 매우 모호하고 그 이유 역시도 특이하므로 그에 대한 해결책을 가이드 하고자 한다. 특히 이 경우에는 .. 더보기