Database 33

[Oracle]테이블 및 파티션 통계 정보 관리

왜 통계 정보를 관리해야 하나요?우리는 근본적으로 왜 이 통계 정보를 관리해야 하는지 알아야 할 필요가 있습니다. 오라클 데이터베이스에서 테이블과 파티션의 통계 정보를 관리하는 것은 데이터베이스의 성능을 결정짓는 가장 핵심적인 작업 중 하나입니다. 통계 정보가 부실하면 오라클도 비효율적인 실행 계획으로 쿼리를 실행 하게 되기 때문이죠. 통계 정보를 철저히 관리해야 하는 이유는 다음과 같습니다.1. CBO(Cost-Based Optimizer)의 의사결정 근거CBO는 sql을 실행할 때 "어떤 방법이 가장 빠르고 저렴할까?"를 계산합니다. 이 때 CBO가 참고하는 데이터가 바로 통계 정보입니다.데이터 분포 확인: 테이블에 데이터가 10건 있는지 1000만건 있는지에 따라, Full Scan을 할지 Inde..

Database/Oracle 2026.04.14

[Oracle]DBMS_PARALLEL_EXECUTE 패키지

DBMS_PARALLEL_EXECUTE오라클의 DBMS_PARALLEL_EXECUTE 패키지는 병렬 처리를 쉽게 도와주는 오라클 내장 PL/SQL Package 오브젝트입니다. 대량 데이터를 처리할 때 병렬처리는 필수입니다. 따라서, 오라클이 기본으로 제공하는 패키지를 이용하여 병렬 처리를 보다 쉽게 사용할 수 있습니다. 오라클 데이터베이스의 병렬 처리 방법은 크게 2가지가 있습니다.병렬 쿼리(Parallel Query)애플리케이션 병렬(Application Parallel) 방식1. 병렬 쿼리 방식하나의 SQL 요청을 N개의 프로세스가 자동으로 나눠 처리하는 방법으로 오라클 데이터베이스의 사용자는 SQL 문장에 옵티마이저 힌트( /* parallel */ )를 추가함으로써 손쉽게 병렬 처리를 할 수 있..

Database/Oracle 2026.04.01

[Oracle]프로세스 수 변경하는 방법

오라클 데이터베이스는 프로세스 수에 비례하여 최대 세션 수가 결정됩니다. 세션 수와 프로세스 수의 관계 공식은 다음과 같습니다. Session = (1.5 * Processes) + 22 따라서, 최대 세션 수를 늘리기 위해선 프로세스의 수를 늘려주어야 합니다. 이 때 spfile을 변경하면 되는데, SQL문을 통해 변경하는 방법을 알아보겠습니다.1. sqlplus 접속sqlplus / as sysdba2. parameter 값 확인# process 확인show parameter processes# session 확인show parameter sessions 해당 명령어를 통해 현재 프로세스와 세션 수를 확인해보면 process - 300개와 session - 480개 인 것을 확인할 수 있습니다.3...

Database/Oracle 2026.03.20

[Oracle]DDL 스크립트 출력하기(테이블, 인덱스 등)

오라클에선 DBMS_METADATA.GET_DDL을 통해 테이블, 인덱스, 뷰, 유저, 프로시저 생성에 관한 Create DDL을 쉽게 추출할 수 있습니다. 해당 기능은 oracle 9i 이상부터 지원하고 있습니다.사용 예제1. 테이블 DDL 추출-- SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE 명') FROM DUAL;SELECT DBMS_METADATA.GET_DDL('TABLE','EMPLOYEES') FROM DUAL; 2. 인덱스 DDL 추출-- SELECT DBMS_METADATA.GET_DDL('INDEX','INDEX 명') FROM DUAL;SELECT DBMS_METADATA.GET_DDL('INDEX','SYS_C007536') FROM DUAL; 테..

Database/Oracle 2025.03.11

[Oracle]SQL Loader로 TEXT파일 업로드 하기

SQL Loader(sqlldr)SQL Loader란 오라클을 설치하면 기본적으로 내장되어 있는 툴로, 주로 정제된 대용량 데이터를 DB에 업로드할 때 사용합니다. sqlldr의 데이터 적재 방식SQL Loader는 데이터를 적재할 때 크게 2가지 방식으로 나뉘어집니다.DPL(Direct Path Load) 방식데이터가 Insert될 때 SQL을 사용하지 않고 직접 메모리에 Data Block을 만들어서 해당 테이블에 직접 적재하는 방식. 따라서, Undo, Redo 로그를 발생시키지 않습니다. Table Lock 발생CPL(Conventional Path Load) 방식Buffer Cache를 거쳐 Data File을 SQL Insert 방식으로 적재한다. Row Lock 발생 sqlldr로 TEXT ..

