DB/Oracle

DB/Oracle

Oracle | VARCHAR2, NVARCHAR2, RAW 타입의 최대 크기 확장 설정 – MAX_STRING_SIZE

Oracle 12c부터는 VARCHAR2, NVARCHAR2, RAW 타입의 최대 크기가 기존 4,000바이트에서 32,767바이트로 대폭 증가하였다.이는 LOB 타입으로 전환하지 않고도 더 많은 문자열 데이터를 저장할 수 있다는 점에서 실무적으로 유의미한 변화다.다만, 이 기능을 사용하기 위해서는 초기화 파라미터인 MAX_STRING_SIZE를 설정해야 하며, 관련 조건과 주의사항도 함께 고려해야 한다.1. 기본값 – MAX_STRING_SIZE = STANDARDOracle 12c 이전과 동일한 설정이다.데이터 타입 최대 크기 (STANDARD..

DB/Oracle

Oracle | Temporary Undo – TEMP_UNDO_ENABLED

기존에는 모든 undo 레코드가 undo 테이블스페이스에 저장되었으나, 12c부터는 임시 오브젝트(temporary object)에 대한 undo 정보를 별도로 관리할 수 있도록 분리되었다.이는 undo 공간 절약, redo 로그 부하 감소, Data Guard 활용성 개선 등 실질적인 이점을 제공한다.1. Temporary Undo란?기존에는 임시 테이블의 작업도 일반 테이블과 동일하게 undo 테이블스페이스에 저장되었고, 해당 undo 정보는 redo 로그에도 기록되었다. 즉, 로그 성능이나 공간 측면에서 불필요한 부담이 존재했다.Oracle 12c부터는 TEMP_UNDO_ENABLED 파라미터를 통해 임시 테이블의 undo 레코드를 임시 테이블스페이스에 분리 저장할 수 있도록 지원한다.2. 구조 변..

DB/Oracle

Oracle | CHANGE_DUPKEY_ERROR_INDEX

Oracle 11g R2부터 CHANGE_DUPKEY_ERROR_INDEX 힌트 기능이 있다..INSERT 또는 UPDATE 작업 시 고유 키(unique key) 위반이 발생했을 때 어떤 제약 조건(인덱스) 때문에 오류가 발생했는지를 명확히 식별할 수 있도록 도와주는 기능인데,특히 하나의 테이블에 두 개 이상의 UNIQUE 제약 조건이 있을 경우 어떤 제약 조건이 충돌을 유발했는지 판단하는 데 유용하다.1. 힌트의 역할 요약기본적으로 Oracle은 INSERT 또는 UPDATE 시 고유 제약 조건 위반이 발생하면에러 메시지를 반환하지만, 어떤 인덱스에서 중복이 발생했는지 구체적으로 알려주지 않는 경우가 많다.기본 오류 예시ORA-00001: unique constraint violated하지만 이 힌트..

DB/Oracle

Oralce | Oracle IN Bind Variable 1000개 한계, Global Temporary Table 사용

문제의 시작: IN 절 한계처음엔 잘 되던 조회 SQL이 어느 날부터 갑자기 실패했음.SELECT … WHERE **** IN (:1, :2, …, :1000, :1001);Oracle은 바인드 변수로 1000개까지만 허용하는데, 어느 순간 사내 사업 규모 확장으로 인해 바인드 변수가 1000개를 초과함.ORA-01795: maximum number of expressions in a list is 1000해결책 1: GTT(Global Temporary Table)우선 아래처럼 GTT 테이블을 만들어 대응함.CREATE GLOBAL TEMPORARY TABLE BRANCH_TMP ( **** VARCHAR2(10)) ON COMMIT DELETE ROWS;그리고 조회 전에 GTT에 값 넣음.조회..

DB/Oracle

Oracle | 테이블스페이스(TableSpace)

1. 테이블스페이스란?Oracle에서는 모든 테이블, 인덱스, 뷰 등 오브젝트가 저장되는 논리적 저장 공간을 TableSpace라고 부릅니다.쉽게 말해, "이 테이블은 어느 창고에 보관할까?"를 결정하는 상자입니다. 2. 테이블스페이스의 실제 구조Oracle의 계층 구조DB → TableSpace → Data File → Segment → Table/Index TableSpace: 논리적 저장 영역Data File: 실질적인 디스크 파일 (*.dbf)Segment: 테이블이 차지하는 공간 3. 왜 TableSpace를 나눌까?팀별/모듈별 데이터 분리 (예: HR_DATA, SALES_DATA)복구나 마이그레이션 범위를 좁힐 수 있음특정 사용자에게 특정 테이블스페이스만 할당 가능디스크 I/O 부하 분산 4..

DB/Oracle

Oracle | Colima로 Oracle 11g Docker 환경 구성한 이유 + 볼륨으로 DB 데이터 유지하는 법

최근 Oracle 11g 기반 테스트 환경을 구성하면서, Docker Desktop 대신 Colima + Docker CLI 조합을 선택하게 되었습니다.그 이유와, 컨테이너를 삭제해도 Oracle DB 데이터를 유지할 수 있었던 구조에 대해 상세히 공유합니다. Docker Desktop을 쓰지 않은 이유Docker Desktop은 처음엔 정말 편리하지만, Mac M1/M2 환경에서는 다음과 같은 단점이 존재합니다:리소스 과소비GUI 중심이기 때문에 리소스 점유율이 높고, 특히 x86 이미지 실행 시 에뮬레이션 오버헤드가 큽니다.상업적 사용 제약회사나 교육기관에서는 유료 라이선스 필요→ 학습 환경이라도 나중에 부담될 수 있음CLI 중심 실습과 충돌실무 또는 학습에서는 CLI로 컨테이너 조작을 익히는 게 중..

DB/Oracle

Oracle | Docker + Colima로 Oracle 11g 환경 구축 + .dmp 구조 복원하기

Docker Desktop은 사용하지 않고, Apple Silicon(M2)에서 최적화된 Colima를 사용했으며,복원 중 문제가 발생하여 .dmp 파일에서 데이터 없이 테이블/인덱스/프로시저 구조만 복원한 과정을 기록합니다.Colima 선택 이유Docker Desktop은 리소스 점유율 높고, 상업적 사용 시 유료 라이선스 문제 있음Apple Silicon에서는 x86 기반 이미지 성능 이슈 존재Colima는 Lima 기반의 경량 가상 머신 + QEMU 에뮬레이션 → M1/M2에서 최적화 colima start --arch x86_64 반드시 --arch x86_64를 명시해야 Oracle 11g 이미지가 동작합니다.Oracle 컨테이너 실행 with Docker Volume docker volume ..

DB/Oracle

Oracle | DUAL, SID, SCHEMA 개념

Oracle 기본 개념 정리: DUAL / SID / SCHEMADUAL이란?Oracle에서는 SELECT 문을 실행할 때 항상 FROM 절이 필요합니다.간단한 계산이나 함수 결과를 테스트할 때 FROM DUAL을 사용합니다.DUAL은 1행 1열만 가진 가상 테이블입니다.오직 Oracle에만 존재하는 특수 테이블입니다.예시:SELECT 1 + 1 FROM DUAL;SELECT SYSDATE FROM DUAL;SELECT USER FROM DUAL;SID란?Oracle에서는 데이터베이스 인스턴스를 구분하기 위해 SID(System Identifier)를 사용합니다.MySQL은 여러 DB를 생성해서 관리하지만,Oracle은 하나의 인스턴스(SID) 안에 여러 스키마(User)를 둡니다.Oracle XE 버전..

AidenYoun
'DB/Oracle' 카테고리의 글 목록