>  기사  >  데이터 베이스  >  오라클 예약 저장 프로시저

오라클 예약 저장 프로시저

WBOY
WBOY원래의
2023-05-07 22:33:383013검색

Oracle은 매우 인기 있는 관계형 데이터베이스입니다. 비즈니스에서는 자동화된 작업을 완료하고 운영 비용을 절감하기 위해 일부 저장 프로시저를 정기적으로 실행해야 하는 경우가 많습니다. 이 기사에서는 Oracle을 사용하여 저장 프로시저를 정기적으로 실행하는 방법을 소개합니다.

1. 오라클의 예약된 저장 프로시저 실행의 기본 개념
오라클에서 예약된 저장 프로시저의 실행은 시스템이 특정 시간 간격 내에 미리 작성된 일부 저장 프로시저를 자동으로 실행하는 것을 의미합니다. 이 방법은 정기적인 데이터 보관, 백업, 정리 및 기타 작업에 자주 사용됩니다.

2. Oracle의 예약된 저장 프로시저 실행 구현 방법
Oracle의 예약된 저장 프로시저 실행은 Oracle의 스케줄러를 통해 구현할 수 있습니다. 스케줄러를 사용하면 특정 시점이나 간격으로 작업을 쉽게 시작하고 시간이 다 되면 종료할 수 있습니다.

  1. 작업 생성
    Oracle에서는 PL/SQL, PL/SQL Developer, Toad 및 기타 도구를 통해 작업을 생성할 수 있습니다.
    예를 들어 저장 프로시저 "mystoredprocedure" 실행을 포함하여 "myjob"이라는 작업을 생성합니다.

begin
dbms_scheduler.create_job
(job_name=>'myjob',
job_type=>'STORED_PROCEDURE',
job_action => ;'mystoredprocedure');
end;

  1. 예약 실행
    작업을 생성한 후 언제 실행해야 합니까? Oracle 스케줄러는 다음 두 가지 방법으로 작업 실행 시간을 제어할 수 있습니다.

(1) 시간 기반 실행
Oracle에서는 dbms_scheduler 패키지를 사용하여 일정을 생성할 수 있습니다.

BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE (

      schedule_name          => 'weekends',  
      start_date             => SYSTIMESTAMP,  
      repeat_interval        => 'FREQ=WEEKLY;BYDAY=SAT,SUN;BYHOUR=0;BYMINUTE=0',  
      end_date               => NULL,  
      comments               => 'Weekend schedule - Saturday and Sunday every week at midnight.'  

);
END;

이 코드 조각은 매일 주말 자정에 실행되는 일정을 생성할 수 있습니다. 물론 특정 비즈니스 요구에 따라 다양한 일정을 만들 수 있습니다.

myjob이 다음 시간에 실행되려면 주말 일정 논리가 myjob에 적용되어야 합니다.

BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE

(  
  name                      => 'myjob',  
  attribute                 => 'repeat_interval',  
  value                     => 'weekends'  
);  

END;

이 시간 기반 예약 방법을 사용하면 실행 주기가 작업의 비즈니스 요구에 따라 개발자가 매우 고정하고 설정합니다.

(2) 이벤트 기반 실행
저장 프로시저의 예약된 실행을 구현하는 또 다른 방법은 이벤트 기반입니다. 예를 들어 데이터 테이블의 필드가 변경되면 저장 프로시저의 실행을 구동해야 합니다. Oracle에서는 다음 코드를 통해 이벤트 기반 예약 일정을 생성할 수 있습니다.

BEGIN
DBMS_SCHEDULER.CREATE_JOB

(  
  job_name             => 'job_name',  
  job_type             => 'PLSQL_BLOCK',  
  job_action           => 'BEGIN my_procedure(:my_param); END;',  
  start_date           => SYSTIMESTAMP,  
  event_condition      => 'tab.col3 = ''Y''',  --这里可以选择需要监控的事件类型和字段  
  queue_spec           => 'queue_specification',  
  auto_drop            => FALSE,  
  enabled              => TRUE  
);  

END;

  1. Execute Stored Procedure
    위의 예에서 "myjob" 작업의 역할은 다음과 같습니다. 저장 프로시저 "mystoredprocedure"를 실행합니다. 여기서는 스케줄러 자체가 저장 프로시저를 실행하지 않고 작업 실행 관리만 담당한다는 것을 알 수 있습니다.

저장 프로시저를 성공적으로 예약하려면 저장 프로시저를 생성하고 이를 작업과 연결해야 합니다. 여기서는 예를 들어 "mystoredprocedure"라는 저장 프로시저를 만듭니다.

CREATE OR REPLACE PROCEDURE "mystoredprocedure"
IS
BEGIN

INSERT INTO employees_audit  
  (employee_id,  
   salary,  
   entry_date)  
SELECT employee_id,  
       salary,  
       SYSDATE  
  FROM employees
  WHERE hire_date > SYSDATE - 1;  
       

END mystoredprocedure;

이 예는 단순히 새 데이터 정보를 데이터베이스에 저장하는 것입니다. Employees_audit 테이블을 통해 개발자는 특정 요구 사항에 따라 자신만의 저장 프로시저를 작성할 수 있습니다.

저장 프로시저를 정기적으로 실행하는 프로그램은 백그라운드에서 실행됩니다. 개발자가 설정한 시간 예약 정책에 따라 지정된 시간에 작업이 시작된 후 mystoredprocedure 저장 프로시저가 실행됩니다.

3. 요약
오라클의 저장 프로시저 예약 실행은 주기적 작업 처리를 위한 효율적인 솔루션입니다. 이 프로세스는 오라클의 스케줄러를 사용하여 쉽게 구현할 수 있습니다. 이 기사에 소개된 구현 방법을 통해 개발자는 실행해야 하는 실행 시간, 빈도 및 저장 프로시저를 유연하게 구성할 수 있습니다. 이를 통해 업무 처리 시간을 대폭 단축하고 처리 효율성을 높일 수 있습니다.

위 내용은 오라클 예약 저장 프로시저의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.