본문 바로가기

전체 글172

[Oracle] RMAN 수정 블록 추적(BCT) 수정 블록 추적이란?Oracle Database에서 증분 백업(Incremental Backup)의 속도를 끌어올리기 위한 기능입니다. BCT의 사용 여부의 차이BCT 없을 때(OFF): RMAN은 Level 1 백업을 시작하면 데이터 파일의 모든 블록을 하나하나 읽고 SCN을 비교한 다음 증분백업을 진행 합니다.BCT 있을 때(ON): Level 1 백업을 진행 시 BCT 파일을 통해 변경된 블록만 읽어 속도가 빠르고 CPU 부하가 적습니다. 수정 블록 추적(BCT) 명령ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/PATH/bct_file.bct';BCT 기능을 켜고, BCT 파일은 '/PATH' 경로에 bct_file.bct로 생성 RAC 환.. 2026. 5. 18.
[Oracle] Data Pump(expdp/impdp) 커맨드 모음 Oracle Data Pump(expdp/impdp) 커맨드 정리 1. EXPORT(expdp) expdp directory= dumpfile= logfile= -- 데이터 필터링 관련 옵션[full={Y | N}] -- 전체 DB 백업 여부[schemas=] -- 특정 스키마(사용자)만 백업 [tables=] -- 특정 테이블만 백업[tablespaces=] -- 특정 테이블스페이스만 백업[content={ALL | DATA_ONLY | METADATA_ONLY}] -- 백업할 데이터 범위 선택[exclude={OBJECT_TYPE | STATISTICS}] -- 제외할 객체[include={OBJECT_TYPE | STATISTICS}] -- 포함할 객체[query="wh.. 2026. 5. 12.
[Oracle] RMAN 커맨드 1. RMAN 접속 TARGET [사용자계정]@[서비스명] AS [권한]-- 로컬에서 바로 접속$ rman target / -- 보조DB 접속$ RMAN AUXILIARY SYS/PWD@AUX_STRING -- 운영자 권한으로 복제를 위한 접속RMAN> TARGET "sbu@prod AS SYSDBA" AUXILIARY "sbu@dupdb AS SYSDBA";-- SYSBACKUP 권한으로 복제를 위한 접속RMAN> TARGET "sbu@prod AS SYSBACKUP" AUXILIARY "sbu@dupdb AS SYSBACKUP"; -- SYSBACKUP 권한으로 접속RMAN> CONNECT TARGET "sbu@inst1 AS SYSBACKUP"; -- SYSDBA 권한으로 접속RMAN> CONN.. 2026. 5. 10.
[Oracle] 락(Lock) 과 래치(Latch) 락(Lock)과 래치(Latch)는 모두 "동시성을 제어하기 위한 잠금 장치"라는 점은 같지만, 그 목적과 작동 방식은 다릅니다.1. 락(Lock)데이터베이스의 무결성을 지키는 것이 주 목적입니다.대상: 테이블, 행(Row) 등 사용자가 관리하는 데이터(Object)지속 시간: 트랜잭션이 시작될 때 걸리고, COMMIT이나 ROLLBACK을 할 때 풀립니다.관리: Database 레벨에서 트랜잭션 단위로 관리되며, 데드락(Deadlock) 감지 메커니즘이 있습니다.공유: 여러 종류(Shared, Exclusive 등)가 있고 복잡한 큐(Queue)를 통해 관리됩니다. 2. 래치(Latch)SGA(System Global Area)와 같은 공유 메모리 구조가 깨지지 않게 보호하는 것이 주 목적입니다.대상:.. 2026. 4. 27.
[Oracle] 테이블 액세스 최소화 테이블 액세스 최소화 전략테이블 액세스는 인덱스를 타고 테이블로 향하는 비용(Cost)입니다. 액세스 최소화는 그 비용을 최대한 줄이게 만드는 것 입니다.클러스터링 팩터(Clustering Factor): 같은 데이터가 모여 있는 정도인덱스 손익분기점: Index Range Scan의 효율이 Table Full Scan보다 떨어지는 지점(CF값과 데이터량에 따라 결정)인덱스 컬럼 추가 & 인덱스만 읽기: 가장 많이 보편적으로 사용되는 SQL 튜닝 기법으로 조회에 필요한 모든 컬럼이 인덱스에 포함인덱스 구조 테이블(오라클IOT): 테이블을 아예 인덱스처럼 만든다면?클러스터 테이블(SQL Server): 인덱스 기준으로 테이블을 만든다면? / 해시 검색이 빨라서 해시 기준으로 테이블을 만들면? 클러스터링 팩.. 2026. 4. 27.
[Oracle] 스캔(Full Scan, Index Scan) 종류 Table Full Scan 테이블에 존재하는 모든 테이터를 읽어 조건에 맞는 결과를 추출테이블의 고수위 마크(HWM) 아래 모든 블록을 읽음전체 데이터를 읽으므로, 검색시간이 과도할 수 있고, 메모리에서 빨리 제외 옵티마이저가 'Index Scan'이 아닌 'Table Full Scan'을 하는 이유SQL문 조건절에 검색을 위한 조건이 하나도 없을때사용 가능한 인덱스가 존재하지 않는 경우조건이 변형되어진 경우(함수 사용)조건에 만족하는 데이터가 많아 테이블의 대부분 블록을 액세스하여 Full Scan 보다 효율이 낮다 판단하면 인덱스를 버리고 Full Scan을 선택 병렬 처리 방식(Parallel)으로 처리하는 경우블록이 몇개 안될 경우(인덱스 스캔이 비효율적일 때)전체 테이블 스캔 방식의 힌트를 .. 2026. 4. 27.
[Oracle] 조인(JOIN) 튜닝 - NL조인, 소트 머지 조인, 해시 조인, 스칼라 서브쿼 JOIN의 종류NL(Nested Loops) 조인SORT - MERGE 조인HASH 조인스칼라 서브쿼리(JOIN 대체)구분NL(Nested Loops) 조인Sort Merge 조인Hash 조인스칼라 서브쿼리핵심 메커니즘중첩 For문 방식(순차적)양쪽 정렬 후 병합(동시적)해시 테이블 생성 후 병합필터 오퍼레이션 + 캐싱주요 리소스Buffer Cache(SGA)PGA(Sort Area)PGA(Hash Area)PGA(Cache Area)액세스 방식Random Access(Single-Block)Scan(Multi-Block)Scan(Multi-Block)Random Access(필터형)연결 고리(인덱스)인덱스 필수(후행 테이블)인덱스 없이 가능인덱스 없이 가능인덱스 권장(서브쿼리 내)조인 조건모든 조건 가.. 2026. 4. 27.
[Oracle] 인덱스(Index) 종류 인덱스란?인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념인덱스는 테이블 기반으로 선택적으로 생성할 수 있는 구조인덱스의 기본적인 목적은 검색 성능의 최적화INSERT, DELETE, UPDATE와 같은 작업은 테이블과 인덱스를 함께 관리하지 않으면 성능 저하 가능INSERT: 테이블에 행을 넣고, 인덱스에도 해당 값을 정렬된 위치에 찾아가서 넣어야 합니다.DELETE: 테이블에서 행을 지우고, 인덱스에서도 해당 값을 찾아 "삭제됨" 표시(Mark)를 해야 합니다.UPDATE: 가장 최악입니다. 인덱스 입장에서 업데이트는 '기존 값 삭제 + 새로운 값 삽입' 두 단계로 일어납니다. 인덱스는 정렬된 상태를 유지해야 하기 때문 인덱스 생성-- [문법] CREATE INDEX 인.. 2026. 4. 27.
[Oracle] 인덱스(Index), 왜 내 쿼리는 안 타는 걸까? 데이터베이스 성능 튜닝의 80%는 인덱스를 제대로 타느냐 마느냐에서 결정됩니다. 인덱스를 생성하고 통계 정보를 수집했음에도 불구하고, 옵티마이저가 인덱스를 버리고 Table Full Scan을 선택하는 이유를 완벽하게 정리해 드립니다.1. 인덱스를 타는 경우 (Index Scan)일치 검색 (=): 가장 이상적인 케이스입니다. 루트에서 리프까지 수직적 탐색 후 필요한 데이터만 쏙 뽑아옵니다.WHERE ENAME = 'KING'범위 검색 (Range Scan): 인덱스가 정렬되어 있으므로 특정 지점부터 옆으로(Horizontal) 읽어 나갑니다.WHERE SAL BETWEEN 2000 AND 3000WHERE ENAME LIKE 'S%' (전방 일치)정렬 생략 (Order By Optimization): .. 2026. 4. 27.