[MSSQL] Blocking 유발하는 세션(root blocker)을 찾아내고, 운영자 계정에 root blocker만 kill할 수 있는 프로시저 제공하기
·
DB/SQL Server (MSSQL)
원래 MSSQL 에서 Session Kill 할 수 있는 권한은 DBA만 가지고 있는 게 바람직하다.MSSQL에서의 Session Kill 권한은 기본적으로, 'ALTER ANY CONNECTION' 권한이 부여되어 있어야 하며, 이는 서버 인스턴스 범위의 권한이기에, 해당 권한을 가진 SQL Login은 모든 세션에 대해 Kill 할 수 있는 아주 강력하고 위험한 권한을 가지게 된다. 그러나, 모든 운영 환경에 있어 DBA가 365일 24시간 내내 5분대기조처럼 있을 수는 없고,상황에 따라서 Kill 을 수행할 수 있는 조건만 잘 제어한다면, 운영자에게 특정 상황의 경우에만 Kill 할 수 있는 프로시저를 제공하는 게, 긴급한 장애도 해결하고 DBA도 한결 편해질 수 있는 방법임을 요즘 체감한다. 오늘..
[MSSQL] SQL Server Failover Cluster 구성
·
DB/SQL Server (MSSQL)
0. 사전 준비0.1. Windows Server Failover Cluster(WSFC) Feature(기능) 설치아래와 같이 [Server Manager] 를 통해, 'Failover Clustering' Feature를 설치해 주어야 한다.해당 feature 설치 후에는 안정적인 운영을 위해 시스템 reboot 가 필요할 수 있는 점 인지하자. 0.2. Windows Server Failover Cluster 구성[Create Cluster] 를 클릭 후, [Create Clustser Wizard] 에서 아래와 같이, Failover Cluster에 추가할 node(서버)들의 hostname을 입력하여 추가한다. 그럼 다음과 같이 Failover Cluster 구성이 가능한 지 Validation..
[MSSQL] 모든 유저 데이터베이스의 파일 사이즈 기록하는 Agent Job 만들기
·
DB/SQL Server (MSSQL)
DB 마이그레이션이나 다른 유지보수성 작업을 할 때,DB에서의 데이터 사용량이 날마다 얼마나 늘어나는 지 기록해 둘 필요가 있을 수 있다. 물론, 요즘엔 모니터링 Tool 이 너무나 잘 나와서 이런 프로시저나 Agent Job 을 굳이 생성해야 하나 싶지만, 그런 모니터링 Tool 도입이나 사용이 어려운 상황이 있을 수 있으므로, SQL Server 상에서 아래와 같이 관리용 테이블과 프로시저를 생성하고,SQL Server Agent Job 을 활용하여 해당 DB의 사이즈들을 기록하는 방법에 대해 알아보자.1. 파일 사이즈 기록해 둘 테이블 [DBFileSizesLog] 생성-- 여러 관리 작업과 관련된 데이터가 저장되는 곳인 [msdb]에 테이블을 만들기로 했다.USE [msdb];GO/* 각 DB들의..
[MSSQL] SQL Server 점검 시 유용한 쿼리 모음
·
DB/SQL Server (MSSQL)
DBA라고 하기 부끄러운 수준이지만, 그래도 다른 사람보다 DB를 조금 더 자주 접하면서 MSSQL에서 가지고 있으면 유용한 쿼리를 아래에 정리해 본다. 모두 sysadmin의 Server-level role을 가지고 수행하였다. 참고로, 아래 모든 쿼리들이 서버에 부하를 얼마나 유발하는 지 확인해 보지 않았고, 매우 심각한 상황(쿼리 하나가 서버를 죽이든,살리든 하는 상황)에서는 한 번도 사용해보지 않았으므로, 반드시 유의해서 사용해야 한다...! 부하를 최소화한다든지, 새로운 쿼리를 알아내게 되면 이 포스팅에 계속 업데이트할 예정이므로, 이 포스팅 내용은 계속 변할 수 있다!1. 현재 MSSQL의 상태 조회 쿼리MSSQL 인스턴스 내 활성화되어 있는 모든 세션 정보 확인 - sys.dm_exec_se..
[RDBMS] DB의 정규화 단계(1NF, 2NF, 3NF, BCNF, 4NF, 5NF)의 개념 및 예시
·
DB
이번 포스팅에서는 테이블 설계에 있어, 데이터베이스 이론가들이 확립시켜 놓은 일종의 규칙, 즉, 정규화 단계가 무엇이 있는지 살펴볼 것이다. 우선 이러한 정규화를 하는 목적에 대해 먼저 살펴 보자. 정규화 목적 중복 데이터를 최소화하여 테이블 불일치 위험을 최소화한다. 수정, 삭제 시 이상 현상을 방지함으로써, 데이터 구조의 일관성을 최대화한다. 데이터 삽입 시 릴레이션의 재구성에 대한 필요성을 줄인다. 효과적인 검색 알고리즘을 생성하도록 돕는다. 그럼 데이터베이스 이론가들이 확립시켜 놓은 정규화 단계가 어떻게 구성되는 지 살펴보자. 1. 제 1정규화 (1NF, 1st Normal Form) : 비정규형 -> 1NF로 바꾸는 것을 말하며, 테이블 내의 속성값이 모두 원자값(Atomic Value)만으로 ..
[RDBMS] RDB 정규화와 이상(Anomaly)현상의 개념 및 예시
·
DB
정규화(Normalization)란? : 어떤 대상을 일정한 규칙이나 기준에 따르는 '정규적인' 상태로 바꾸거나, 비정상적인 대상을 정상적으로 되돌리는 과정을 뜻한다. 특히, RDB(관계형 데이터베이스)에서는, 이상 현상이 존재하는 릴레이션을 분해하여, 여러 개의 릴레이션으로 생성하는데, 이를 단계별로 구분하여 정규화 과정이 고도화될 수록 이러한 이상 현상을 줄일 수 있다. 그렇다면, DB에서의 '이상 현상(Anomaly)'이란 무엇일까? 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 문제 또는 DB의 무결성을 저해하는 부작용을 말한다. 기본적으로 DB에서 말하는 이상 현상은 크게 다음과 같이 3가지이다. 삽입 이상(Insertion Anomaly..