1️⃣ DB Link란?DB Link는 "내가 지금 접속해 있는 DB에서 다른 DB에 접근할 수 있게 해주는 논리적인 네트워크 연결"입니다.즉,다른 DB에 직접 접속하지 않아도마치 내 DB에 있는 테이블처럼SELECT / INSERT / UPDATE / DELETE 쿼리를 실행할 수 있습니다.SELECT * FROM EMP@AAA;→ 현재 DB에서 AAA라는 DB Link를 통해 원격 DB의 EMP 테이블을 조회 2️⃣ 언제 쓰는가?사용 상황예시이기종 DB 연동A 시스템은 Tibero, B 시스템은 Oracle인 경우분산 시스템 통합 조회여러 DB의 정보를 한 번에 통합 조회서버 간 데이터 이동 자동화원격 DB에 배치로 INSERT 3️⃣ DB Link 구성 요소구성 요소설명예시DB 링크 이름@AAA와 ..
DataBase
정규표현식은 모든 프로그래밍언어에서 특정 다수의 데이터를 처리할 때 유용하게 쓰이지만, 워낙 대치되는 것이 많아 쉽게 사용하기가 어렵다. 하지만 한 번 이해해두면, 찾아보면서 사용할 수 있기 때문에 시간을 많이 아낄 수 있다. 나는 오라클에서 공백이 있을 수도 있고 없을 수도 있는 데이터를 치환하기 위하여 사용하였는데, 꽤나 유용하고 흥미로웠기 때문에 정리해둔다. 1️⃣ REGEXP_REPLACE 기본 구조REGEXP_REPLACE(source_string, pattern, replacement [, position [, occurrence [, match_parameter]]])파라미터설명source_string정규식을 적용할 원본 문자열pattern정규식 패턴replacement대체할 문자열posit..
1️⃣ CONNECT BY란?Oracle의 CONNECT BY는 계층적 쿼리(Hierarchical Query) 를 실행할 때 사용되는 구문입니다.계층 구조를 가진 데이터를 부모-자식 관계를 기준으로 트리 형태로 조회할 수 있도록 합니다.📌 주로 사용되는 곳:조직도 (상사-부하 관계)카테고리 트리 (부모-자식 관계)제품 분류 구조메뉴 및 UI 네비게이션 구조 2️⃣ CONNECT BY의 기본 구문SELECT 컬럼명FROM 테이블명START WITH 루트 조건CONNECT BY PRIOR 부모_컬럼 = 자식_컬럼;START WITH → 최상위 부모 노드(루트 노드)를 설정CONNECT BY PRIOR 부모_컬럼 = 자식_컬럼 → 부모-자식 관계 정의 3️⃣ 예제: 직원 조직도 계층 구조 조회📌 (1) ..
💡 Direct Path I/O는 버퍼 캐시(Buffer Cache)를 거치지 않고 직접 디스크에서 데이터를 읽거나 쓰는 방식입니다.일반적인 데이터베이스 I/O는 버퍼 캐시를 거쳐 메모리에서 처리되지만, Direct Path I/O는 메모리를 우회하여 SGA를 거치지 않고 PGA(Process Global Area)로 직접 데이터를 로드합니다. 🔸 1. Direct Path I/O의 동작 방식✅ (1) 일반적인 I/O (Buffer Cache I/O)와 차이점구분일반적인 I/O (SGA 기반)Direct Path I/O캐시 사용 여부버퍼 캐시(Buffer Cache)를 거침버퍼 캐시를 거치지 않음메모리 위치SGA(System Global Area) 사용PGA(Process Global Area) 사..
B-Tree Index(균형 트리 인덱스)는 계층적 구조를 가지며, 데이터 검색 시 빠른 탐색이 가능하도록 설계된 인덱스입니다. 🔸 1. B-Tree Index 구조B-Tree 인덱스는 다음과 같은 계층적 구조로 이루어져 있습니다.1️⃣ Root Node (루트 노드)인덱스의 최상위 노드검색을 시작하는 지점2️⃣ Branch Node (중간 노드, 분기 노드)루트 노드와 리프 노드 사이에 존재키 값을 기준으로 검색 방향을 결정3️⃣ Leaf Node (리프 노드)인덱스의 가장 하위 노드실제 테이블의 ROWID를 저장하여 데이터 행과 연결됨인접한 리프 노드끼리 연결(링크)되어 있음 [Root Node] / \ [Branch 1] [Branch 2] / ..
🔹 1. 인덱스란?인덱스는 테이블의 검색 성능을 향상시키는 데이터 구조입니다.테이블의 특정 컬럼에 대한 정렬된 정보를 별도로 저장하여, 빠르게 데이터를 찾을 수 있도록 돕습니다.도서관에서 책을 찾기 위해 사용하는 목차(Index)와 유사한 개념입니다. 🔹 2. 인덱스 기본 생성 및 사용법2-1. 기본 인덱스 생성 (B-Tree Index)구문:CREATE INDEX 인덱스명 ON 테이블명(컬럼명);✅ 예제:CREATE INDEX emp_name_idx ON emp(emp_name);employees 테이블의 employee_name 컬럼에 대해 인덱스를 생성합니다.해당 컬럼을 활용하는 검색 속도가 빨라집니다. 2-2. 유니크 인덱스 (Unique Index)유니크 인덱스는 중복 값을 허용하지 않는 인..
🔹 1. 테이블 스캔(Table Scan)테이블을 검색하는 방식으로 크게 두 가지가 있습니다.1-1. 풀 테이블 스캔(Full Table Scan, FTS)테이블의 모든 데이터를 처음부터 끝까지 읽어가면서 검색하는 방식입니다.✅ 특징• 인덱스를 사용하지 않음• 랜덤 I/O가 아닌 Sequential I/O 로 동작 (속도 최적화 가능)• 대량의 데이터를 읽을 때 유리하지만, 소량 데이터 검색에는 비효율적✅ 발생하는 경우• WHERE 조건절에 인덱스를 활용할 수 없는 경우• 테이블 전체를 스캔하는 것이 더 효율적일 때 (예: 많은 데이터를 반환하는 경우)✅ 예제select * from emp• employees 테이블을 처음부터 끝까지 읽음 → Full Table Scan 발생1-2. 테이블 액세스 BY..
데이터베이스에서 I(Input)/O(Output)는 성능을 결정하는 중요한 요소이다. 🔹 논리적 I/O(Logical I/O)란?논리적 I/O는 데이터베이스에서 데이터를 요청할 때 발생하는 논리적인 데이터 접근을 의미즉, 사용자가 특정 데이터를 조회하거나 변경할 때, DBMS의 메모리(Buffer Cache)에 데이터가 있는지 확인하는 과정이 논리적 I/O ✅ 논리적 I/O의 특징데이터 블록이 버퍼 캐시(Buffer Cache)에 존재할 경우, 디스크에서 읽지 않고 메모리에서 바로 조회함디스크에 직접 접근하지 않음 → 성능이 상대적으로 빠름SQL 실행 시 블록을 읽는 횟수로 측정 가능 (consistent gets와 db block gets로 확인)✅ 논리적 I/O의 종류종류설명Consistent Ge..
데이터베이스는 데이터를 효율적으로 저장하고 관리하기 위해 논리적 구조와 물리적 구조로 나뉜다. 1. 논리적 저장 구조 (Logical Storage Structure)사용자가 데이터를 논리적으로 볼 수 있는 구조이며, 데이터베이스 객체들이 어떻게 조직되는지를 나타냅니다.① 데이터베이스 (Database)하나의 데이터베이스는 여러 개의 **테이블스페이스(Tablespace)**로 구성됨.예: ORCL 데이터베이스 안에 USERS, SYSTEM 등의 테이블스페이스가 존재. ② 테이블스페이스 (Tablespace)데이터 파일(Data File)을 그룹화하여 관리하는 논리적 저장 공간.각 테이블스페이스는 여러 개의 데이터 파일을 가질 수 있음.주요 테이블스페이스:SYSTEM / SYSAUX: 데이터 딕셔너리, ..
SGA(System Global Area)란?Oracle Database에서 사용하는 공유 메모리 영역으로, 데이터베이스 인스턴스가 실행될 때 생성되며, 모든 서버 및 백그라운드 프로세스가 공동으로 사용하는 메모리 영역이다.SGA는 데이터 캐싱, SQL 실행 정보 저장, 프로세스 간 통신 등을 담당하며, 성능 최적화를 위해 중요한 역할을 한다.서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱한다. SGA의 주요 구성 요소1. 공유 풀(Shared Pool)SQL 및 PL/SQL 실행을 위한 파싱 정보, 실행 계획, 데이터 딕셔너리 정보 등을 저장주요 구성 요소1) 라이브러리 캐시(Library Cache) : SQL, PL/SQL 코드, 실행 계획 등을 저장2) 데이터..