ORA-01719 에러
·
Oracle/SQL
오라클 23.1 버전부터 IN 조인 조건에 대해 ORA-01719 에러가 발생하지 않습니다. 아래는 V$SYSTEM_FIX_CONTROL 뷰에서 ORA-01719 에러와 관련된 Fix Control을 조회한 결과입니다.SELECT bugno, value, sql_feature, description, optimizer_feature_enable FROM v$system_fix_control WHERE bugno IN (6610822, 32436948); BUGNO VALUE SQL_FEATURE DESCRIPTION OPTIMIZER_FEATURE_ENABLE-------- ----- -----------..
SQL*Loader 데이터 파일 확장자
·
Oracle/Utilities
SQL*Loader의 DATA 파라미터에 확장자 없는 파일명을 지정하면 dat 확장자가 자동으로 추가되고 이로 인해 에러가 발생할 수 있습니다.If you do not specify a file extension, then the default is .dat. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.DROP TABLE t1 PURGE;CREATE TABLE t1 (c1 NUMBER, c2 NUMBER); 아래 내용으로 t1.dat 파일과 t1 파일을 생성하겠습니다.1,2 아래와 같이 컨트롤 파일을 생성하겠습니다. LOAD DATATRUNCATE INTO TABLE t1FIELDS TERMINATED BY ","TRAILING NULLCOLS( c1 , c2) data 파라미터에 t1.d..
NL 조인의 비용 계산
·
Oracle/Performance
이번 글에서 NL 조인의 비용 계산에 대해 살펴본 후 optimizer_index_caching, optimizer_index_cost_adj 파라미터가 NL 조인 비용 계산에 미치는 영향에 대해 살펴보겠습니다. 준비테스트를 위해 아래와 같이 테이블과 인덱스를 생성하겠습니다.-- 1DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 (c1) AS SELECT ROWNUM FROM XMLTABLE ('1 to 10000');CREATE TABLE t2 (c1, c2, c3) ASSELECT ROWNUM, CEIL (ROWNUM / 100), NVL (NULLIF (MOD (ROWNUM, 100), 0), 100) FROM XMLTABLE ('1 to 1000..
MBRC 설정에 따른 multiblock read 동작
·
Oracle/Performance
개요 db_file_multiblock_read_count  파라미터는 multiblock read 수행 시 한 번의 I/O 작업에서 읽을 수 있는 최대 블록 수를 지정합니다. 기본값은 플랫폼이 효율적으로 수행할 수 있는 최대  I/O 크기(대부분의 플랫폼은 1MB)를 블록 크기(db_block_size = 8K)로 나눈 값인 128로 설정됩니다. 10.2 이전 버전은 multiblock read의 수행과 비용 계산에 모두 db_file_multiblock_read_count  파라미터를 사용했지만 10.2 버전부터 multiblock read의 수행은 _db_file_exec_read_count 파라미터, 시스템 통계(MBRC)가 수집되지 않은 경우 multiblock read의 비용 계산은 _db_..
SQL Macro - Table Expression
·
Oracle/SQL
지난 글에 이어 이번 글에서는 테이블 표현식을 사용하는 테이블 SQM에 대해 간단히 살펴보겠습니다. 참고로 테이블 SQM은 Oracle 19c에 추가된 PTF(Polymorphic Table Function)과 유사하게 동작하며, SQL Server의 TVF(Table-Valued Function)을 대체할 수 있는 기능으로 보입니다. 테스트 버전은 아래와 같습니다. 테이블 SQM은 19.7 버전으로 기능이 backport되었습니다.-- 1SELECT version_full FROM product_component_version;VERSION_FULL------------21.3.0.0.01 row selected. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 2DROP TABLE t1 PUR..
SQL Macro - Scalar Expression
·
Oracle/SQL
Oracle 21c에 SQL Macro(SQM) 기능이 추가되었습니다. SQM을 사용하면 SQL 표현식(스칼라 표현식)과 SQL 문(테이블 표현식)을 재사용 가능한 매개변수화된 구조로 변환할 수 있습니다. 이번 글에서 스칼라 표현식을 사용하는 스칼라 SQM에 대해 간단히 살펴보겠습니다.You can create SQL macros (SQM) to factor out common SQL expressions and statements into reusable, parameterized constructs that can be used in other SQL statements.SQL macros can either be scalar expressions, typically used in SELECT lis..
분석 함수 기능 개선
·
Oracle/SQL
Oracle 21c에서 분석 함수의 기능이 개선되었습니다. 이번 글에서 관련 내용을 살펴보겠습니다. 준비테스트 버전은 아래와 같습니다.-- 1SELECT version_full FROM product_component_version;VERSION_FULL------------21.3.0.0.01 row selected. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 2DROP TABLE t1 PURGE;CREATE TABLE t1 (c1 NUMBER, c2 NUMBER);INSERT INTO t1 VALUES (1, 1);INSERT INTO t1 VALUES (2, 1);INSERT INTO t1 VALUES (3, 2);INSERT INTO t1 VALUES (4, 2);INSERT INTO..
OATS (Object Activity Tracking System)
·
Oracle/Administration
Oracle 21c에 OATS 기능이 추가되었습니다. OATS(Object Activity Tracking System)는 데이터베이스 객체와 관련된 다양한 유형의 Activity에 대한 정보를 제공하는 RDBMS 기반 추적 서비스입니다. Activity는 테이블 스캔이나 로딩처럼 사용자나 시스템이 수행한 작업을 나타냅니다. 대부분의 Activity은 15분 동안 테이블을 스캔한 횟수와 같이 빈도(즉, 고정된 시간 간격에 따른 횟수)의 형태로 추적됩니다.Object Activity Tracking System (OATS) is a generic RDBMS based tracking service that provides information about various types of activities a..
Staging Table
·
Oracle/Administration
Oracle 23ai에 Staging Table 기능이 추가되었습니다. 적재 성능을 개선하기 위해 로깅 최소화 등의 기능이 추가되기를 바랬지만 현재까지는 압축, 통계 수집, 파티션 관리가 불가능하고 삭제시 즉시 PURGE되는 점을 제외하면 일반 테이블과 크게 다르지 않은 것 같습니다.Staging tables are heap tables optimized for fast data ingestion and for handling volatile data. Key table attributes are set to defaults for these use cases without any additional user interaction. Creating staging tables rather than 'nor..
_optimizer_nested_loop_join 힌트
·
Oracle/Performance
Oracle 21c에 _optimizer_nested_loop_join 힌트가 추가되었습니다. 이 글에서 _optimizer_nested_loop_join 힌트의 동작에 대해 살펴보겠습니다.NAME TYPE VALUE DEFAULT_VALUE ISSES_MODIFIABLE DESCRIPTION--------------------------- ---- ----- ------------- ---------------- ------------------------------_optimizer_nested_loop_join 2 on on TRUE favor/unfavor nested loop joinNAME ..
JSON Relational Duality #3 - M:1 조인 Duality 뷰
·
Oracle/JSON
JSON Relational Duality #1 - 단순 Duality 뷰 JSON Relational Duality #2 - 1:M 조인 Duality 뷰 JSON Relational Duality #3 - M:1 조인 Duality 뷰 지난 글에 이어 이번 글에서는 M:1 조인 Duality 뷰의 동작에 대해 살펴보겠습니다. 준비테스트 버전은 아래와 같습니다.-- 1SELECT version_full FROM product_component_version;VERSION_FULL------------23.4.0.24.051 row selected. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 (c1..
JSON Relational Duality #2 - 1:M 조인 Duality 뷰
·
Oracle/JSON
JSON Relational Duality #1 - 단순 Duality 뷰 JSON Relational Duality #2 - 1:M 조인 Duality 뷰 JSON Relational Duality #3 - M:1 조인 Duality 뷰 지난 글에 이어 이번 글에서는 1:M 조인 Duality 뷰의 동작에 대해 살펴보겠습니다. 준비테스트 버전은 아래와 같습니다.-- 1SELECT version_full FROM product_component_version;VERSION_FULL------------23.4.0.24.051 row selected. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 2DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1..