Database
-
성능 튜닝을 하면서 처음보는 그래픽 실행계획을 봤습니다. NL조인 실행계획에 X표시가 떠있었습니다. " 조인 조건자 없음" 이라는 설명과 함께 이건 뭐지? 라는 생각이 이승연(전 MSSQL MVP)님에게 물어봤더니 좋은 답변을 얻어서 정리하였습니다.해당 내용에 도움을 주신 이승연님 대단히 감사드립니다. 우선 해당 실행계획을 보면 다음과 같습니다. 처음에 튜닝 할 당시에 이게 뭐하는 실행계획인지 잘 몰랐습니다. 조인 시에 Miss? / 인덱스 오류? 이런 저런 생각을 하였는데 정말 이유는 간단했습니다. 조인의 조건자가 정말 없습니다. 그런데 상식적으로 조인을 걸고 ON 절을 해주지 않으면 조인이 안되지 않나? 이런 생각을 했는데... 잘 됩니다. 음...없다기 보다는 같은걸 2번 쓰거나 엉뚱한(?)것을 입..
조인 조건자 없음성능 튜닝을 하면서 처음보는 그래픽 실행계획을 봤습니다. NL조인 실행계획에 X표시가 떠있었습니다. " 조인 조건자 없음" 이라는 설명과 함께 이건 뭐지? 라는 생각이 이승연(전 MSSQL MVP)님에게 물어봤더니 좋은 답변을 얻어서 정리하였습니다.해당 내용에 도움을 주신 이승연님 대단히 감사드립니다. 우선 해당 실행계획을 보면 다음과 같습니다. 처음에 튜닝 할 당시에 이게 뭐하는 실행계획인지 잘 몰랐습니다. 조인 시에 Miss? / 인덱스 오류? 이런 저런 생각을 하였는데 정말 이유는 간단했습니다. 조인의 조건자가 정말 없습니다. 그런데 상식적으로 조인을 걸고 ON 절을 해주지 않으면 조인이 안되지 않나? 이런 생각을 했는데... 잘 됩니다. 음...없다기 보다는 같은걸 2번 쓰거나 엉뚱한(?)것을 입..
2016.01.06 -
가끔 튜닝을 하고자 할때 인덱스를 생성해서 미리 어떻게 동작하는지 알고 싶을 때가 있습니다. 보통은 테스트서버 or 로컬(개인PC)에서 데이터를 마이그레이션 하거나 일부러 더미 데이터를 넣어두고, 인덱스를 생성하여, 어떻게 실행계획이 동작하는지 테스트를 합니다. 하지만 이 방법은 대단히 귀찮(?)습니다. 그래서 실제 서버에서 가상으로 인덱스를 만들어서, 실 데이터를 가지고 테스트를 진행 할 수 있는 방법을 소개하고자 합니다. 하지만 이 방법은 통계를 이용하기 때문에 100% 정확하지는 않습니다. 하지만 실제 서비스에서 바로 결과를 확인 가능하며, 빠르게 할 수 있다는 이점이 있습니다. 이 인덱스는 Hypothetical Indexes 라고 부르며, Hypothetical는 가상의라는 뜻으로 나타납니다. ..
가상 인덱스 (Hypothetical Indexes)가끔 튜닝을 하고자 할때 인덱스를 생성해서 미리 어떻게 동작하는지 알고 싶을 때가 있습니다. 보통은 테스트서버 or 로컬(개인PC)에서 데이터를 마이그레이션 하거나 일부러 더미 데이터를 넣어두고, 인덱스를 생성하여, 어떻게 실행계획이 동작하는지 테스트를 합니다. 하지만 이 방법은 대단히 귀찮(?)습니다. 그래서 실제 서버에서 가상으로 인덱스를 만들어서, 실 데이터를 가지고 테스트를 진행 할 수 있는 방법을 소개하고자 합니다. 하지만 이 방법은 통계를 이용하기 때문에 100% 정확하지는 않습니다. 하지만 실제 서비스에서 바로 결과를 확인 가능하며, 빠르게 할 수 있다는 이점이 있습니다. 이 인덱스는 Hypothetical Indexes 라고 부르며, Hypothetical는 가상의라는 뜻으로 나타납니다. ..
2015.12.30 -
클러스터링 구축 작업에서 발생한 NetFx3 라는 오류 메시지를 기반으로 문제를 해결 한 과정 및 원인에 대해서 포스팅 하였습니다.본 과정은 SQL Server 2012에서 클러스터링 구축시 발생하는 오류에 관련된 내용이며, 이 내용은 SQL Server 2012 에서만 발생하는 것으로 보여집니다. (개인적 생각임)해당 작업은 다수의 시스템 재부팅이 있으므로, Live 서버에서 진행이 불가능 할 수 있습니다. 물론 클러스터링을 구축하지 않은 상태에서 하고 있지 않으시겠지만 혹시나하는 마음에 미리 언급 드립니다. 작업 환경- OS : Windows Server 2012 R2 - DB : SQL Server 2012 작업 사항 - 2대의 서버를 클러터링으로 묶어서 구축 하는 작업 진행 작업 시 발생 한 문제..
SQL Server Clustering 설치 시 NetFx3 오류클러스터링 구축 작업에서 발생한 NetFx3 라는 오류 메시지를 기반으로 문제를 해결 한 과정 및 원인에 대해서 포스팅 하였습니다.본 과정은 SQL Server 2012에서 클러스터링 구축시 발생하는 오류에 관련된 내용이며, 이 내용은 SQL Server 2012 에서만 발생하는 것으로 보여집니다. (개인적 생각임)해당 작업은 다수의 시스템 재부팅이 있으므로, Live 서버에서 진행이 불가능 할 수 있습니다. 물론 클러스터링을 구축하지 않은 상태에서 하고 있지 않으시겠지만 혹시나하는 마음에 미리 언급 드립니다. 작업 환경- OS : Windows Server 2012 R2 - DB : SQL Server 2012 작업 사항 - 2대의 서버를 클러터링으로 묶어서 구축 하는 작업 진행 작업 시 발생 한 문제..
2015.12.29 -
.Trc 파일을 합치는 경우가 거이 없어서, 이번에 꼭 필요하기에 테스트 한 내용을 정리하여 올립니다.일반적으로 트레이스 파일은 합치는 경우가 없는데 저 같은 경우 한번에 보기 위해서 이번에 합치는 작업을 하였습니다. pdf파일을 여시면 다음과 같은 식으로 문서화 되어있습니다. 감사합니다.
Trace 파일 통합.Trc 파일을 합치는 경우가 거이 없어서, 이번에 꼭 필요하기에 테스트 한 내용을 정리하여 올립니다.일반적으로 트레이스 파일은 합치는 경우가 없는데 저 같은 경우 한번에 보기 위해서 이번에 합치는 작업을 하였습니다. pdf파일을 여시면 다음과 같은 식으로 문서화 되어있습니다. 감사합니다.
2015.12.15 -
금일 점검작업 이후에 서비스를 정상적으로 오픈 한 이후에 백업이 계속 실패하여 확인 결과 계정 문제임을 발견하였습니다. ㉠장애발생 내용 : - SQL Server의 데이터베이스 Full / Transation 백업을 NAS서버에 받고 있음- 점검 작업으로 인한 서버 재부팅 이후에 백업이 실패 ㉡장애관려 로그 Windows Event Log - 로그 이름 : 응용 프로그램- 원본 : MSSQLSERVER- 이벤트 ID : 18204- 내용 BackupDiskFile::CreateMedia: 백업 장치 '네트워크 경로'이(가) create하지 못했습니다. 운영 체제 오류 = 1326(로그온 실패: 알 수 없는 사용자 이름이거나 암호가 틀립니다.). - 로그 이름 : 응용 프로그램- 원본 : MSSQLSERV..
계정문제로 인한 백업실패금일 점검작업 이후에 서비스를 정상적으로 오픈 한 이후에 백업이 계속 실패하여 확인 결과 계정 문제임을 발견하였습니다. ㉠장애발생 내용 : - SQL Server의 데이터베이스 Full / Transation 백업을 NAS서버에 받고 있음- 점검 작업으로 인한 서버 재부팅 이후에 백업이 실패 ㉡장애관려 로그 Windows Event Log - 로그 이름 : 응용 프로그램- 원본 : MSSQLSERVER- 이벤트 ID : 18204- 내용 BackupDiskFile::CreateMedia: 백업 장치 '네트워크 경로'이(가) create하지 못했습니다. 운영 체제 오류 = 1326(로그온 실패: 알 수 없는 사용자 이름이거나 암호가 틀립니다.). - 로그 이름 : 응용 프로그램- 원본 : MSSQLSERV..
2015.12.10 -
성능을 수집하기 위해서 사용되는 일반적인 도구인 SQL Server Profiler는 흔히 사용하는 도구입니다.하지만, Profiler 사용 시 예기치 못한 오류로 갑자기 종료되는 경우 Trace를 중지,종료 할 수 없어 당황하는 경우가 있습니다. 그래서 SSMS에서 쿼리를 이용하여 Trace를 조작하는 방법을 살펴 보겠습니다. 우선 Trace의 상태를 살펴보기 위해서 sys.trace를 이용 합니다. select * from sys.traces아래와 같은 결과가 sys.traces에 의해서 출력되며, 각각의 항목은 MSDN에 자세히 나와 있습니다. 항목 별 설명 (https://msdn.microsoft.com/ko-kr/library/ms178579(v=sql.120).aspx)열 이름데이터 형식설명..
Query를 이용한 Trace 조작성능을 수집하기 위해서 사용되는 일반적인 도구인 SQL Server Profiler는 흔히 사용하는 도구입니다.하지만, Profiler 사용 시 예기치 못한 오류로 갑자기 종료되는 경우 Trace를 중지,종료 할 수 없어 당황하는 경우가 있습니다. 그래서 SSMS에서 쿼리를 이용하여 Trace를 조작하는 방법을 살펴 보겠습니다. 우선 Trace의 상태를 살펴보기 위해서 sys.trace를 이용 합니다. select * from sys.traces아래와 같은 결과가 sys.traces에 의해서 출력되며, 각각의 항목은 MSDN에 자세히 나와 있습니다. 항목 별 설명 (https://msdn.microsoft.com/ko-kr/library/ms178579(v=sql.120).aspx)열 이름데이터 형식설명..
2015.12.07 -
DBA의 업무 중에 무엇하나 중요하지 않은 것이 없지만, 개인적으로 백업/복원은 가장 중요한 업무라고 생각 됩니다. 이번에 백업파일에 대한 이슈가 발생하면서 백업파일에 대한 확인을 꼭 해야하며, 백업 받은 파일을 주기적으로 복원하여, 복원에 문제가 없는지 확인해야 한다는 것을 느꼈습니다. 이슈는 다음과 같이 발생하였습니다. NAS장비로 백업을 하여 이 백업을 다시 2차 백업 서버로 옮기는 솔루션이 압축을 하는데, 이 솔루션이 압축을 하고 다시 가져와서 복원 하고자 할 때 압축된 .bak 파일의 압축을 정상적으로 풀지 못하여 문제가 발생 하였습니다. 모든 .bak 파일이 그런것은 아니고, 크기가 3GB 이상의 파일만 깨지는 것을 확인 하였습니다. 아무래도 솔루션 자체적으로 용량이 일정이상 크기 이상이라면 ..
Restore 에 대하여...DBA의 업무 중에 무엇하나 중요하지 않은 것이 없지만, 개인적으로 백업/복원은 가장 중요한 업무라고 생각 됩니다. 이번에 백업파일에 대한 이슈가 발생하면서 백업파일에 대한 확인을 꼭 해야하며, 백업 받은 파일을 주기적으로 복원하여, 복원에 문제가 없는지 확인해야 한다는 것을 느꼈습니다. 이슈는 다음과 같이 발생하였습니다. NAS장비로 백업을 하여 이 백업을 다시 2차 백업 서버로 옮기는 솔루션이 압축을 하는데, 이 솔루션이 압축을 하고 다시 가져와서 복원 하고자 할 때 압축된 .bak 파일의 압축을 정상적으로 풀지 못하여 문제가 발생 하였습니다. 모든 .bak 파일이 그런것은 아니고, 크기가 3GB 이상의 파일만 깨지는 것을 확인 하였습니다. 아무래도 솔루션 자체적으로 용량이 일정이상 크기 이상이라면 ..
2015.12.04 -
백업을 받은 파일을 복원 시 다음과 같은 메시지가 발생 하면, SQL Server의 버전을 확인 해야 합니다. 에러 메시지 메시지 3241, 수준 16, 상태 13, 줄 1장치 'D:\TEST.BAK'의 미디어 패밀리 유형이 잘못되었습니다. SQL Server는 이 미디어 패밀리를 처리할 수 없습니다.메시지 3013, 수준 16, 상태 1, 줄 1RESTORE DATABASE이(가) 비정상적으로 종료됩니다. 이는 백업 파일을 받은 곳의 버전 또는 호환성 수준이 높고, 복원하고자 하는 서버의 버전 또는 호환성 수준이 낮을 경우에 발생 합니다.백업 파일을 받고, 복원시 확인 하는 'FILELISTONLY'에서도 다음과 같은 문제가 발생 합니다. restore filelistonly from disk = 'D..
메시지 3241, 수준 16, 상태 13백업을 받은 파일을 복원 시 다음과 같은 메시지가 발생 하면, SQL Server의 버전을 확인 해야 합니다. 에러 메시지 메시지 3241, 수준 16, 상태 13, 줄 1장치 'D:\TEST.BAK'의 미디어 패밀리 유형이 잘못되었습니다. SQL Server는 이 미디어 패밀리를 처리할 수 없습니다.메시지 3013, 수준 16, 상태 1, 줄 1RESTORE DATABASE이(가) 비정상적으로 종료됩니다. 이는 백업 파일을 받은 곳의 버전 또는 호환성 수준이 높고, 복원하고자 하는 서버의 버전 또는 호환성 수준이 낮을 경우에 발생 합니다.백업 파일을 받고, 복원시 확인 하는 'FILELISTONLY'에서도 다음과 같은 문제가 발생 합니다. restore filelistonly from disk = 'D..
2015.12.01 -
클러스터링으로 묶여있는 서버에서 Active 장비에서 Standby 장비로 넘기고 서버를 재부팅 하려는 과정에서 클러스터링이 넘어가지 않고, SQL Serve가 시작되지 않는 상황이 발생하여, 지인 분의 도움으로 해결하였습니다. 결론적으로 SSL 인증서 문제였으며, 인증서를 삭제함으로써 문제를 해결하였습니다. 해당 포스트는 그 과정을 상세히 설명하였습니다. 1. 장비 구성 및 버전 - 장비는 클러스터링으로 묶여 있으며, 두 서버 모두 SQL Server 2012 STD를 사용하고 있습니다. 2. 장애 당시 상황 ㉠ Node 1 장비(Active)의 Windows Update를 모두 하고 재부팅을 하고자 함㉡ Node 1 장비를 Standby 상태로 만들고, Node 2를 Active 로 만들어서 순차적으..
SSL 인증서 문제로 인한 SQL Server 시작 불가능클러스터링으로 묶여있는 서버에서 Active 장비에서 Standby 장비로 넘기고 서버를 재부팅 하려는 과정에서 클러스터링이 넘어가지 않고, SQL Serve가 시작되지 않는 상황이 발생하여, 지인 분의 도움으로 해결하였습니다. 결론적으로 SSL 인증서 문제였으며, 인증서를 삭제함으로써 문제를 해결하였습니다. 해당 포스트는 그 과정을 상세히 설명하였습니다. 1. 장비 구성 및 버전 - 장비는 클러스터링으로 묶여 있으며, 두 서버 모두 SQL Server 2012 STD를 사용하고 있습니다. 2. 장애 당시 상황 ㉠ Node 1 장비(Active)의 Windows Update를 모두 하고 재부팅을 하고자 함㉡ Node 1 장비를 Standby 상태로 만들고, Node 2를 Active 로 만들어서 순차적으..
2015.11.27 -
성능 Perfmon카운터 정리 문서 추가적으로 업데이트 합니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다.2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다.3. * 으로 시작 하는 부분은 항목에 대한 용어 및 부연 설명입니다.4. 문서의 내용은 어디까지나 서버의 스팩,용도에 따라 다릅니다. 이점을 유의 하시기 바랍니다. SQLServer:Access Methods\Forwarded Records/sec - http://yoonsy.tistory.com/8 (제거 방법)- 현재 운영중인 환경에서 얼마나 많은 Forward Pointer를 사용하여 데이터를 엑세스 하는지 확인하는 성능 카운터 입니다. * Forward Pointer란 Heap 테이블의 가변형 데이터..
SQL Server Perfmon Counter성능 Perfmon카운터 정리 문서 추가적으로 업데이트 합니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다.2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다.3. * 으로 시작 하는 부분은 항목에 대한 용어 및 부연 설명입니다.4. 문서의 내용은 어디까지나 서버의 스팩,용도에 따라 다릅니다. 이점을 유의 하시기 바랍니다. SQLServer:Access Methods\Forwarded Records/sec - http://yoonsy.tistory.com/8 (제거 방법)- 현재 운영중인 환경에서 얼마나 많은 Forward Pointer를 사용하여 데이터를 엑세스 하는지 확인하는 성능 카운터 입니다. * Forward Pointer란 Heap 테이블의 가변형 데이터..
2015.11.19 -
파라미터 스니핑에 대해서 지난 포스트에 작성하였습니다.지난 번에 이어서 파라미터 스니핑이 문제가 언제 발생하며, 해결은 어떻게 해야 하는지 공부하여, 정리한 포스트를 이번에 작성 합니다. Ⅰ. 파라미터 스니핑은 언제 성능에 영향을 주는가? 파라미터 스니핑이 문제가 되는 경우는 데이터의 분포가 적고 얼마 없는 데이터를 조회하면서 플랜A를 만들었는데, 데이터의 분포도가 많은 데이터를 조회할때 문제가 될 수 있습니다. 쉽게 이야기하면 회사에서 행사를 열었는데, 오는 사람마다 선물을 하나씩 준다고 가정합니다. 그런데, 생각보다 사람이 더 많이와서 줄 선물을 만들어서 바로바로줘야하는 경우죠. 그러니 느려질 수 밖에 없죠. 앞서 포스트에서 말했던 것 처럼 옵티마이저는 샘플링된 데이터를 보고 하기 때문에 우리가 예측..
Parameter Sniffing Trouble Shooting파라미터 스니핑에 대해서 지난 포스트에 작성하였습니다.지난 번에 이어서 파라미터 스니핑이 문제가 언제 발생하며, 해결은 어떻게 해야 하는지 공부하여, 정리한 포스트를 이번에 작성 합니다. Ⅰ. 파라미터 스니핑은 언제 성능에 영향을 주는가? 파라미터 스니핑이 문제가 되는 경우는 데이터의 분포가 적고 얼마 없는 데이터를 조회하면서 플랜A를 만들었는데, 데이터의 분포도가 많은 데이터를 조회할때 문제가 될 수 있습니다. 쉽게 이야기하면 회사에서 행사를 열었는데, 오는 사람마다 선물을 하나씩 준다고 가정합니다. 그런데, 생각보다 사람이 더 많이와서 줄 선물을 만들어서 바로바로줘야하는 경우죠. 그러니 느려질 수 밖에 없죠. 앞서 포스트에서 말했던 것 처럼 옵티마이저는 샘플링된 데이터를 보고 하기 때문에 우리가 예측..
2015.11.18 -
Parameter Sniffing(파라미터 스니핑)은 기존에 제가 알기론 성능에 나쁜 영향을 미치는 것으로 알고 있었습니다. 하지만 파라미터 스니핑은 SQL Server에서 대부분의 프로세스에서 성능을 향상 시킵니다. 이것은 단순한 용어이며, 파라미터 스니핑이 성능에 나쁜 영향을 주는 것은 아닙니다. 하지만 파라미터 스니핑에 의한 성능 문제 발생 시 엄청난 장애로 이어질 수 있습니다. (실제 30분 작업이 7시간이 걸려서 장애가 발생 한 적이 있습니다.) 파라미터 스니핑은 옵티마이저와 관련이 있습니다. 옵티마이저는 실행계획(Execution Plan)을 작성하기 위해서 통계 정보의 내용을 이용합니다. 그러므로 옵티마이저에 의해 생성된 실행 계획의 정확도는 통계 정보의 정확도와 통계를 생성하는데 사용된 데..
Parameter Sniffing에 관하여...Parameter Sniffing(파라미터 스니핑)은 기존에 제가 알기론 성능에 나쁜 영향을 미치는 것으로 알고 있었습니다. 하지만 파라미터 스니핑은 SQL Server에서 대부분의 프로세스에서 성능을 향상 시킵니다. 이것은 단순한 용어이며, 파라미터 스니핑이 성능에 나쁜 영향을 주는 것은 아닙니다. 하지만 파라미터 스니핑에 의한 성능 문제 발생 시 엄청난 장애로 이어질 수 있습니다. (실제 30분 작업이 7시간이 걸려서 장애가 발생 한 적이 있습니다.) 파라미터 스니핑은 옵티마이저와 관련이 있습니다. 옵티마이저는 실행계획(Execution Plan)을 작성하기 위해서 통계 정보의 내용을 이용합니다. 그러므로 옵티마이저에 의해 생성된 실행 계획의 정확도는 통계 정보의 정확도와 통계를 생성하는데 사용된 데..
2015.11.17 -
DB서버에 perfmon을 저장하는 방법을 이전 포스트에서 포스팅 했습니다. http://burning-dba.tistory.com/43 하지만 perfmon의 row 수가 많아지면, 성능 이슈 및 용량의 이슈가 발생합니다. 현재 1분에 1건씩 perfmon을 수집하여, 데이터를 넣고 있는데 한달정도 운영하였는데 건수가 벌써 150만건을 넘었습니다. 이렇게 많은 건수가 차후에 쌓이고 쌓여, 성능 이슈가 발생하거나 용량이 문제가 생길 수 있습니다. 그래서 이번 포스트에서는 지난 번의 내용에서 응용을 하여, 5개씩 (5분) 1 set로 지정하여, 데이터를 1/5로 줄여, 데이터를 old 테이블에 저장하는 방법에 대해서 적어보고자 합니다. 요구 사항은 다음과 같습니다. ① 기존의 데이터를 보존한다. ② 데이터..
DB에 저장한 Perfmon 데이터 관리DB서버에 perfmon을 저장하는 방법을 이전 포스트에서 포스팅 했습니다. http://burning-dba.tistory.com/43 하지만 perfmon의 row 수가 많아지면, 성능 이슈 및 용량의 이슈가 발생합니다. 현재 1분에 1건씩 perfmon을 수집하여, 데이터를 넣고 있는데 한달정도 운영하였는데 건수가 벌써 150만건을 넘었습니다. 이렇게 많은 건수가 차후에 쌓이고 쌓여, 성능 이슈가 발생하거나 용량이 문제가 생길 수 있습니다. 그래서 이번 포스트에서는 지난 번의 내용에서 응용을 하여, 5개씩 (5분) 1 set로 지정하여, 데이터를 1/5로 줄여, 데이터를 old 테이블에 저장하는 방법에 대해서 적어보고자 합니다. 요구 사항은 다음과 같습니다. ① 기존의 데이터를 보존한다. ② 데이터..
2015.11.11 -
백업을 만들고, 삭제 하기 위해서 사용하는 명령어(?) 입니다. 해당 프로시저는 MSDN에 문서화 되어 있지 않습니다.백업 파일을 삭제할때 windows 스케줄러 및 파워쉘 등을 이용하거나, xp_cmdshell를 이용하여, 삭제하는 경우가 있는데 그보다 더욱 간단하게 처리 가능 합니다.하지만 해당 프로시저는 MSDN에 나와있지 않은 만큼 주의를 기울여서 사용해야 하며, 많은 테스트를 통해서 검증을 거친 이후에 사용하시길 권장 합니다. 일단 기본적인 예시를 보면 다음과 같습니다. exec master.sys.xp_delete_file 0,N'D:\MSSQL_BACKUP\',N'BAK',N'2015-11-10 17:00',1 크게 복잡하거나 하지는 않지만 많은 파라미터를 받고 있습니다. 하지만 크게 어려운..
xp_delete_file백업을 만들고, 삭제 하기 위해서 사용하는 명령어(?) 입니다. 해당 프로시저는 MSDN에 문서화 되어 있지 않습니다.백업 파일을 삭제할때 windows 스케줄러 및 파워쉘 등을 이용하거나, xp_cmdshell를 이용하여, 삭제하는 경우가 있는데 그보다 더욱 간단하게 처리 가능 합니다.하지만 해당 프로시저는 MSDN에 나와있지 않은 만큼 주의를 기울여서 사용해야 하며, 많은 테스트를 통해서 검증을 거친 이후에 사용하시길 권장 합니다. 일단 기본적인 예시를 보면 다음과 같습니다. exec master.sys.xp_delete_file 0,N'D:\MSSQL_BACKUP\',N'BAK',N'2015-11-10 17:00',1 크게 복잡하거나 하지는 않지만 많은 파라미터를 받고 있습니다. 하지만 크게 어려운..
2015.11.10 -
업무에서 오라클을 사용 하는 서버가 존재하여, 오라클 공부를 하면서, 가장 기초적인 테이블 스페이스 생성 및 삭제를 해봤습니다. MSSQL 에서 database가 오라클에서는 테이블 스페이스라고 하는 듯 합니다. Table space 생성 create tablespace TEST datafile 'D:\oracle\TEST.dbf size 1024M autoextend on next 100M maxsize unlimited logging online permanent extent management local autoallocate blocksize 8k; 이것을 하나씩 쪼개보면 이렇습니다. 처음 구분이 필요한 3개의 SQL문 이외에는 순서데로 설명드리겠습니다. ① tablespace의 이름을 뜻 합니다..
ORACLE TABLESPACE 생성/삭제업무에서 오라클을 사용 하는 서버가 존재하여, 오라클 공부를 하면서, 가장 기초적인 테이블 스페이스 생성 및 삭제를 해봤습니다. MSSQL 에서 database가 오라클에서는 테이블 스페이스라고 하는 듯 합니다. Table space 생성 create tablespace TEST datafile 'D:\oracle\TEST.dbf size 1024M autoextend on next 100M maxsize unlimited logging online permanent extent management local autoallocate blocksize 8k; 이것을 하나씩 쪼개보면 이렇습니다. 처음 구분이 필요한 3개의 SQL문 이외에는 순서데로 설명드리겠습니다. ① tablespace의 이름을 뜻 합니다..
2015.11.06 -
MSSQL Server 2014 의 In-Memory OLPT관련하여 정리한 내용입니다.PPT 와 스크립트가 첨부되어 있습니다. 혹시 수정사항 및 잘못된 부분 또는 궁금한 사항은 waws01@naver.com로 메일 주세요 ^.,^해당 내용은 http://blog.naver.com/gun0626 김영건님의 블로그를 대부분 참조하였으며, MSDN과 영문 블로그를 참조하였습니다.
IN-Memory OLPT (MSSQL 2014)MSSQL Server 2014 의 In-Memory OLPT관련하여 정리한 내용입니다.PPT 와 스크립트가 첨부되어 있습니다. 혹시 수정사항 및 잘못된 부분 또는 궁금한 사항은 waws01@naver.com로 메일 주세요 ^.,^해당 내용은 http://blog.naver.com/gun0626 김영건님의 블로그를 대부분 참조하였으며, MSDN과 영문 블로그를 참조하였습니다.
2015.10.28 -
안녕하세요. 금일 발생하였던 문제에 대해서 공부를 할겸해서 포스트를 작성합니다.본 내용은 이스트럭(강동운님)님의 SQLER 글에서 대부분 내용을 참고하였으며, 몇가지 설명과 그림을 붙였습니다. 오늘 모니터링 중에 데드락이 발생 한 SQL Server Error 로그가 있어서, 데드락 그랩을 잡아두고, 확인을 하였습니다. 상황을 들어보니 개발자분이 실서버에 데이터를 확인하기 위해 많은 수의 Row를 SELECT하면서 with(nolock)을 빼고 계속해서 반복적으로 수행하였고, 이때 UPDATE문이 있는 프로시저가 발동하면서 데드락이 발생하였습니다. 다행히 UPDATE되는 프로시저가 살고, SELECT가 죽어서 데이터를 이상이 없었습니다.그런데, 저의 지금까지의 경험으로는 보통 데드락은 UPDATE UPD..
SELECT 에 의한 DeadLock 발생안녕하세요. 금일 발생하였던 문제에 대해서 공부를 할겸해서 포스트를 작성합니다.본 내용은 이스트럭(강동운님)님의 SQLER 글에서 대부분 내용을 참고하였으며, 몇가지 설명과 그림을 붙였습니다. 오늘 모니터링 중에 데드락이 발생 한 SQL Server Error 로그가 있어서, 데드락 그랩을 잡아두고, 확인을 하였습니다. 상황을 들어보니 개발자분이 실서버에 데이터를 확인하기 위해 많은 수의 Row를 SELECT하면서 with(nolock)을 빼고 계속해서 반복적으로 수행하였고, 이때 UPDATE문이 있는 프로시저가 발동하면서 데드락이 발생하였습니다. 다행히 UPDATE되는 프로시저가 살고, SELECT가 죽어서 데이터를 이상이 없었습니다.그런데, 저의 지금까지의 경험으로는 보통 데드락은 UPDATE UPD..
2015.10.28 -
안녕하세요. 성능카운터 공부하면서 정리한 내용을 공유합니다. 아마 보시다보면 여기저기서 봤던 내용이 있을 수 있습니다. 나름데로, 정리한 내용이라 혹시 잘못 된 부분은 말씀해주세요.또한 포스트를 보면서 꼭 알야할 상황은 시스템의 설정과 스팩에 따라서 수치는 다를수 있습니다. 예를 들어서 ad-hoc이 엄청나게 많은 서버에서 compile은 당연히 많을 수 밖에 없습니다. 그 기준은 시스템의 환경에 따라서 다르게 보시면 좋을 듯 합니다. 아직 미완성 부분이라서 전부 내용이 있지는 않습니다. 문서 보는 방법을 우선 보시고 포스트를 보시면 편할 것 입니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다. 2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다. 3. * 으로 시..
MSSQL_성능 카운터(미완성)안녕하세요. 성능카운터 공부하면서 정리한 내용을 공유합니다. 아마 보시다보면 여기저기서 봤던 내용이 있을 수 있습니다. 나름데로, 정리한 내용이라 혹시 잘못 된 부분은 말씀해주세요.또한 포스트를 보면서 꼭 알야할 상황은 시스템의 설정과 스팩에 따라서 수치는 다를수 있습니다. 예를 들어서 ad-hoc이 엄청나게 많은 서버에서 compile은 당연히 많을 수 밖에 없습니다. 그 기준은 시스템의 환경에 따라서 다르게 보시면 좋을 듯 합니다. 아직 미완성 부분이라서 전부 내용이 있지는 않습니다. 문서 보는 방법을 우선 보시고 포스트를 보시면 편할 것 입니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다. 2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다. 3. * 으로 시..
2015.10.27 -
Windows에 성능분석을 위해 존재하는 Perfmon을 DB에 저장하여, 쿼리를 이용하여 가공하거나 다양한 형태로 볼 수 있습니다.하여, 이번 포스트에서는 Perfmon으로 수집된 정보를 DB에 저장하는 방법에 대해서 작성하였습니다. 테스트 환경 OS : Windows7 SQL Server : SQL 2012 STD 대략적인 순서는 Database생성->ODBC등록->PERFMON추가 및 수집 입니다. 1. ODBC 등록 제어판에 가서 ODBC를 입력하면 위와 같이 "데이터 원본(ODBC)설정이 나옵니다. 이를 클릭하면 다음과 같이 나옵니다. 그림을 클릭하면, 다음과 같이 나오는데 해당 창에서 시스템DSN 탭으로 들어갑니다. 탭으로 들어가서 '추가(D)...'를 클릭하여, ODBC를 추가합니다. 추가를..
Perfmon을 MSSQL DB에 저장Windows에 성능분석을 위해 존재하는 Perfmon을 DB에 저장하여, 쿼리를 이용하여 가공하거나 다양한 형태로 볼 수 있습니다.하여, 이번 포스트에서는 Perfmon으로 수집된 정보를 DB에 저장하는 방법에 대해서 작성하였습니다. 테스트 환경 OS : Windows7 SQL Server : SQL 2012 STD 대략적인 순서는 Database생성->ODBC등록->PERFMON추가 및 수집 입니다. 1. ODBC 등록 제어판에 가서 ODBC를 입력하면 위와 같이 "데이터 원본(ODBC)설정이 나옵니다. 이를 클릭하면 다음과 같이 나옵니다. 그림을 클릭하면, 다음과 같이 나오는데 해당 창에서 시스템DSN 탭으로 들어갑니다. 탭으로 들어가서 '추가(D)...'를 클릭하여, ODBC를 추가합니다. 추가를..
2015.10.19 -
제가 알고 있기로 통계정보는 업데이트 하는 동안 테이블에 Lock이 걸려서 부하가 있으므로, 통계의 업데이트는 점검시간에 하는 것으로 알고 있었습니다. 하지만 비동기 옵션을 통해서 이러한 현상을 극복 할 수 있습니다. 위의 글이 잘 보이지 않는 다면 아래의 링크를 클릭하면 됩니다.http://technet.microsoft.com/ko-kr/library/bb522682(v=sql.105).aspx 비동기 업데이트 옵션을 이용한다면, 성능이 영향을 주지 않는지 테스트 하기 위해서 간단한 테스트를 진행 했습니다. 비동기 옵션을 OFF로 해두고 테스트를 진행하고, ON으로 한 뒤 진행 해보았습니다. 위의 통계옵션은 알고 있을 것이라고 생각 됩니다. 통계 정보가 업데이트를 되고 있는지 확인 하기 위해서는 다음..
MSSQL_AUTO_UPDATE_STATISTICS_ASYNC(비동기업데이트)제가 알고 있기로 통계정보는 업데이트 하는 동안 테이블에 Lock이 걸려서 부하가 있으므로, 통계의 업데이트는 점검시간에 하는 것으로 알고 있었습니다. 하지만 비동기 옵션을 통해서 이러한 현상을 극복 할 수 있습니다. 위의 글이 잘 보이지 않는 다면 아래의 링크를 클릭하면 됩니다.http://technet.microsoft.com/ko-kr/library/bb522682(v=sql.105).aspx 비동기 업데이트 옵션을 이용한다면, 성능이 영향을 주지 않는지 테스트 하기 위해서 간단한 테스트를 진행 했습니다. 비동기 옵션을 OFF로 해두고 테스트를 진행하고, ON으로 한 뒤 진행 해보았습니다. 위의 통계옵션은 알고 있을 것이라고 생각 됩니다. 통계 정보가 업데이트를 되고 있는지 확인 하기 위해서는 다음..
2015.07.01 -
DB를 관리하다 보면 로그 파일이 불필요하게 늘어나거나 디스크의 용량이 부족하여 공간을 확보해야 할 필요가 있다. 이럴때 사용 가능한 것이 Shrink이다. 필자가 생각하기에 Shrink는 방청소의 개념이라고 생각하면 될 것 같다. 사전적의미로 줄어들다, 줄어들게 하다라고 씌여있다. 확실히 맞는 말이다. 불필요하게 남은 공간을 축소해서 확 줄여주니깐.. 이번 포스트에서는 SHRINKDATABASE 기능을 알아 보도록하자. 차후 2번째 포스트에서는 SHRINKFILE을 알아 보도록 하겠다. 테스트를 위해서 데이터베이스를 한개 생성해 보도록하자. USE master GO CREATE DATABASE SHRINKDB ON PRIMARY(NAME = SHRINKDB,FILENAME = N'C:\SHRINK\SH..
MsSQL Server_Shrink(쉬링크) / ①SHRINKDATABASEDB를 관리하다 보면 로그 파일이 불필요하게 늘어나거나 디스크의 용량이 부족하여 공간을 확보해야 할 필요가 있다. 이럴때 사용 가능한 것이 Shrink이다. 필자가 생각하기에 Shrink는 방청소의 개념이라고 생각하면 될 것 같다. 사전적의미로 줄어들다, 줄어들게 하다라고 씌여있다. 확실히 맞는 말이다. 불필요하게 남은 공간을 축소해서 확 줄여주니깐.. 이번 포스트에서는 SHRINKDATABASE 기능을 알아 보도록하자. 차후 2번째 포스트에서는 SHRINKFILE을 알아 보도록 하겠다. 테스트를 위해서 데이터베이스를 한개 생성해 보도록하자. USE master GO CREATE DATABASE SHRINKDB ON PRIMARY(NAME = SHRINKDB,FILENAME = N'C:\SHRINK\SH..
2015.07.01 -
스터디에서 나온 질문 중에 다음과 같은 질문이 있어서 해당 포스트를 작성하였습니다. 질문 : Forced param할 때 캐릭터 타입 선언된 길이까지 같아야 재컴파일을 하는가? 또한 강제매개 변수화가 이해가 안가시는 분들은 아래의 링크를 참조하시기 바랍니다.강제 매개변수화 : http://technet.microsoft.com/ko-kr/library/ms175037(v=sql.105).aspx단순 매개변수화 : http://technet.microsoft.com/ko-kr/library/ms186219(v=sql.105).aspx 우선 현재 강제매개변수화를 선언해 줍니다.ALTER DATABASE WorkDB SET PARAMETERIZATION FORCEDGO 선언이 잘 되었는지 확인 합니다.SELE..
MsSQL Server_강제 매개변수화 테스트스터디에서 나온 질문 중에 다음과 같은 질문이 있어서 해당 포스트를 작성하였습니다. 질문 : Forced param할 때 캐릭터 타입 선언된 길이까지 같아야 재컴파일을 하는가? 또한 강제매개 변수화가 이해가 안가시는 분들은 아래의 링크를 참조하시기 바랍니다.강제 매개변수화 : http://technet.microsoft.com/ko-kr/library/ms175037(v=sql.105).aspx단순 매개변수화 : http://technet.microsoft.com/ko-kr/library/ms186219(v=sql.105).aspx 우선 현재 강제매개변수화를 선언해 줍니다.ALTER DATABASE WorkDB SET PARAMETERIZATION FORCEDGO 선언이 잘 되었는지 확인 합니다.SELE..
2015.07.01 -
리소스 매니저를 스터디하면서 의문점이 생겨서 이번 Post를 작성합니다.리소스 매니져는 책이나 인터넷에 많이 있으니 참고하시기 바랍니다. 이번 질문은 다음과 같습니다. 만약에 리소스 매니져를 통해서 CPU의 사용량을 30% 30% 50% 걸면 110% 인대 과연 CPU를 어떻게 사용할까?이것이 질문이였습니다. 테스트 결과는 다음과 같습니다.우선 Joo Hyoung Kwon 의 3가지 유저를 만들었습니다. 3가지 유저는 각각Joo - 30% 제한Hyoung - 30% 제한Kwon - 50% 제한 이렇게 줬습니다. 또한 제가 3명의 유저가 100%를 못치고 90%정도밖에 CPU가 올라가지 않아서 제가 sa계정으로 똑같은 쿼리를 돌렸습니다. 일부러 CPU가 100%를 치도록 만든것이죠 처음에 sa를 돌렸습니다..
MsSQL_리소스 매니져(Resoure Manager) 테스트리소스 매니저를 스터디하면서 의문점이 생겨서 이번 Post를 작성합니다.리소스 매니져는 책이나 인터넷에 많이 있으니 참고하시기 바랍니다. 이번 질문은 다음과 같습니다. 만약에 리소스 매니져를 통해서 CPU의 사용량을 30% 30% 50% 걸면 110% 인대 과연 CPU를 어떻게 사용할까?이것이 질문이였습니다. 테스트 결과는 다음과 같습니다.우선 Joo Hyoung Kwon 의 3가지 유저를 만들었습니다. 3가지 유저는 각각Joo - 30% 제한Hyoung - 30% 제한Kwon - 50% 제한 이렇게 줬습니다. 또한 제가 3명의 유저가 100%를 못치고 90%정도밖에 CPU가 올라가지 않아서 제가 sa계정으로 똑같은 쿼리를 돌렸습니다. 일부러 CPU가 100%를 치도록 만든것이죠 처음에 sa를 돌렸습니다..
2015.07.01 -
작업을 하거나 어떠한 프로세스에 무엇을 추가 할때 문자를 자르거나 공백을 제거 하는 경우가 있다.특히 코드의 경우 DB상에서 잘라서 줘야 하거나 하는 경우가 있다. 이럴 때 공백을 제거하는 방법을 알아보자. 1. 왼쪽 공백 제거 LTRIMDECLARE @string_to_trim varchar(60)SET @string_to_trim = ' Five spaces are at the beginning of this string.'SELECT 'Here is the string without the leading spaces: ' + LTRIM(@string_to_trim)SELECT 'Here is the string without the leading spaces: ' + @string_to_trimGO..
MsSQL Replace작업을 하거나 어떠한 프로세스에 무엇을 추가 할때 문자를 자르거나 공백을 제거 하는 경우가 있다.특히 코드의 경우 DB상에서 잘라서 줘야 하거나 하는 경우가 있다. 이럴 때 공백을 제거하는 방법을 알아보자. 1. 왼쪽 공백 제거 LTRIMDECLARE @string_to_trim varchar(60)SET @string_to_trim = ' Five spaces are at the beginning of this string.'SELECT 'Here is the string without the leading spaces: ' + LTRIM(@string_to_trim)SELECT 'Here is the string without the leading spaces: ' + @string_to_trimGO..
2015.07.01