본문 바로가기
반응형

DATABASE90

[MSSQL] Backup 파일 깨짐과 Checksum 옵션 Backup 파일 깨짐데이터베이스를 운영하다보면, 충격적이게도 백업파일이 깨질 수 있다.만나보고 싶지 않았지만, 몇 번의 백업 파일이 깨지는 상황을 마주하게 되어 매우 고생했던 기억이 있다. 그 중 한번은 이미 Full Backup 전부터 특정 page가 깨져있던 상태였는데,그 상태에서는 그냥 일반적으로 백업 / 복구가 가능 했던거로 기억한다... page는 이미 깨져있는 상태로... 다른 한번은 로그 쉬핑 과정에서 발생했는데,Trn Backup을 하고 Standby 서버에 자동으로 복구 되던 중 복구 실패를 했었다.근데 문제는 깨진 백업 파일까지 복구되고... 그 후 데이터가 깨져있으니 그 다음 복구가 안됐던 거로 기억을 한다. 실제 page는 문제가 없이 백업파일만 문제였었다.로그쉬핑으로 DR을 구성.. 2026. 4. 15.
[PostgreSQL] TIMESTAMP 컬럼의 Timezone 알아보기 (timestamp / timestamptz) TIMESTAMP 컬럼 타입PostgreSQL을 주력 DB로 쓰지 않고, 시스템실에서 세팅해주는 VM 서버 위에 간단한 용도로 쓰다가현재 회사의 레거시 DB를 새로운 통합 DB로 구축하는 프로젝트를 진행 하고 있다. 새로운 통합 DB를 PostgreSQL로 정하여 k8s 환경에 CNPG를 올리게 되었고, 새로운 환경에서 새롭게 처음 사용하게 되었다. 기존에는 다 타임존을 KST로 세팅하고 진행하였으나, 각 서비스의 파드별로 Timezone 설정이 다를 수 있다는 것을 알게 되었고 그렇게 Timezone이 이슈가 될지 이때 처음 알게되었다. Timestamp컬럼의 timezone에대해 한번 알아보고 사용해 보도록하자. TIMESTAMP / TIMESTAMPTZ 컬럼의 차이너무나 신기하게도 PostgreS.. 2026. 4. 14.
[MSSQL] Partition Table 생성 방법 PARTITION TABLE일반적인 DBMS에서는 데이터를 저장 할 때 특정 값을 기준으로 데이터를 나누어 저장 하는 기능인 파티션을 제공한다. 각 DBMS별로 각각의 구현방법과 성능이 차이가 있으나, 기본적으로 파티션 테이블은 특정 값 기준으로 분산하여 저장하기에 데이터 관리측면과 I/O측면에 긍정적인 효과를 가져온다. 보통의 데이터 중에 로그성 데이터를 일자별로 저장하여, 관리적인 측면에 도움을 주는 경우가 많지만 작성자의 회사에서는 MSSQL의 20억이 넘는 데이터의 I/O분산을 위해 20개의 파티션으로 분산하여 사용 중에 있다. (물론 다른 용도의 파티션도 많음) ORACLE과 달리 MSSQL에서는 파티션 테이블을 생성하는 방법이 조금 불편하기에 정리 겸 한번 파티션 테이블을 생성하는 방법에 대해.. 2025. 6. 10.
[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.
[PostgreSQL] PG17 설치의 모든 것 - Data / Wal 분리부터 환경변수까지 PostgreSQL 설치의 모든 것새롭게 요즘 배우고 있는 데이터베이스 PostgreSQL이다.오픈소스의 DBMS이다보니 새로운 버전이 매년 나오고, 설치부터 세팅까지 직접해줘야한다는 불편함이 있다. 심지어 기존에 사용하던 CentOS7이 EOS가 되기에 새로운 Linux 버전인 Rocky 9 를 OS로 하여 PostgreSQL을 설치해 보았다. PostgreSQL 17버전을 설치하는 방법을 소개하며,PG의 인스턴스의 디렉토리를 OS와 분리된 다른 영역에 설치하는 방법Wal 디렉토리를 분리하여 심볼릭 링크를 설정하는 방법기본적으로 편의를 위한 환경변수를 설정하는 방법 등에 대해 소개해 보도록 하겠다. PostgreSQL Install원하는 PostgreSQL 버전의 설치를 위해 공식 홈페이지에 접속한다... 2024. 12. 21.
[Database] WAL 이란? - 데이터 쓰기의 이해와 WAL을 쓰는 이유 WAL (Write-Ahead Logging)Write-Ahead Logging 즉, 로그 먼저 쓰기 라고 할 수있는 WAL은 데이터베이스의 쓰기를 빠르게 완료하며, 데이터의 무결성과 일관성 유지에 매우 큰 역할을 한다. WAL은 어떻게 데이터 쓰기를 빨리 할 수 있으며, 어떤 부분에서 무결성과 일관성 유지에 도움을 주는지 간략하게 설명해보도록 하겠다. Data Write 란?데이터베이스에 데이터를 변경하면, 저장되어있는 해당 디스크의 값을 바꿔주어야한다. 삽입과 삭제도 마찬가지다. 데이터베이스 성능에 가장 큰 영향을 주는 것이 물리적인 디스크 I/O 인데,과연 데이터 하나 조그마한 것이 바뀔 때마다 디스크 I/O가 발생하면 빠를 수 있겠는가. 원초적인 이야기로 돌아가서 전반적인 데이터베이스의 구조와 엔.. 2024. 12. 7.
[DBA] 여러 DBMS 마다의 DBA의 중점 역할 차이 DBA - DATABASE ADMINISTRATORDBA란 무엇일까?항상 고민하고 어디까지가 내 일인가에 대해서 의문을 품으며 일을 하고있는 것 같다. 물론 회사마다 팀마다 느낌이 조금씩 다르겠지만, 뭔가 명확하지 않고 시키면 다하는 듯한 느낌이 들때가 많다.DBA가 무엇인가에 대해서는 예전에 적어둔 글이 있는데, 지금 다시 읽어보면 그게 맞을까? 싶다 DBA - 데이터베이스 관리자(DataBase Administrator)Intro 안녕하세요. 초보 DBA 다뉴입니다. Database 관련 글을 쓸 때면, 초보 DBA 라는 말로 저를 소개하곤 하는데요. 관련 직무에 종사한지 5년이 넘었지만, 이제야 본격적으로 DBA 직무를 맡게 되어 그da-new.tistory.com우리 회사의 우리팀은 여러가지 데이.. 2024. 11. 25.
[Oracle] 오라클 종료 - Shut Down Option Oracle Shut DownOracle Database를 종료할때 사용 할 수 있는 4가지의 ShutDown 옵션에 대해서 소개해 보도록 하겠다.각 옵션별로 세션의 작업과 데이터의 무결성 그리고 속도에 차이가 있으므로 필요에 맞게 사용하는 것이 중요하다.옵션설명NORMAL새로운 연결 불가, 기존 세션이 완료 될 때까지 대기IMMEDIATE기존 세션 강제 종료 및 트랜잭션 롤백TRANSACTIONAL새로운 연결 불가, 트랜잭션이 종료 될 때 까지 대기ABORT트랜잭션 롤백 없이 데이터베이스 종료 각 옵션에 대해 자세하게 하나씩 알아보도록 하자.NORMALSHUTDOWN NORMAL; 오라클 데이터베이스를 종료하는데 가장 안전한 방식이다.새로운 연결을 허용하지 않으며, 기존의 연결을 각각 다 종료 할 때 .. 2024. 11. 22.
[Oracle] 프로시저 내에서 DDL 실행하기 - Create, Drop, Atler, Truncate, CTAS Procedure 내에서 DDL 실행Oracle의 프로시저 내에서는 DDL문을 바로 실행 할 수 없다.create or replace procedure UP_BAN_TEST isbegin create table XTMP_DDL_TABLE (t_no number(10));end;위와 같은 프로시저를 생성하면, 컴파일 시 아래와 같은 오류가 발생한다. (Error: PLS-00103) Oracle의 프로시저는 컴파일 시 문법적 오류를 확인하며 실행 계획을 미리 정하는데, DDL은 실제 런타임에만 실행이 가능하여 실행 계획을 미리 정할 수 없어 오류가 발생하게 된다. 동적 쿼리 실행프로시저 내에서 DDL문을 실행하기 위해서는 동적쿼리를 실행하는 방식으로 작성하여 실행하도록한다. 주로 CTAS, CREAT.. 2024. 11. 21.
반응형