IT/Oracle(67)
-
오라클 enq: RO - fast object reuse 락(ㅇ)
enq: RO - fast object reuse 락은 Oracle 데이터베이스에서 테이블을 DROP, TRUNCATE하거나 특정 작업으로 인해 오브젝트의 공간을 재사용하려고 할 때 발생하는 대기 이벤트입니다. 이 락은 주로 DDL 작업이나 세션 간 충돌과 관련됩니다.원인 분석RO - fast object reuse 락이 발생하는 이유는 다음과 같습니다1. 동시에 DML/DDL 충돌 • 특정 테이블에서 DROP, TRUNCATE, 또는 DML 작업이 동시에 수행되는 경우 락이 발생합니다. • 예를 들어, 한 세션이 테이블을 TRUNCATE 하려고 시도하고, 다른 세션이 해당 테이블에 접근 중인 경우입니다.2. 테이블을 사용하는 세션이 열려 있는 경우 • TRUNCATE나 DROP 같은 작업은 테이블..
2025.02.23 -
GROUP BY를 사용 시 성능과 효율성 향상 방안
GROUP BY를 사용할 때 성능과 효율성을 높이기 위해 고려할 수 있는 주요 팁과 힌트는 다음과 같습니다1. 인덱스 사용 • GROUP BY에서 사용하는 컬럼이 인덱스로 설정되어 있으면 성능이 크게 향상됩니다. • 예를 들어, GROUP BY column1을 자주 사용하는 경우 해당 컬럼에 인덱스를 추가합니다:CREATE INDEX idx_column1 ON table_name (column1);2. WHERE 조건 추가 • GROUP BY 전에 데이터를 줄이기 위해 WHERE 조건을 사용하세요. 이렇게 하면 처리할 데이터량을 줄여 성능이 좋아집니다.SELECT column1, COUNT(*)FROM table_nameWHERE column2 = 'value'GROUP BY column1;3. H..
2025.02.22 -
오라클 인덱스 없는 테이블에 빠른 데이터 저장 방법
인덱스가 없는 테이블에 데이터를 빠르게 삽입하는 방법은 테이블 구조와 데이터 삽입 방식에 따라 달라질 수 있습니다. 다음은 일반적으로 적용할 수 있는 성능 최적화 방법들입니다1. Direct-Path Insert 사용 • Direct-Path Insert는 데이터를 테이블의 기존 데이터 영역이 아닌 새로운 데이터 블록에 직접 기록합니다. • 이를 통해 REDO/UNDO 로그를 최소화하고 삽입 속도를 크게 향상시킬 수 있습니다.INSERT /*+ APPEND */ INTO 테이블명SELECT ...FROM ... • 특징 - 데이터를 데이터 블록에 직접 삽입하여 성능이 크게 향상됩니다. - 데이터가 테이블에 추가되기 때문에 테이블이 NOLOGGING 상태일 경우 REDO 로그를 최소화할..
2025.02.22 -
CONCAT 함수의 인덱스 수행 여부(ㅇ)
CONCAT 함수가 인덱스를 사용할 수 있는지는 데이터베이스 엔진과 쿼리의 구조에 따라 다릅니다.일반적으로, SQL에서 함수(예: CONCAT)를 사용하는 경우, 인덱스를 제대로 사용할 수 없을 가능성이 큽니다. 이유는 함수가 적용된 컬럼 값이 가공된 상태로 처리되기 때문에, 기존 인덱스와 일치하지 않기 때문입니다.(1) 단순 CONCAT가 WHERE 조건에 사용된 경우SELECT * FROM my_tableWHERE CONCAT(col1, col2) = 'value';= • 이 경우, CONCAT(col1, col2)는 함수 기반 처리가 되므로, 일반적인 B-tree 인덱스는 활용되지 않습니다.(2) CONCAT 결과가 SELECT에서만 사용된 경우SELECT CONCAT(col1, col2) AS f..
2025.02.22 -
유형별 락(Lock)
오라클 데이터베이스에서 락(Lock)은 여러 트랜잭션이 동일한 데이터에 접근할 때 일관성을 유지하고 데이터 무결성을 보호하기 위한 중요한 메커니즘입니다. 락의 유형을 아래와 같이 정리할 수 있습니다.DML(Data Manipulation Language) 락DML 문장이 실행될 때 자동으로 적용되는 락으로, 데이터 무결성을 보장합니다.Row-level Lock (TX, ROW) • 개별 행(Row)에 대한 락 • SELECT FOR UPDATE 문을 사용하면 명시적으로 설정 가능. • 하나의 행을 여러 사용자가 동시에 수정하지 못하도록 함.Table-level Lock (TM) • 테이블 전체에 대한 락 • 삽입, 수정, 삭제 연산 시 자동으로 설정됨. • 특정 트랜잭션이 테이블을 독점적으로 ..
2025.02.20 -
DBMS_JOB 모니터링
DBMS_JOB을 모니터링하는 방법은 여러 가지가 있으며, 주로 DBA_JOBS 또는 USER_JOBS 뷰를 조회하여 작업 상태를 확인할 수 있습니다. 다음은 주요 모니터링 방법입니다.1. 현재 실행 중인 작업 확인SELECT job, what, last_date, next_date, broken, failuresFROM dba_jobsORDER BY next_date;• LAST_DATE: 마지막으로 실행된 시간• NEXT_DATE: 다음 실행 예정 시간• BROKEN: Y이면 중단된 작업• FAILURES: 연속 실패 횟수2. 특정 JOB의 상태 확인SELECT job, what, last_date, next_date, failures, brokenFROM dba_jobsWHERE job = ;• J..
2025.02.19