기본 콘텐츠로 건너뛰기

라벨이 오라클인 게시물 표시

Job Number 조회

Oracle에서 현재 실행 중이거나 과거에 실행된 Job Number를 조회하려면 사용 중인 Scheduler 유형에 따라 SQL 쿼리가 달라집니다. 1. DBMS_SCHEDULER 사용 시 Oracle 10g 이상에서 사용하는 DBMS_SCHEDULER 기반의 Job을 조회하려면 다음 SQL을 실행 SELECT job_name, job_action, job_type, enabled, state, job_class, job_creator, schedule_name, last_start_date, next_run_date FROM dba_scheduler_jobs ORDER BY job_name; job_name: Job의 이름 job_action: 실행될 작업 enabled: 실행 가능 여부 (TRUE / FALSE) state: 현재 상태 (SCHEDULED, RUNNING, DISABLED 등) last_start_date: 마지막 실행 시간 next_run_date: 다음 실행 예정 시간 특정 Job의 상세 정보 조회 SELECT * FROM dba_scheduler_job_run_details WHERE job_name = 'JOB_NAME' ;   2. DBMS_JOB 사용 시 Oracle 10g 이전의 DBMS_JOB을 사용하는 경우, Job Number는 job 컬럼에 저장됩니다. SELECT job, what, schema_user, last_date, next_date, broken, failures, interval FROM dba_jobs ORDER BY job; job: Job Number what: 실행되는 PL/SQL 코드 schema_user: Job을 실행하는 사용자 last_date: 마지막 실행 시간 next_date: 다음 실행 예정 시간 broken: Job이 실패 후 멈췄는지 여부 (Y / N) failures: 실패 횟수 interval: 실행 주기 특정 Job의 상태 확인 SELECT * FROM dba_...

CONCAT 함수의 인덱스 수행 여부

  CONCAT 함수가 인덱스를 사용할 수 있는지는 데이터베이스 엔진과 쿼리의 구조에 따라 다릅니다. 일반적으로, SQL에서 함수(예: CONCAT)를 사용하는 경우, 인덱스를 제대로 사용할 수 없을 가능성이 큽니다. 이유는 함수가 적용된 컬럼 값이 가공된 상태로 처리되기 때문에, 기존 인덱스와 일치하지 않기 때문입니다. (1)  단순 CONCAT가 WHERE 조건에 사용된 경우 SELECT * FROM my_table WHERE CONCAT(col1, col2) = 'value' ;=  • 이 경우, CONCAT(col1, col2)는 함수 기반 처리가 되므로, 일반적인 B-tree 인덱스는 활용되지 않습니다. (2) CONCAT 결과가 SELECT에서만 사용된 경우 SELECT CONCAT(col1, col2) AS full_name FROM my_table WHERE col1 = 'value' ;  •  여기서는 WHERE col1 = 'value' 조건이 인덱스를 활용할 수 있습니다.  •  CONCAT은 단순히 결과 반환용으로 사용되므로 인덱스에 영향을 주지 않습니다. 함수를 사용하면서도 인덱스를 활용하려면 함수와 인덱스를 함께 사용하려면 다음 중 하나를 고려해야 합니다: (1)  함수 기반 인덱스 (Function-Based Index) 생성  • 데이터베이스에 함수 기반 인덱스를 생성하면 가능합니다.  • 예를 들어 이 인덱스를 생성한 후, 아래 쿼리에서 인덱스를 활용할 수 있습니다: CREATE INDEX idx_concat ON my_table (CONCAT(col1, col2)); SELECT * FROM my_table WHERE CONCAT(col1, col2) = 'value' ;  •  지원 여부   -  Oracle, PostgreSQL, MySQL(8.0 이상) : 함수 기반 인덱스 지원 ...