Database/Oracle 2025.02.20

[Oracle]SELECT Query 결과 파일로 저장하기(SPOOL)

SPOOLSPOOL이란 SQL*Plus 환경에서 SQL 실행 결과를 파일로 저장할 때 사용하는 명령어입니다. 이를 통해 쿼리 결과를 텍스트 파일로 출력하여 저장할 수 있습니다. SPOOL의 기본적은 구조는 아래와 같습니다.-- SET을 통해 출력 결과의 형식을 설정할 수 있습니다.SET PAGESIZE 50000; -- 페이지 출력 크기 설정 (기본 : 14, 최대 : 50000)SET ECHO OFF; -- 명령어 에코 끔SET COLSEP '|'; -- 조회 결과 컬럼 간 구분자 '|' 설정SET HEADING OFF; -- 헤더 정보 제외-- 1. SPOOL 시작 (결과를 저장할 파일 지정)SPOOL C:\\output\\query_result.txt;-- 2. SQL 실..

Database/Oracle 2025.01.25

[Oracle]Linux(Oracle Linux 8)에 Oracle Database 19c 설치하기

환경 구성Host OS: Mac OS (64bit) / CPU: Apple Silicon (M2)VM: Virtual Box-7.1.4Guest OS: Oracle Linux 8.8Database: Oracle Database 19c 🖐️ 설치하기 이전에리눅스 설치아직 리눅스가 설치되어 있지 않다면 아래 포스팅을 참고하여 미리 설치해 주시기 바랍니다. (링크: [Linux]Virtual Box에 리눅스(Oracle Linux 8.x) 설치하기) [Linux]Virtual Box에 리눅스(Oracle Linux 8.x) 설치하기환경 구성Host OS: Mac OS (64bit) / CPU: Apple Silicon (M2)VM: Virtual Box-7.1.4Guest OS : Oracle Linux 8..

Database/Oracle 2025.01.23

[Oracle]계정 생성 시 c## 제거하는 방법

ORA-65096: invalid common user or role namecreate uesr {유저명} identified by {비밀번호};계정을 생성하려고 보니 invalid common user or role name(공통 사용자 또는 롤 이름이 부적합 합니다.) 에러가 발생하였습니다. 해당 에러가 발생하는 이유는 공통 사용자에 대한 규칙이 옳바르지 않기 때문입니다. 따라서, 계정 생성 시 유저 이름 앞에 c##을 붙여야 합니다.create user c##{유저명} identified by {비밀번호};c## 제거하기Oracle 12부터 계정 이름 앞에 c##을 붙여야지만 계정 생성이 가능하도록 변경되었다고 합니다. 그럼 c##을 붙이지 않고 생성하는 방법은 아예 없는 것일까요? 당연히 있습니..

Database/Oracle 2025.01.12

[초보 DBA를 위한 이것저것]Redo Log, Archive Mode, Undo Tablespace 설명

Undo와 Redo  Undo란 DML 트랜잭션을 취소하여 데이터베이스를 트랜잭션 이전의 상태로 되돌리는 것으로 작업 롤백과, 읽기 일관성, 복구를 합니다. DML 트랜잭션(update, insert, delete)이 발생하게 되면, 변경 이전의 데이터(원본 데이터)인 Undo Data는 전부 Undo Segment에 저장됩니다. 이때 Undo Segment를 저장하고 있는 Tablespace가 바로 Undo Tablespace입니다. Redo란 단어 그대로 "다시 하다"라는 뜻을 가지고 있습니다. 즉, DML 트랜잭션을 다시 수행한다는 의미겟죠?Redo는 기본적으로 복구의 역할을 합니다. DML 트랜잭션을 수행하던 도중 서버에 장애가 발생하여 데이터베이스가 shutdown 되었을 때 데이터베이스를 재기..

Database 2024.12.07

[Oracle]SCN(System Change Number)

SCN(System Change Number)DB의 변경이 발생한 시점. 즉 COMMIT이 발생하면 트랜잭션은 고유한 번호를 받게 됩니다. 이 때 발생하는 번호가 SCN(System Change Number)입니다. 이 SCN을 통해 트랜잭션을 관리할 수 있고 장애 발생 시 복구할 때 사용되는 키가 됩니다.또한, SCN(System Change Number)을 통해서 Data files, Control File, Redo Log File의 동기화 정보를 맞춥니다. SCN에 기록된 파일을 통해 복구 위치 파악하기Data Fiiles: 실제 데이터 저장되는 디스크 상의 물리적 파일이 파일을 OS 상에서 삭제 및 이동하면 안되고 DB에서 삭제해야 합니다. Control File: DB의 제어 정보를 가지고 있..

Database/Oracle 2024.11.17