Historical SQL Monitor Report가 저장되지 않는 이슈
·
Oracle/Performance
Historical SQL Monitor Report는 _report_capture_cycle_time 파라미터와 관련이 있습니다. 이 파라미터를 0으로 설정하면 리포트가 저장되지 않습니다. 12.1 버전의 MMON 관련 이슈로 인해 이후 버전에서도 파라미터를 0으로 설정하도록 권고하는 경우가 많은 것으로 보입니다. NAME VALUE DEFAULT_VALUE ISSYS_MODIFIABLE DESCRIPTION -------------------------- ----- ------------- ---------------- --------------------------------------------------------- _report_capture_cycle_time 60 60 IMMEDIATE T..
crsctl stat res -t 노드 번호 호스트명 불일치
·
Oracle/Administration
crsctl stat res -t 명령어를 수행하면  노드 번호와 호스트명이 불일치하는 경우가 있습니다.$ crsctl stat res -tora.RACDB.db 1 ONLINE ONLINE RACNode1 Open 2 ONLINE ONLINE RACNode4 Open 3 ONLINE ONLINE RACNode2 Open 4 ONLINE ONLINE RACNode3 Open 이 현상은 발생할 수 있는 예상된 동작으로  MOS 문서에 아래의 내용이 포함되어 있습니다.The node ordering is not guaranteed to be same as instance number ordering. CRSCTL output in sorted order is not guaranteed. The nod..
PL/SQL 오브젝트 컴파일 시 ORA-29275 에러 발생
·
Oracle/PLSQL
아래 함수는 오타로 인해 컴파일 경고가 발생합니다. SHOW ERROR 명령어를 수행하면 "ORA-29275: 부분 다중 바이트 문자" 에러 메시지가 출력되고 에러가 발생한 라인이 표시되지 않습니다. -- 1-1 CREATE OR REPLACE FUNCTION f1 (i_v1 IN NUMBER) RETURN VARCHAR2 IS BEGIN RETURN CASE WHEN i_v1 =< 10 THEN 'A' END; -- ! END; / 경고: 컴파일 오류와 함께 함수가 생성되었습니다. -- 1-2 SHOW ERROR ERROR: ORA-29275: 부분 다중 바이트 문자 오류가 없음. 오타를 수정한 후 함수를 컴파일하면 에러가 발생하지 않습니다. 단순한 오타로 인해 발생한 컴파일 경고지만 불명확한 에러 메..
OR 조인 조건을 사용한 아우터 조인의 성능 저하 #2
·
Oracle/Performance
개요 OR 조인 조건이 있는 아우터 조인은 비효율적인 실행 계획으로 인해 성능이 저하될 수 있습니다. OR 조인 조건이 아닌 다른 조인 조건이 있는 경우 OR 조인 조건을 CASE 표현식으로 변경하여 성능을 개선할 수 있습니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE t1 PURGE; DROP TABLE t2 PURGE; CREATE TABLE t1 (c1 NUMBER, c2 NUMBER, c3 NUMBER, c4 NUMBER); CREATE TABLE t2 (c1 NUMBER, c2 NUMBER); 직렬 쿼리 아래 쿼리는 OR 조인 조건을 처리하기 위해 t2 테이블을 Lateral View로 변환하고 소트 머지 조인으로 아우터 조인을 수행합니다. 하지만 Pred..
AWR Report TOC
·
Resources
아래는 Oracle 23ai(23.5) 기준 CDB AWR Report의 TOC(Table of Contents)입니다. PDB AWR Report에는 주석에 PDB로 표시한 항목만 표시됩니다.Main Report Report Summary - Top ADDM Findings by Average Active Sessions -- PDB - Load Profile -- PDB - Instance Efficiency Percentages (Target 100%) - Top 10 Foreground Events by Total Wait Time -- PDB - Wait Classes by Total Wait Time -- PDB ..
파티션 MERGE 동작 방식
·
Oracle/Administration
파티션 MERGE 동작 방식을 테스트하기 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE t1 PURGE; CREATE TABLE t1 (c1 NUMBER, c2 NUMBER) PARTITION BY RANGE (c1) ( PARTITION p1 VALUES LESS THAN (2) , PARTITION p2 VALUES LESS THAN (MAXVALUE) ); 아래 실행 계획에서 파티션 merge가 p1 파티션을 읽어 p2 파티션으로 입력하는 방식으로 동작하는 것을 알 수 있습니다. 단일 세그먼트는 단일 테이블스페이스에 존재해야 하므로 상이한 테이블스페이스에 생성된 파티션의 경우 예상되는 동작 방식이지만, 동일한 테이블스페이스에 생성된 파티션이라면 메타데이터 변경만으로 파티션을..
다중 키 해시 파티션
·
Oracle/Performance
다중 키로 생성한 해시 파티션의 조회 방식을 테스트하기 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE t1 PURGE; CREATE TABLE t1 (c1 NUMBER, c2 NUMBER, c3 NUMBER) PARTITION BY HASH (c1, c2, c3) PARTITIONS 256; 전체 파티션 키를 등호(=)로 입력하면 단일 파티션이 조회됩니다. -- 2 SELECT * FROM t1 WHERE c1 = 1 AND c2 = 1 AND c3 = 1; ------------------------------------------------------ | Id | Operation | Name | Pstart| Pstop | ----------------------------..
병렬 MERGE 문의 데이터 분배
·
Oracle/Performance
병렬 MERGE 문은 아래의 두 가지 데이터 분배 방식을 사용합니다. 12.0.1.2 이상 버전은 타깃 테이블이 비파티션 테이블인 경우 PX SEND (ROWID RANDOM) 분배 방식을 사용하고, 타깃 테이블이 파티션 테이블인 경우 PX SEND HYBRID (ROWID PKEY) 분배 방식을 사용합니다. 타깃 테이블이 파티션 테이블인 경우 삽입되는 데이터에 따라 데이터 분배가 불균형할 수 있습니다. PX SEND (ROWID RANDOM) 분배 방식: UPDATE는 ROWID 범위, INSERT는 RANDOM 방식으로 분배 PX SEND HYBRID (ROWID PKEY) 분배 방식: UPDATE는 ROWID 범위, INSERT는 PK 범위로 분배 테스트를 위해 아래와 같이 t1, t2, t3 테이..
max_idle_blocker_time 파라미터
·
Oracle/Administration
Oracle 19c에 max_idle_blocker_time 파라미터가 추가되었습니다. 블로킹 세션이 이 파라미터에 지정한 시간동안 IDLE 상태로 유지되면 세션을 자동으로 종료됩니다. 기본값은 0으로 미사용입니다. 블로킹 세션으로 인해 성능 이슈가 발생하고 있다면 해당 파라미터의 적용을 고려할 수 있습니다.-- 1SELECT name, value, default_value, description FROM v$parameter WHERE name = 'max_idle_blocker_time';NAME VALUE DEFAULT_VALUE DESCRIPTION--------------------- ----- ------------- ------------------------..
ORA-01779 에러
·
Oracle/SQL
Oracle 21c부터 Updatable Join View에 대한 ORA-01779 에러가 사라진 것으로 보입니다. 참고로 이 에러와 관련된 BYPASS_UJVC 힌트는 11.1 버전에서 deprecate되었습니다.Starting with Oracle Database Release 21c, it is not mandatory for all updatable columns in a join view to map to columns of a key-preserved table. When updating a join view, ensure that the UPDATE operation is deterministic. Note that this does not cause any impact on update p..
Varray 타입 칼럼 테이블 구조
·
Oracle/Administration
Varray 타입 칼럼은 내부적으로 VARCAR2 타입이나 CLOB 타입에 데이터를 저장합니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 DROP TABLE t1 PURGE; CREATE OR REPLACE TYPE tva_number FORCE IS VARRAY(32767) OF NUMBER; / CREATE TABLE t1 (c1 NUMBER, c2 tva_number); INSERT INTO t1 VALUES (1, tva_number (1, 2)); COMMIT; 아래는 t1 테이블을 조회하는 쿼리의 실행 계획입니다. -- 2 SELECT * FROM t1; ----------------------------------------------------- | Id | Operat..
Nested Table 타입 칼럼 테이블 구조
·
Oracle/Administration
Nested Table 타입 칼럼을 가진 테이블을 생성하면 암시적으로 Nested Table과 Nested Table 인덱스가 생성됩니다. 테스트를 위해 아래와 같이 테이블을 생성하겠습니다. -- 1 CREATE OR REPLACE TYPE tnt_number FORCE IS TABLE OF NUMBER; / DROP TABLE t1 PURGE; CREATE TABLE t1 (c1 NUMBER, c2 tnt_number) NESTED TABLE c2 STORE AS t1_c2; INSERT INTO t1 VALUES (1, tnt_number (1, 2)); COMMIT; 아래는 t1 테이블을 조회하는 쿼리의 실행 계획입니다. 스칼라 서브쿼리와 유사한 형태로 SYS_FK0000084463N00002$ 인..