본문 바로가기
반응형

DATABASE/MsSQL40

[MsSQL][장애 조치] 크랙 DATABASE 복구 1 - 주의대상 데이터베이스 복구 시도 장애 조치사내 데이터 배치용으로 사용 중이던 MsSQL의 Database 중 하나의 Database의 장애가 발생하여 주의대상 상태가 되는 일이 발생하였다. 주의대상이 된 데이터베이스에는 접근도 할 수 없고 어떠한 작업도 불가능한 상태가 되었으며, 주의대상에서 자동으로 복구 중 무언가 문제가 발생하여, DB STARTUP 상태로 아무런 변경이 없었다.select command, percent_complete, start_time from SYS.DM_EXEC_REQUESTS where command in ('db startup', 'restore database', 'recovery');위의 Query를 통해 DB STARTUP 트랜잭션이 어느정도 진행되었는지 확인 할 수 있다 하여 확인하였으나, 몇 .. 2025. 2. 12.
[MsSQL] 쿼리튜닝 - Join Hint와 Leading Table 쿼리 튜닝쿼리를 튜닝하다보면 여러 상황을 만나게 되는데, 그 중에 MsSQL쿼리의 Join에 대한 힌트들에 대해서 간단하게 소개해보도록하겠다. 사실 Oracle 쿼리튜닝 책만 읽어서 MsSQL에 대해서 자세하게 모르고 있었는데, 최근 사내에서 운영중인 MsSQL의 쿼리에 문제들이 있어 튜닝을 해야했었다. 팀장님이 잠시 자리를 비운사이 문제의 쿼리를 확인하고 조치하려했으나, 확인까지만하고 어떻게 조치해야하나 고민을 하며 자신있게 해결하지 못하였다. 팀장님이 돌아오신 후 Inner Loop Join으로 바꿔서 튜닝을 하라 라고 말씀하셨는데, 정확히 힌트에 대해 알지 못하다보니 자신있게 한다고 말을 못 했던게 많은 아쉬움으로 남는다. 조금 다른이야기였지만, 아무튼 Join에 대한 힌트들에 대해서 소개해보도록 .. 2024. 12. 28.
[MsSQL] SET STATISTICS 옵션을 활용 - 실제 실행 계획 상세보기 실제 실행계획 상세보기MsSQL 에서는 실행계획을 볼 수 있는 방법이 여러가지 있지만.대부분 그래프 이미지로 밖에 볼 수 없다. 기존의 실행계획 표시인 텍스트와 I/O 관련정보 등을 손쉽게 볼 수 있는 옵션에 대해서 소개하도록 하겠다. SET STATISTICSSET STATISTICS 는 MsSQL에서 쿼리의 성능분석/최적화 등에 도움을 주는 옵션이다.해당 옵션은 세션별로 적용을 하여 해당 세션의 쿼리를 분석할 수 있게 도와준다. 주로 실제 쿼리의 실행계획에 대해 아래의 옵션 3개를 활성화하여 확인한다.SET STATISTICS PROFILE ONSET STATISTICS IO ONSET STATISTICS TIME ON 해당 옵션을 활성화 하고 원하는 쿼리를 실행하여 쿼리가 실행 완료되면 실행계획과 .. 2024. 11. 20.
[MsSQL] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기 Procedure 내용 찾기오라클의 프로시저의 특정 내용을 찾는 쿼리를 알아보았었다.[Oracle] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기MsSQL도 이와 같은 쿼리를 만들 수 있는데, 해당 쿼리는 트리거나 함수 등에서 사용은 못하고 프로시저의 내용만 찾는 쿼리이다. Queryuse [데이터베이스 명]select name, object_definition(object_id) as txt from sys.PROCEDURES where object_definition(object_id) like '%[프로시저에서 찾고 싶은 내용]%' 위 쿼리를 사용하면 해당 데이터베이스 내의 프로시저 중 내가 찾고싶은 내용을 포함한 프로시저를 찾을 수 있다.데이터베이스 별로 검색해야하기에 .. 2024. 11. 16.
[MsSQL] 백업 파일 관리 - 최근 전체 백업과 하위 로그 백업 확인하기 Backup File 조회하기MsSQL은 전체 복구 모델일 경우 Full Backup 을 받은 후 하위에 Log Backup을 하며 하나의 세트를 만들어간다.자세한 설명을 아래의 글로 남겨두도록 하겠다. [MsSQL] Database 복구 모델 - Simple, Full (단순 모델, 전체 모델)[MsSQL] Database Backup이란? - Full / Differential / Log Backup 보통 실무에서 예를들자면,1일 단위로 Full Backup을 받고 4시간 단위 Log Backup을 받는식으로의 백업 정책을 가지고 있는데,어떠한 Full Backup 파일 하위에 어떤 순서로 어떤 Log Backup 파일을 가지고 있는지 한눈에 알아보는 쿼리를 작성해 보았다. Query쿼리 자체는 간단.. 2024. 11. 14.
[MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 2. 테스트 및 적용 Insert 지연 튜닝 - 테스트 및 적용 지난번에 원인을 파악했떤 마지막 페이지 경합에 대한, 업무 반영을 하기위해 테스트를 진행하고 결과에 맞게 반영하게 되었다. [MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 1. 원인 찾기Insert 지연 튜닝회사 중요 데이터 중 많게는 하루에 수억건의 CUD가 발생하는 테이블이 있다.이상하게 CUD 중 Delete가 발생 할 때에만 지연이 발생하게 되어, 튜닝을 위해 이것저것 확인 중  해당da-new.tistory.com 잘못된 테스트와 정확한 테스트 그리고 새롭게 알아낸 내용 등에 대해서 한번 소개해보도록 하겠다. 테스트어떻게하면 내가 생각한 이슈에 의해 마지막 페이지경합이 발생하며, 해결 방법을 통해 경합이 줄어들었음을 알 수 있.. 2024. 11. 13.
[MsSQL] 현재 세션에 대한 정보들 조회하기 시스템 동적 관리뷰를 활용한 세션 정보 조회MsSQL에 현재 붙어있는 세션들에 대한 정보를 조회하는 방법으로 시스템 동적 관리 뷰를 사용한다. 이런 뷰를 여러가지를 조합하여 원하는 정보를 알 수 있는데, 기본적으로 자주 사용되고 필요한 정보들을 조회하는 쿼리를 소개하도록 하겠다. 세션 조회 바로 쿼리를 설명하자면 아래와 같다.select r.session_id, r.blocking_session_id, r.status, r.command, r.wait_type, r.wait_time, s.host_name, s.program_name, s.login_name, c.client_net_address, .. 2024. 11. 10.
[MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 1. 원인 찾기 Insert 지연 튜닝회사 중요 데이터 중 많게는 하루에 수억건의 CUD가 발생하는 테이블이 있다.이상하게 CUD 중 Delete가 발생 할 때에만 지연이 발생하게 되어, 튜닝을 위해 이것저것 확인 중  해당 테이블에서 Delete가 발생 시 삭제 된 데이터의 히스토리를 남기고자 트리거로 히스토리 테이블에 Insert를 하는데,트리거를 통한 히스토리 테이블에 Insert가 지연되어 원본 테이블의 Delete 함께 지연된다는 사실을 알게되었다. Insert가 지연되었던 이유가 무엇이며, 어떻게 튜닝했는지 초보 DBA의 의식의 흐름대로 어떻게 진행되었는지 남겨보도록하겠다. 트리거가 설정되어있는 기존의 테이블을 Table_O(수억건의 CUD발생) / 히스토리를 남기기 위한 테이블을 Table_H(Insert만.. 2024. 11. 8.
[MsSQL] 실행 했던 쿼리 실행 계획 찾기 실행 했던 쿼리 실행계획지금 당장 실행할 쿼리의 실행계획을 알아보는거야 뭐 너무나 쉽지만 이미 실행되었던 쿼리들에 대해서 실행계획을 찾으려면 캐시된 쿼리들에 한하여 실행계획을 찾아 볼 수 있다. SYS.DM_EXEC_QUERY_STATS 라는 시스템 뷰에 남아있는 sql_handle / plan_handle을 통해 찾아보는 쿼리에 대해 알아보자. Queryselect s.creation_time,        s.last_execution_time,       s.execution_count,       substring(t.text,                  (s.statement_start_offset/2) + 1,                  ((case s.statement_end_offs.. 2024. 11. 7.
[MsSQL] DBCC WRITEPAGE를 활용한 Data Page 오류 만들기 및 테스트 Data Page Error메시지 824, 수준 24, 상태 2, 줄 54 SQL Server에서 일관성 기반의 논리적인 I/O 오류가 검색되었습니다: 체크섬이 잘못되었습니다(예상: 0x3e7ed287, 실제: 0x3e7e5287).. 파일 'O:\Data\BAN_TEST.mdf'의 오프셋 0x00000000144000에서 데이터베이스 ID 8에 있는 페이지 (1:162)의 읽기 중 이 오류가 발생했습니다. 자세한 내용은 SQL Server 오류 로그 또는 시스템 이벤트 로그의 추가 메시지에서 확인할 수 있습니다. 이는 데이터베이스 무결성을 위협하는 심각한 오류 상태이며 즉시 수정해야 합니다. 전체 데이터베이스 일관성 검사(DBCC CHECKDB)를 완료하십시오. 이 오류는 다양한 요인으로 인해 발생할 .. 2024. 10. 7.
반응형