Database/MSSQL Server
-
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 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 -
이번 세미나를 준비하면서 커서에 대해서 발표를 맡게되면서 커서를 공부하게 되었습니다.필자는 커서를 잘 사용하지 않다보니 별로 신경도 써본적이 없고 또한 인터넷에도 많은 자료가 있지는 않았습니다. 커서의 경우 당연히 느리다고 생각하고 잘 쓰지 않으므로 Post에서 커서의 옵션을 비중있게 다루거나 자세하게 설명한 부분은 없었습니다. 그래서 제가 직접 공부한 내용을 바탕으로 Post를 작성합니다. 우선 이번 Post에서 커서의 기본적인 개념에 대해서 살펴보겠습니다.자세한 옵션은 다음 Post에서 설명하겠습니다. 커서는 우선 2가지 종류로 나뉩니다. ⓐ 클라이언트 커서 : Cusor의 결과 집합이 MSSQL Server로 부터 Network를 통해서 Client로 전달되어 Client의 Memory , 임시파일..
MsSQL_커서(Cusor)이번 세미나를 준비하면서 커서에 대해서 발표를 맡게되면서 커서를 공부하게 되었습니다.필자는 커서를 잘 사용하지 않다보니 별로 신경도 써본적이 없고 또한 인터넷에도 많은 자료가 있지는 않았습니다. 커서의 경우 당연히 느리다고 생각하고 잘 쓰지 않으므로 Post에서 커서의 옵션을 비중있게 다루거나 자세하게 설명한 부분은 없었습니다. 그래서 제가 직접 공부한 내용을 바탕으로 Post를 작성합니다. 우선 이번 Post에서 커서의 기본적인 개념에 대해서 살펴보겠습니다.자세한 옵션은 다음 Post에서 설명하겠습니다. 커서는 우선 2가지 종류로 나뉩니다. ⓐ 클라이언트 커서 : Cusor의 결과 집합이 MSSQL Server로 부터 Network를 통해서 Client로 전달되어 Client의 Memory , 임시파일..
2015.07.01 -
SQL Server에서 MDF 파일의 용량이 모두 찾으면 자동증가 옵션에 따라서, 그 크기데로 증가합니다. 하지만 어떠한 DB가 증가하였는지 알고 싶은경우가 있는데, 이것을 확인하기 위해서 SQL Server에서 걸려있는 Trace 파일을 이용해서 확인 할 수 있습니다. 1. 우선 쿼리 실행창을 켠후 다음의 쿼리를 실행한다. 2. 해당 TRC 파일위치 찾기 실행 SELECT * FROM fn_trace_getinfo(DEFAULT) 위의 쿼리를 실행하면 다음과 같은 항목이 출력된다. 2번 열에 보면 위치가 나오는데 그곳이 바로 TRC파일의 위치와명칭이다. 복사해서 폴더를 열고 붙여넣기를 하면 열린다. 3. 자동증가 확인법 프로파일러를 실행하고 아래 그림의 점선으로 표시된 '속성'을 클릭한다. 이벤트 선택..
MSSQL_DB 자동증가확인SQL Server에서 MDF 파일의 용량이 모두 찾으면 자동증가 옵션에 따라서, 그 크기데로 증가합니다. 하지만 어떠한 DB가 증가하였는지 알고 싶은경우가 있는데, 이것을 확인하기 위해서 SQL Server에서 걸려있는 Trace 파일을 이용해서 확인 할 수 있습니다. 1. 우선 쿼리 실행창을 켠후 다음의 쿼리를 실행한다. 2. 해당 TRC 파일위치 찾기 실행 SELECT * FROM fn_trace_getinfo(DEFAULT) 위의 쿼리를 실행하면 다음과 같은 항목이 출력된다. 2번 열에 보면 위치가 나오는데 그곳이 바로 TRC파일의 위치와명칭이다. 복사해서 폴더를 열고 붙여넣기를 하면 열린다. 3. 자동증가 확인법 프로파일러를 실행하고 아래 그림의 점선으로 표시된 '속성'을 클릭한다. 이벤트 선택..
2015.07.01 -
오라클의 내용을 보고 이해 한 글이므로 사실과 다를수 있습니다. MS Server에 Cache Hit Ratio라는 항목이 있습니다. 이것은 간단히 말해서 캐쉬의 적중률로 알고 있습니다. (필자 생각) 그런데 이게 높으면 왜 좋고 낮으면 왜 않좋은지 알고 싶어서 찾던 도중 좋은 글을 발견해서 이해 한 대로 설명하겠습니다. 1. Database의 Buffe Cache는 Disk로 부터 읽어들인 Data block의 복사본을 가지고 있는 메모리 입니다. 2. 다음과 같이 Disk로 부터 파일을 읽어 들여서 Data Block의 복사본을 가지고 있는 메모리 입니다. 3. 다음과 같이 User Process가 요구한 사항을 Server Process 가 받아서 DB Buffer Cache에서 Data를 찾게 될..
Buffer Manager/Buffer Cache Hit Ratio오라클의 내용을 보고 이해 한 글이므로 사실과 다를수 있습니다. MS Server에 Cache Hit Ratio라는 항목이 있습니다. 이것은 간단히 말해서 캐쉬의 적중률로 알고 있습니다. (필자 생각) 그런데 이게 높으면 왜 좋고 낮으면 왜 않좋은지 알고 싶어서 찾던 도중 좋은 글을 발견해서 이해 한 대로 설명하겠습니다. 1. Database의 Buffe Cache는 Disk로 부터 읽어들인 Data block의 복사본을 가지고 있는 메모리 입니다. 2. 다음과 같이 Disk로 부터 파일을 읽어 들여서 Data Block의 복사본을 가지고 있는 메모리 입니다. 3. 다음과 같이 User Process가 요구한 사항을 Server Process 가 받아서 DB Buffer Cache에서 Data를 찾게 될..
2015.07.01 -
MS SQL Server 2008 R2 버전 옵티마이저에 대한 포스트 입니다.이전에 쓴글을 네이버 블로그에서 T스토리로 옮겼습니다. MS SQL Server는 사용자가 쿼리를 입력하면 내부적으로 어떤 일이 일어날까? 이번 포스트의 주요 관점은 옵티마이저이므로 간단하게 전체적으로 어떠한 일이 일어나는지 알아 보도록 하자.우선 파싱을 살펴보자 사용자가 쿼리를 실행하면 파싱을 한다. 파싱은 사용자가 정확한 쿼리를 입력했는지 구문을 검사한다. 예를 들어 사용자가 다음과 같은 쿼리를 입력했다고 생각해보자
MSSQL 옵티마이저(optimizer)MS SQL Server 2008 R2 버전 옵티마이저에 대한 포스트 입니다.이전에 쓴글을 네이버 블로그에서 T스토리로 옮겼습니다. MS SQL Server는 사용자가 쿼리를 입력하면 내부적으로 어떤 일이 일어날까? 이번 포스트의 주요 관점은 옵티마이저이므로 간단하게 전체적으로 어떠한 일이 일어나는지 알아 보도록 하자.우선 파싱을 살펴보자 사용자가 쿼리를 실행하면 파싱을 한다. 파싱은 사용자가 정확한 쿼리를 입력했는지 구문을 검사한다. 예를 들어 사용자가 다음과 같은 쿼리를 입력했다고 생각해보자
2015.06.27 -
처음에 SQL Server를 설치 한 후에 설정해야 하는 값들을 정리해봤습니다.설정 이외에 왜 설정을 하는지 간단한 이유를 기입하였습니다. 버전은 SQL Server STD 2008R2 위주로 작성되었으며,(제가 가장 많이써서...) 혹시 문제가 있거나 틀린 부분은 댓글을 남겨주세요. (_ _) 설정하는 방법이 아닌 왜 설정해야 하는가를 위주로 포스트를 작성 하였습니다. 목차 Ⅰ. SYSTEM 설정 1. 하이퍼스레딩 2. 전원 계획 사용옵션 3. 프로세서 사용계획 4. Lock Pages In Memory 5. RAID 구성 6. 바이러스 백신 프로그램 관리 Ⅱ. SQL Server 설정 1. 포트설정 2. 시작 계정 관리 3. Flag 설정 4. 구성관리자 설정 5. Memory 설정 6. 계정 설정 ..
MSSQL Server 설정처음에 SQL Server를 설치 한 후에 설정해야 하는 값들을 정리해봤습니다.설정 이외에 왜 설정을 하는지 간단한 이유를 기입하였습니다. 버전은 SQL Server STD 2008R2 위주로 작성되었으며,(제가 가장 많이써서...) 혹시 문제가 있거나 틀린 부분은 댓글을 남겨주세요. (_ _) 설정하는 방법이 아닌 왜 설정해야 하는가를 위주로 포스트를 작성 하였습니다. 목차 Ⅰ. SYSTEM 설정 1. 하이퍼스레딩 2. 전원 계획 사용옵션 3. 프로세서 사용계획 4. Lock Pages In Memory 5. RAID 구성 6. 바이러스 백신 프로그램 관리 Ⅱ. SQL Server 설정 1. 포트설정 2. 시작 계정 관리 3. Flag 설정 4. 구성관리자 설정 5. Memory 설정 6. 계정 설정 ..
2015.06.25 -
작업을 하다보면 , 백업을 위해서 테이블 전체를 복사하거나 몇가지 통계 정보 또는 샘플 데이터 추출을 위해서 몇건의 데이터를 복사하는 경우가 많습니다.이러한 복사 방법과 복사시 어떻게 되는지 자세히 정리하고자 포스트를 작성 하였습니다. 여기서 중요한 것은 테이블을 복사하면, 컬럼,데이터만 복사 됩니다. 즉 인덱스 제약조건 등은 복사되지 않습니다.이점을 유의해서 테이블 복사를 사용 하셔야 합니다. 예제를 위해서 테이블을 생성하고, 값을 입력 하였습니다. USE workDB GO CREATE TABLE Copy_Tbl ( Col1 INT ,Col2 VARCHAR(10) ) GO INSERT INTO Copy_Tbl VALUES (1,'주형권1') INSERT INTO Copy_Tbl VALUES (2,'주형..
MSSQL_테이블 복사,데이터 복사작업을 하다보면 , 백업을 위해서 테이블 전체를 복사하거나 몇가지 통계 정보 또는 샘플 데이터 추출을 위해서 몇건의 데이터를 복사하는 경우가 많습니다.이러한 복사 방법과 복사시 어떻게 되는지 자세히 정리하고자 포스트를 작성 하였습니다. 여기서 중요한 것은 테이블을 복사하면, 컬럼,데이터만 복사 됩니다. 즉 인덱스 제약조건 등은 복사되지 않습니다.이점을 유의해서 테이블 복사를 사용 하셔야 합니다. 예제를 위해서 테이블을 생성하고, 값을 입력 하였습니다. USE workDB GO CREATE TABLE Copy_Tbl ( Col1 INT ,Col2 VARCHAR(10) ) GO INSERT INTO Copy_Tbl VALUES (1,'주형권1') INSERT INTO Copy_Tbl VALUES (2,'주형..
2015.06.09 -
DBA를 하면서 점검 시 필요한 스크립트를 정리해봤습니다.제가 정리한것과 퍼온글이 있으니 틀린 부분이 있을 수 있으니, 참고만 부탁드립니다. 틀린 부분은 메일로 문의 주시면 수정 하겠습니다 ^^ 내용은 다음과 같습니다.1. 인덱스 조각화 확인 및 리빌딩2. 통계 확인 및 업데이트3. CHECKDB 관련 체크 및 복구 USE [데이터베이스명] GO /* 1. 인덱스 인덱스의 조각화 정도를 확인하고, 조각화가 많이 일어났으면 해당 인덱스 또는 해당 DB의 모든 인덱스를 리빌딩 해줘야 한다. */ /* ===================================================================================================== 인덱스 조각화 확인 ====..
DBA 업무시 필요한 쿼리DBA를 하면서 점검 시 필요한 스크립트를 정리해봤습니다.제가 정리한것과 퍼온글이 있으니 틀린 부분이 있을 수 있으니, 참고만 부탁드립니다. 틀린 부분은 메일로 문의 주시면 수정 하겠습니다 ^^ 내용은 다음과 같습니다.1. 인덱스 조각화 확인 및 리빌딩2. 통계 확인 및 업데이트3. CHECKDB 관련 체크 및 복구 USE [데이터베이스명] GO /* 1. 인덱스 인덱스의 조각화 정도를 확인하고, 조각화가 많이 일어났으면 해당 인덱스 또는 해당 DB의 모든 인덱스를 리빌딩 해줘야 한다. */ /* ===================================================================================================== 인덱스 조각화 확인 ====..
2015.06.04