PL/SQL 성능 최적화 전략
테이블 조인 및 파싱 순서 최적화
효율적인 테이블 순서 선택
오라클의 규칙 기반 옵티마이저(RBO)는 FROM 절을 오른쪽에서 왼쪽으로 처리하므로, 가장 작은 테이블을 마지막에 배치하는 것이 유리하다. 현재는 대부분 비용 기반 옵티마이저(CBO)를 사용하지만, 좋은 습관은 유지하는 것이 바람직하다.
-- 효율적인 접근: 소형 테이블 먼저 처리
SELECT COUNT(*) FROM a ...
7월 7일 01:33에 게시됨
Oracle 트리거 완벽 가이드: 정의, 문법, 활용 사례
트리거(Trigger)란?
데이터베이스 트리거는 특정 테이블에서 INSERT, UPDATE, DELETE와 같은 DML(데이터 조작어) 이벤트가 발생할 때 자동으로 실행되는 저장 프로시저의 일종입니다.
일반 프로시저와 달리 사용자가 직접 호출하지 않고, 정의된 이벤트가 발생하면 시스템이 자동으로 실행합니다.
주로 데이터 무결성 유지, 비즈니스 규칙 강제, 감사 로그 기록 등에 사 ...
7월 6일 20:43에 게시됨
Oracle 데이터 변경 이벤트 구독 방법
Java에서 Oracle 데이터베이스의 변경 사항을 구독하는 다양한 방법들이 있습니다. 아래는 주요 기술들에 대한 개요와 예제입니다.
Oracle Advanced Queuing (AQ) 사용하기
Oracle AQ는 메시지 큐 서비스로, 데이터 변경 이벤트를 게시하고 구독할 수 있습니다.
// AQ 예제 코드
import oracle.jdbc.aq.AQDequeueOption;
import oracle.jdbc.aq.AQMessage;
Connection ...
7월 6일 16:37에 게시됨
Oracle에서 TiDB로의 간단한 오프라인 데이터 마이그레이션 절차
환경 및 목적
최근 진행 중인 Oracle → TiDB 전환 프로젝트에서, 애플리케이션 호환성 테스트를 위해 테스트 환경의 오라클 스키마 구조와 데이터를 TiDB로 동기화해야 했다. 전체 데이터 부하가 크지 않아서 효율적인 방법을 우선 고려하였으며, CSV 기반의 내보내기/불러오기 방식을 선택했다.
전체 프로세스 개요
테이블 스키마 변환
원본 데이터 내보내기 (CSV) ...
7월 1일 22:07에 게시됨
Oracle 10g/11g 데이터 수입/导出 방법 정리
Oracle 10g/11g 기본 데이터 수입/导出 명령어:
exp 사용자/비밀번호@서비스명 file=저장경로.dmp buffer=8192 filesize=10000m feedback=1000<br>
imp 사용자/비밀번호@서비스명 file=파일경로.dmp full=y
一般来说, 특정 사용자 계정하의 데이터를 10g에서는 완전히 수출/수입할 수 있습니다. 또한 특정 테이블, 특정 함수 등을 지정하여 수출할 수 있지만, 자 ...
6월 18일 22:53에 게시됨
오라클 데이터베이스의 응급 잠금 해제를 위한 OS 프로세스 관리 전략
고착된 세션의 운영체제 레벨 제거 필요성
데이터베이스 관리 중 특정 세션이 'KILLED' 상태로 표시됨에도 불구하고 시스템 자원을 계속 점유하고 방출하지 않는 경우가 발생합니다. 이 경우 재시작보다는 위험성이 낮은 대안으로, 데이터베이스 내부 명령이 실패할 때 운영체제 (OS) 차원에서 해당 스레드나 프로세스를 직접 단절하는 방법이 적용됩니다.
1. 잠긴 객체 ...
6월 18일 17:44에 게시됨
JPA EntityManager로 네이티브 SQL 조회 결과 엔티티에 매핑하기
JPA(Java Persistence API)의 EntityManager를 사용하여 데이터베이스에 네이티브 SQL 쿼리를 실행하고, 그 결과를 자바 엔티티 객체로 매핑하는 방법을 다룹니다. 특히, 이 문서는 Oracle 데이터베이스 환경을 기준으로 합니다.
네이티브 SQL 조회 결과를 엔티티 객체로 변환하는 핵심은 Query query = entityManager.createNativeQuery(sql, YourEntity.class); 메서 ...
6월 11일 02:26에 게시됨
Oracle에서 imp를 사용해 dmp 파일 임포트하기
Oracle 데이터베이스에 dmp 확장자 파일을 로드할 때는 일반적으로 impdp 또는 imp 유틸리티를 활용한다. impdp가 환경상 호환되지 않거나 사용이 어려운 경우, 전통적인 imp 도구를 대신 사용하는 것이 적합하다. 다음은 imp 명령어 기반의 데이터 임포트 절차이다.
1. 사용자 생성 (옵션)
필요 시 새로운 데이터베이스 사용자를 생성할 수 있다. 아래 문법으로 계정을 ...
6월 9일 00:30에 게시됨
Oracle IN 절 1000개 초과 문제 해결 방법
개요:
문제 상황:
예제 쿼리:
select * from member where id in (1, 2, 3, ...)
**오류 메시지:**Cause: java.sql.SQLException: ORA-01795: 목록의 최대 표현식 수는 1000입니다
**설명:**Oracle 데이터베이스에서 IN (...) 절을 사용할 때 괄호 안의 값이 1000개를 초과하면 오류가 발생합니다.
해결 방안:
이 문제를 해결하기 위한 세 가지 방법을 소개합니다 ...
6월 3일 22:59에 게시됨
Oracle 데이터베이스를 무너뜨린 하나의 불량 SQL
서론
오후에 개발팀에서 특정 SQL의 실행 시간이 1초에서 16초로 급격히 증가해 시스템 운영에 영향을 미쳤다는 피드백을 받았습니다. 분석 및 최적화 후 SQL의 성능이 회복되고, 데이터베이스 전체 성능이 99.99% 향상되었습니다.
문제 진단
데이터베이스 환경은 Oracle 19C RAC CDB 구조로 구성되어 있으며, 6개의 PDB가 운영 중이었습니다. 문제 발생 시각은 2025년 11 ...
5월 29일 05:33에 게시됨