Oracle 19c의 추가 및 강화된 기능 소개

2025. 2. 12. 00:00IT/Oracle

반응형

Oracle 19c의 추가 및 강화된 기능 소개

Oracle 19c는 이전 버전(특히 12c)에서 발전된 기능을 제공하며, 자동화, 성능 향상, 보안 강화에 중점을 두었습니다.
아래는 19c에서 추가되거나 강화된 주요 기능과 관련된 SQL 예제입니다.

자동 인덱싱(Automatic Indexing)

  • 자동으로 인덱스를 생성, 모니터링, 유지 관리하여 성능을 최적화합니다.
  • 머신러닝 기반으로 불필요한 인덱스를 자동 삭제하여 스토리지를 절약합니다.
  • SQL  예제 : 자동 인덱스 활성화
ALTER SYSTEM SET AUTO_INDEX_MODE = IMPLEMENT;
  • 자동 생성된 인덱스 확인
SELECT INDEX_NAME, TABLE_NAME, AUTO FROM DBA_INDEXES WHERE AUTO = 'YES';

 

실시간 통계 수집

  • DML(INSERT, UPDATE, DELETE) 수행 시 자동으로 통계를 업데이트하여 최적의 실행 계획을 제공
  • 기존 12c에서는 DBMS_STATS.GATHER_TABLE_STATS를 수동으로 실행해야 했음
SELECT TABLE_NAME, LAST_ANALYZED FROM USER_TAB_STATISTICS WHERE TABLE_NAME = 'EMPLOYEES'

 

읽기 전용 Standby 내 DML 허용

  • Standby 데이터베이스에서 DML(INSERT, UPDATE, DELETE) 실행 가능
  • 변경 사항이 Primary DB로 자동 리디렉션됨
  • 고가용성(HA) 환경에서 읽기/쓰기 부하를 분산하는 데 유용
ALTER DATABASE SET DML_REDIRECTION = ENABLE;

 

메모리 최적화 행 저장소

  • Key-Value 조회를 초고속으로 수행하는 기능
  • IoT 및 초고속 검색이 필요한 애플리케이션에 적합
ALTER SYSTEM SET MEMOPTIMIZE_POOL_SIZE = 2G;
CREATE TABLE fast_lookup (
    id NUMBER PRIMARY KEY,
    data VARCHAR2(100)
) MEMOPTIMIZE FOR

 

하이브리드 파티션 테이블

  • 핫 데이터(자주 사용하는 데이터)는 DB 내부 테이블, 콜드 데이터(오래된 데이터)는 외부 테이블에 저장 가능
  • 파일 시스템, 클라우드 스토리지(NFS 등)에 외부 파티션 배치 가능
CREATE TABLE sales (
    sale_id NUMBER PRIMARY KEY,
    sale_date DATE,
    amount NUMBER
)
PARTITION BY RANGE (sale_date) 
(
    PARTITION p1 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD')),
    PARTITION p2 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
    PARTITION p3 VALUES LESS THAN (MAXVALUE) DATA IN (EXTERNAL)
);

 

JSON 데이터 타입 추가 및 처리 성능 향상

  • 기존 12c에서는 JSON 데이터를 CLOB 또는 VARCHAR2에 저장했으나, 19c에서는 전용 JSON 데이터 타입을 제공하여 성능이 향상됨
CREATE TABLE employees (
    emp_id NUMBER PRIMARY KEY,
    emp_data JSON
);

INSERT INTO employees VALUES (1001, '{"name": "John Doe", "age": 30, "dept": "IT"}');


SELECT emp_data.name, emp_data.age 
FROM employees 
WHERE emp_data.dept = 'IT';
반응형

자동 SQL 실행 계획 관리

  • 실행 계획 변경이 성능 저하를 일으키지 않도록 자동 감지 및 최적화
BEGIN
  DBMS_SPM.CONFIGURE('AUTO_CAPTURE_SQL_PLAN_BASELINES', 'TRUE');
END;
/
반응형