Automatic SQL Transpiler
·
Oracle/Performance
Oracle 23c에 Automatic SQL Transpiler 기능이 추가되었습니다. 해당 기능은 단순 표현식을 반환하는 PL/SQL 함수를 SQL 표현식으로 변환해 SQL과 PL/SQL 간의 Context switching을 제거함으로써 성능을 개선합니다.PL/SQL functions within SQL statements are automatically converted (transpiled) into SQL expressions whenever possible. Transpiling PL/SQL functions into SQL statements can speed up overall execution time. 테스트를 위해 아래와 같이 테이블과 함수를 생성하겠습니다. f1 함수는 단순 표현식..
INTERVAL 값 집계
·
Oracle/SQL
Oracle 23c부터 INTERVAL 값에 SUM 함수와 AVG 함수를 사용할 수 있습니다.You can pass INTERVAL datatypes to the SUM and AVG aggregate and analytic functions. This enhancement makes it easier for developers to calculate totals and averages over INTERVAL values. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;CREATE TABLE t1 (c1 INTERVAL DAY TO SECOND, c2 INTERVAL DAY TO SECOND);INSERT INTO t1 VALUES (INTERVAL '1'..
DB_DEVELOPER_ROLE 롤
·
Oracle/Administration
Oracle 23c에 개발자를 위한 DB_DEVELOPER_ROLE 롤이 추가되었습니다.The DB_DEVELOPER_ROLE role provides an application developer with all the necessary privileges to design, implement, debug, and deploy applications on Oracle databases. By using this role, administrators no longer have to guess which privileges may be necessary for application development. 아래 쿼리로 DB_DEVELOPER_ROLE 롤에 부여된 시스템 권한, 오브젝트 권한, 롤을 확인할 수 ..
IF [NOT] EXISTS 절
·
Oracle/SQL
Oracle 23c부터 일부 DDL 문에 IF [NOT] EXISTS 절을 사용할 수 있습니다.DDL object creation, modification, and deletion now support the IF EXISTS and IF NOT EXISTS syntax modifiers. This enables you to control whether an error should be raised if a given object exists or does not exist. The IF [NOT] EXISTS syntax can simplify error handling in scripts and by applications. 아래와 같이 DROP TABLE, CREATE TABLE, ALTER TAB..
UPDATE 문, DELETE 문에 대한 직접 조인
·
Oracle/SQL
Oracle 23c부터 UPDATE 문과 DELETE 문에 대한 직접 조인이 가능해졌습니다.Join the target table in UPDATE and DELETE statements to other tables using the FROM clause. These other tables can limit the rows changed or be the source of new values. Direct joins make it easier to write SQL to change and delete data. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다.-- 1DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 (c1, c2) AS SELECT R..
어노테이션 (Annotation)
·
Oracle/Administration
Oracle 23c에 오브젝트의 메타데이터를 관리할 수 있는 어노테이션 (Annotation) 기능이 추가되었습니다.Annotations enable you to store and retrieve metadata about database objects. These are name-value pairs or simply a name. These are freeform text fields applications can use to customize business logic or user interfaces. Annotations help you use database objects in the same way across all applications. This simplifies development..
IOT에 대한 Advanced LOW 압축
·
Oracle/Administration
Oracle 23c부터 IOT에 대한 Advanced LOW 압축이 가능해졌습니다. 이전 버전까지는 IOT에 대해 Prefiex 압축만 가능했습니다.An index-organized table (IOT) is a table stored in a variation of a B-tree index structure where rows are ordered by primary key. IOTs are useful because they provide fast random access by primary key without duplicating primary key columns in two structures - a heap table and an index. In earlier releases, IOTs ..
Inline LOB의 최대 크기 변경
·
Oracle/Administration
Oracle 23c부터 Inline LOB의 최대 크기를 8000 바이트로 설정할 수 있습니다.LOB values are stored either in the table row (inline) or outside of the table row (out-of-line). The maximum size of the inline LOB is increased to 8000 bytes, allowing larger LOB values being stored inside a row. Earlier, the maximum size was 4000. This provides better input-output performance while processing LOB columns. You can experience..
파티션 high_value_clob, high_value_json 칼럼 추가
·
Oracle/Administration
Oracle 23c에 파티션의 상위 값을 조회할 수 있는 CLOB 타입의 high_value_clob 칼럼과 JSON 타입의 high_value_json 칼럼이 추가되었습니다. 이제 불편한 LONG 타입의 high_value 칼럼을 사용하지 않아도 됩니다.All data dictionary views holding partitioning-related metadata, e.g. [ALL_TAB_PARTITIONS], have two additional columns representing the high value (boundary) information of partitions and subpartitions in JSON and CLOB format. Providing the high value (b..
Oracle Database 23c Free - Developer Release 설치
·
Oracle/Installation
Oracle Database 23c Free - Developer Release(이후 23c Free)는 Docker 컨테이너 이미지, VirtualBox VM, 리눅스 RPM 파일 형식으로 제공되고 있습니다. 아래 링크에서 설치에 필요한 파일과 관련된 정보를 찾을 수 있습니다.Downloads – Oracle VM VirtualBoxOracle Linux ISOs | Oracle, Software. Hardware. Complete. - OracleLinux-R8-U7-x86_64-dvd.isoOracle Database 23c Free Downloads - oracle-database-free-23c-1.0-1.el8.x86_64.rpmInstallation Guide for Linux x86-64O..
서브쿼리 팩토링 절과 log file sync 이벤트
·
Oracle/Performance
서브쿼리 팩토링 절(WITH 절)이 materialize되면 redo가 발생하고 이로 인해 log file sync 이벤트 대기가 발생할 수 있습니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE t1 PURGE; CREATE TABLE t1 (c1) AS SELECT ROWNUM FROM XMLTABLE ('1 to 10000000'); 아래 쿼리는 서브쿼리 팩토링 절이 materialize되었습니다. 실행 계획 2번에 LOAD AS SELECT (CURSOR DURATION MEMORY) 오퍼레이션이 표시됩니다. 물리 I/O가 발생하지 않았으므로 12.2 버전에 추가된 In-Memory CDT 기능이 동작한 것을 유추할 수 있습니다. -- 2 WITH w1 AS (..
오브젝트 ID
·
Oracle/Administration
Segment 오브젝트는 오브젝트 ID가 순차적으로 부여되고, Non-segment 오브젝트를 오브젝트 ID가 재사용될 수 있는 것으로 보입니다. 참고로 이 동작에 대한 오라클 포럼의 Regarding object_id in Oracle 글에도 명확한 이유가 설명되어 있지 않습니다. 아래는 Segment 오브젝트인 테이블로 테스트한 결과입니다. 오브젝트 ID가 순차적으로 부여되는 것을 확인할 수 있습니다. -- 1-1 DROP TABLE t1 PURGE; CREATE TABLE t1 (c1 NUMBER); -- 1-2 SELECT object_id, data_object_id FROM user_objects WHERE object_name = 'T1'; OBJECT_ID DATA_OBJECT_ID ---..