반응형
- [ Database/MSSQL Server ]DB에 저장한 Perfmon 데이터 관리2015-11-11 18:49:02DB서버에 perfmon을 저장하는 방법을 이전 포스트에서 포스팅 했습니다. http://burning-dba.tistory.com/43 하지만 perfmon의 row 수가 많아지면, 성능 이슈 및 용량의 이슈가 발생합니다. 현재 1분에 1건씩 perfmon을 수집하여, 데이터를 넣고 있는데 한달정도 운영하였는데 건수가 벌써 150만건을 넘었습니다. 이렇게 많은 건수가 차후에 쌓이고 쌓여, 성능 이슈가 발생하거나 용량이 문제가 생길 수 있습니다. 그래서 이번 포스트에서는 지난 번의 내용에서 응용을 하여, 5개씩 (5분) 1 set로 지정하여, 데이터를 1/5로 줄여, 데이터를 old 테이블에 저장하는 방법에 대해서 적어보고자 합니다. 요구 사항은 다음과 같습니다. ① 기존의 데이터를 보존한다. ② 데이터..
- [ Database/MSSQL Server ]xp_delete_file2015-11-10 18:04:59백업을 만들고, 삭제 하기 위해서 사용하는 명령어(?) 입니다. 해당 프로시저는 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 크게 복잡하거나 하지는 않지만 많은 파라미터를 받고 있습니다. 하지만 크게 어려운..
- [ Database/ORACLE ]ORACLE TABLESPACE 생성/삭제2015-11-06 17:46:53업무에서 오라클을 사용 하는 서버가 존재하여, 오라클 공부를 하면서, 가장 기초적인 테이블 스페이스 생성 및 삭제를 해봤습니다. 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의 이름을 뜻 합니다..
- [ ETC/Windows SERVER ]bat파일을 이용한 파일삭제2015-11-05 13:59:22Windows에서 자동으로 bat파일과 스케줄러를 이용하여, 자동으로 파일을 삭제하도록 할 수 있습니다. MSSQL 백업을 받은 이후에 자동으로 삭제하는 것은 MSSQL에서 쿼리로도 가능하지만, windows 상에서도 가능 합니다.bat 파일을 만들어 스케줄에 등록하여, windows 에서 돌아가게 할 수 있습니다. 쿼리로 하는 방법은 xp_cmdshell , xp_delete_file 등이 있습니다. xp_delete_file 관련 설명 : http://optimizer.tistory.com/93 하지만, 백업파일을 백업서버로 넘기고 (일반적으로 같은 서버에 백업본을 계속 보관하지는 않을 것이므로...) 그 백업파일을 몇일 후에 삭제하는 경우에사용하면 좋을 것으로 보입니다. 다음과 같은 순서로 만들 수..
- [ Database/MSSQL Server ]IN-Memory OLPT (MSSQL 2014)2015-10-28 18:34:30MSSQL Server 2014 의 In-Memory OLPT관련하여 정리한 내용입니다.PPT 와 스크립트가 첨부되어 있습니다. 혹시 수정사항 및 잘못된 부분 또는 궁금한 사항은 waws01@naver.com로 메일 주세요 ^.,^해당 내용은 http://blog.naver.com/gun0626 김영건님의 블로그를 대부분 참조하였으며, MSDN과 영문 블로그를 참조하였습니다.
- [ Database/MSSQL Server ]SELECT 에 의한 DeadLock 발생2015-10-28 17:36:18안녕하세요. 금일 발생하였던 문제에 대해서 공부를 할겸해서 포스트를 작성합니다.본 내용은 이스트럭(강동운님)님의 SQLER 글에서 대부분 내용을 참고하였으며, 몇가지 설명과 그림을 붙였습니다. 오늘 모니터링 중에 데드락이 발생 한 SQL Server Error 로그가 있어서, 데드락 그랩을 잡아두고, 확인을 하였습니다. 상황을 들어보니 개발자분이 실서버에 데이터를 확인하기 위해 많은 수의 Row를 SELECT하면서 with(nolock)을 빼고 계속해서 반복적으로 수행하였고, 이때 UPDATE문이 있는 프로시저가 발동하면서 데드락이 발생하였습니다. 다행히 UPDATE되는 프로시저가 살고, SELECT가 죽어서 데이터를 이상이 없었습니다.그런데, 저의 지금까지의 경험으로는 보통 데드락은 UPDATE UPD..
- [ Database/MSSQL Server ]MSSQL_성능 카운터(미완성)2015-10-27 13:55:20안녕하세요. 성능카운터 공부하면서 정리한 내용을 공유합니다. 아마 보시다보면 여기저기서 봤던 내용이 있을 수 있습니다. 나름데로, 정리한 내용이라 혹시 잘못 된 부분은 말씀해주세요.또한 포스트를 보면서 꼭 알야할 상황은 시스템의 설정과 스팩에 따라서 수치는 다를수 있습니다. 예를 들어서 ad-hoc이 엄청나게 많은 서버에서 compile은 당연히 많을 수 밖에 없습니다. 그 기준은 시스템의 환경에 따라서 다르게 보시면 좋을 듯 합니다. 아직 미완성 부분이라서 전부 내용이 있지는 않습니다. 문서 보는 방법을 우선 보시고 포스트를 보시면 편할 것 입니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다. 2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다. 3. * 으로 시..
- [ Database/MSSQL Server ]Perfmon을 MSSQL DB에 저장2015-10-19 15:13:51Windows에 성능분석을 위해 존재하는 Perfmon을 DB에 저장하여, 쿼리를 이용하여 가공하거나 다양한 형태로 볼 수 있습니다.하여, 이번 포스트에서는 Perfmon으로 수집된 정보를 DB에 저장하는 방법에 대해서 작성하였습니다. 테스트 환경 OS : Windows7 SQL Server : SQL 2012 STD 대략적인 순서는 Database생성->ODBC등록->PERFMON추가 및 수집 입니다. 1. ODBC 등록 제어판에 가서 ODBC를 입력하면 위와 같이 "데이터 원본(ODBC)설정이 나옵니다. 이를 클릭하면 다음과 같이 나옵니다. 그림을 클릭하면, 다음과 같이 나오는데 해당 창에서 시스템DSN 탭으로 들어갑니다. 탭으로 들어가서 '추가(D)...'를 클릭하여, ODBC를 추가합니다. 추가를..
- [ Database/MSSQL Server ]MSSQL_AUTO_UPDATE_STATISTICS_ASYNC(비동기업데이트)2015-07-01 14:24:00제가 알고 있기로 통계정보는 업데이트 하는 동안 테이블에 Lock이 걸려서 부하가 있으므로, 통계의 업데이트는 점검시간에 하는 것으로 알고 있었습니다. 하지만 비동기 옵션을 통해서 이러한 현상을 극복 할 수 있습니다. 위의 글이 잘 보이지 않는 다면 아래의 링크를 클릭하면 됩니다.http://technet.microsoft.com/ko-kr/library/bb522682(v=sql.105).aspx 비동기 업데이트 옵션을 이용한다면, 성능이 영향을 주지 않는지 테스트 하기 위해서 간단한 테스트를 진행 했습니다. 비동기 옵션을 OFF로 해두고 테스트를 진행하고, ON으로 한 뒤 진행 해보았습니다. 위의 통계옵션은 알고 있을 것이라고 생각 됩니다. 통계 정보가 업데이트를 되고 있는지 확인 하기 위해서는 다음..
- [ Database/MSSQL Server ]MsSQL Server_Shrink(쉬링크) / ①SHRINKDATABASE2015-07-01 13:58:00DB를 관리하다 보면 로그 파일이 불필요하게 늘어나거나 디스크의 용량이 부족하여 공간을 확보해야 할 필요가 있다. 이럴때 사용 가능한 것이 Shrink이다. 필자가 생각하기에 Shrink는 방청소의 개념이라고 생각하면 될 것 같다. 사전적의미로 줄어들다, 줄어들게 하다라고 씌여있다. 확실히 맞는 말이다. 불필요하게 남은 공간을 축소해서 확 줄여주니깐.. 이번 포스트에서는 SHRINKDATABASE 기능을 알아 보도록하자. 차후 2번째 포스트에서는 SHRINKFILE을 알아 보도록 하겠다. 테스트를 위해서 데이터베이스를 한개 생성해 보도록하자. USE master GO CREATE DATABASE SHRINKDB ON PRIMARY(NAME = SHRINKDB,FILENAME = N'C:\SHRINK\SH..
- [ Database/MSSQL Server ]MsSQL Server_강제 매개변수화 테스트2015-07-01 13:45:00스터디에서 나온 질문 중에 다음과 같은 질문이 있어서 해당 포스트를 작성하였습니다. 질문 : 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..
- [ Database/MSSQL Server ]MsSQL_리소스 매니져(Resoure Manager) 테스트2015-07-01 12:14:34리소스 매니저를 스터디하면서 의문점이 생겨서 이번 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를 돌렸습니다..
- [ Database/MSSQL Server ]MsSQL Replace2015-07-01 12:07:35작업을 하거나 어떠한 프로세스에 무엇을 추가 할때 문자를 자르거나 공백을 제거 하는 경우가 있다.특히 코드의 경우 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..
- [ Database/MSSQL Server ]MsSQL_커서(Cusor)2015-07-01 12:05:18이번 세미나를 준비하면서 커서에 대해서 발표를 맡게되면서 커서를 공부하게 되었습니다.필자는 커서를 잘 사용하지 않다보니 별로 신경도 써본적이 없고 또한 인터넷에도 많은 자료가 있지는 않았습니다. 커서의 경우 당연히 느리다고 생각하고 잘 쓰지 않으므로 Post에서 커서의 옵션을 비중있게 다루거나 자세하게 설명한 부분은 없었습니다. 그래서 제가 직접 공부한 내용을 바탕으로 Post를 작성합니다. 우선 이번 Post에서 커서의 기본적인 개념에 대해서 살펴보겠습니다.자세한 옵션은 다음 Post에서 설명하겠습니다. 커서는 우선 2가지 종류로 나뉩니다. ⓐ 클라이언트 커서 : Cusor의 결과 집합이 MSSQL Server로 부터 Network를 통해서 Client로 전달되어 Client의 Memory , 임시파일..
- [ Database/MSSQL Server ]MSSQL_DB 자동증가확인2015-07-01 11:44:52SQL Server에서 MDF 파일의 용량이 모두 찾으면 자동증가 옵션에 따라서, 그 크기데로 증가합니다. 하지만 어떠한 DB가 증가하였는지 알고 싶은경우가 있는데, 이것을 확인하기 위해서 SQL Server에서 걸려있는 Trace 파일을 이용해서 확인 할 수 있습니다. 1. 우선 쿼리 실행창을 켠후 다음의 쿼리를 실행한다. 2. 해당 TRC 파일위치 찾기 실행 SELECT * FROM fn_trace_getinfo(DEFAULT) 위의 쿼리를 실행하면 다음과 같은 항목이 출력된다. 2번 열에 보면 위치가 나오는데 그곳이 바로 TRC파일의 위치와명칭이다. 복사해서 폴더를 열고 붙여넣기를 하면 열린다. 3. 자동증가 확인법 프로파일러를 실행하고 아래 그림의 점선으로 표시된 '속성'을 클릭한다. 이벤트 선택..
- [ Database/MSSQL Server ]Buffer Manager/Buffer Cache Hit Ratio2015-07-01 11:35:41오라클의 내용을 보고 이해 한 글이므로 사실과 다를수 있습니다. 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를 찾게 될..
- [ Database/MSSQL Server ]MSSQL 옵티마이저(optimizer)2015-06-27 12:52:42MS SQL Server 2008 R2 버전 옵티마이저에 대한 포스트 입니다.이전에 쓴글을 네이버 블로그에서 T스토리로 옮겼습니다. MS SQL Server는 사용자가 쿼리를 입력하면 내부적으로 어떤 일이 일어날까? 이번 포스트의 주요 관점은 옵티마이저이므로 간단하게 전체적으로 어떠한 일이 일어나는지 알아 보도록 하자.우선 파싱을 살펴보자 사용자가 쿼리를 실행하면 파싱을 한다. 파싱은 사용자가 정확한 쿼리를 입력했는지 구문을 검사한다. 예를 들어 사용자가 다음과 같은 쿼리를 입력했다고 생각해보자
- [ Database/MSSQL Server ]MSSQL Server 설정2015-06-25 11:39:18처음에 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. 계정 설정 ..
- [ Database/MSSQL Server ]MSSQL_테이블 복사,데이터 복사2015-06-09 17:19:08작업을 하다보면 , 백업을 위해서 테이블 전체를 복사하거나 몇가지 통계 정보 또는 샘플 데이터 추출을 위해서 몇건의 데이터를 복사하는 경우가 많습니다.이러한 복사 방법과 복사시 어떻게 되는지 자세히 정리하고자 포스트를 작성 하였습니다. 여기서 중요한 것은 테이블을 복사하면, 컬럼,데이터만 복사 됩니다. 즉 인덱스 제약조건 등은 복사되지 않습니다.이점을 유의해서 테이블 복사를 사용 하셔야 합니다. 예제를 위해서 테이블을 생성하고, 값을 입력 하였습니다. 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,'주형..
- [ Database/MSSQL Server ]DBA 업무시 필요한 쿼리2015-06-04 14:20:14DBA를 하면서 점검 시 필요한 스크립트를 정리해봤습니다.제가 정리한것과 퍼온글이 있으니 틀린 부분이 있을 수 있으니, 참고만 부탁드립니다. 틀린 부분은 메일로 문의 주시면 수정 하겠습니다 ^^ 내용은 다음과 같습니다.1. 인덱스 조각화 확인 및 리빌딩2. 통계 확인 및 업데이트3. CHECKDB 관련 체크 및 복구 USE [데이터베이스명] GO /* 1. 인덱스 인덱스의 조각화 정도를 확인하고, 조각화가 많이 일어났으면 해당 인덱스 또는 해당 DB의 모든 인덱스를 리빌딩 해줘야 한다. */ /* ===================================================================================================== 인덱스 조각화 확인 ====..
- [ Database/MSSQL Server ]MS SQL Server_952 Error2015-04-09 15:36:531. 장애 내용 ㉠ 한달에 1번씩 DB명을 변경하는 Job 스케줄러 존재함. DB명이 변경이 안되고 이전 DB명으로 커넥션을 맺어도 안된다는 장애 접수㉡ 확인을 위해서 DB 속성을 보려 하였는데 다음과 같은 메시지 출력 2. 확인 사항 ㉠ Job 스케줄러 정상 작동 여부 확인 (확인 결과 실패함)㉡ DB 상태 확인 SELECT name,state,state_desc FROM SYS.DATABASESWHERE NAME = '201412' 확인 했는데 별달리 특이점이 없는 듯 보였으며, ONLINE 상태 ㉢ 어떠한 프로세스가 점유하고 있는지 확인 SELECT * FROM SYS.sysprocessesWHERE DBID = 15 확인해보니 60번 세션이 뭔가를 잡고 있는듯 하여, 확인 ㉣ 확인 위해서 INPU..
- [ Database/MSSQL Server ]MSSQL_파일그룹 백업 및 복원2015-04-09 15:33:41MSSQL에서 대용량의 데이터베이스를 관리할때 백업 과 복원시 많은 용량을 전부 백업 및 복원 하는 것이 아닌 일부의 파일 그룹만 백업, 복원을 하여, 시간 및 저장공간을 줄일 수 있습니다. 저는 이 기법을 로그 DB에 사용하기 위해서 테스트하였으며, 용도는 사용하시는 분의 요건에 맞게 사용하면 될 듯 합니다.로그DB에서 각 일별로 파일그룹,파일을 생성하여 일별로 나눈 뒤 차후에 파일그룹별로 백업을 수행합니다. 그렇게하여, 일자별 BACKUP파일을 만들고, 복원시 해당 BACKUP파일만 복원하여 관리 하고자 하여, 테스트를 하였습니다. 테스트의 주요 확인 사항은 다음과 같습니다.1. 파일그룹 백업은 파일그룹 단위로 가능한가?2. 파일그룹 단위로 백업이 성공시 복원이 가능 한가?3. 데이터는 정상적으로 조..
- [ Database/MSSQL Server ]MSSQL_DMV 모음(1)2015-04-09 15:29:58DMV 몇가지 정리..MSDN에 있는 것들을 그대로 퍼왔습니다. 공부하면서 자주 사용하는거 모아 두려고 정리했습니다. 1. sys.dm_exec_sessions (https://msdn.microsoft.com/ko-kr/library/ms176013.aspx)SQL Server에서 인증된 세션당 행 하나를 반환합니다. sys.dm_exec_sessions는 모든 활성 사용자 연결 및 내부 태스크에 대한 정보를 표시하는 서버 범위 뷰입니다. 이러한 정보로는 클라이언트 버전, 클라이언트 프로그램 이름, 클라이언트 로그인 시간, 로그인 사용자, 현재 세션 설정 등이 있습니다. sys.dm_exec_sessions를 사용하여 먼저 현재 시스템 로드를 확인하고 관심 있는 세션을 파악한 다음 다른 동적 관리 뷰나..
- [ Database/MSSQL Server ]MSSQL_쿼리 결과값 테이블에 넣기2015-04-09 15:29:19RESTORE FILELISTONLY 등의 내용을 볼때 해당 내용이 너무 많거나 필요한 정보만 볼때 또는 해당 내용을 로그 테이블등에 저장 해야 하는 경우가 있습니다. 이럴때 이 내용을 테이블에 저장 할 수 있도록 하기 위해서는 다음과 같이 할 수 있습니다. 일반적인 RESTORE FILELISTONLY 구문RESTORE FILELISTONLY FROM DISK ='D:\VB_Share\201503_FG.bak' 다음과 같이 5개의 결과물이 나옵니다. 해당 내용을 테이블에 저장 할때는 다음과 같이 하면 됩니다.예시 쿼리를 보면 쉽게 이해가 되실 겁니다. -- 변수 테이블 DECLARE @TEMP_TBL TABLE ( COL1 VARCHAR(255) ,COL2 VARCHAR(255) ,COL3 VARCH..
반응형