2012-03-23 1 views
0

Oracle 11.2 데이터베이스에 테이블이 있습니다. table1의 특정 셀이 1의 값으로 업데이트되고 table2의 기존 행 수가> 0 인 경우 원격 서버에서 실행 파일을 실행하는 데이터베이스를 원합니다. 가능한 많은 경험이 없습니다. 데이터베이스에서 - 이것을 달성하기 위해 가능한가요?초보자가 Oracle Scheduler를 사용하여 이벤트 기반 작업 시작

  1. Oracle Scheduler를 사용하여 작업을 작성하십시오. 작업은 즉시 실행되며 원격 서버에서 외부 실행 프로그램을 실행하는 데 사용됩니다. 작업이 존재하지만 아래 5 단계까지는 실행되지 않습니다 (가능합니까?). http://docs.oracle.com/cd/E11882_01/server.112/e17120/schedadmin001.htm#BAJHIDDC

  2. UPDATE 문에서 실행되는 테이블의 열에 DML 트리거를 연결하십시오. http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#CIHEHBEB

  3. 트리거는 다음과 같은 비즈니스 로직을 수행하는 PL/SQL 서브 프로그램는 PL/SQL 서브 프로그램에서 http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#CIHEGACF

  4. 를 호출 있습니다 : 표에서 특정 셀 1에 해당, 그리고 만약의 경우 수의 테이블 2의 행이 0보다 큰 경우 5 단계로 진행하고, 그렇지 않으면 중지 (종료, 종료)합니다. 작업/스케줄러가이 기능을 제공하게되어 있지 않은 경우

  5. 는, 1 단계

에서 작업을 실행하거나, 같은 일을 달성하기위한 또 다른 방법은 무엇입니까? 즉, 데이터베이스 테이블을 변경하면 외부 작업이 트리거됩니다.

UPDATE 1 :

내가 그냥 매개 변수 event_condition를 사용 DBMS_SCHEDULER.CREATE_JOB 오라클 스케줄러를 사용하여 위의 단계 1-5를 구현할 수 있는지 궁금해? 위의 코드는 응용 프로그램이 항목에 대한 재고 수준이 낮은 임계 값 하락하는 스케줄러를 신호 할 때 시작하는 작업을 만듭니다

BEGIN 
DBMS_SCHEDULER.CREATE_JOB (
    job_name   => 'process_lowinv_j1', 
    program_name  => 'process_lowinv_p1', 
    event_condition  => 'tab.user_data.event_type = ''LOW_INVENTORY''', 
    queue_spec   => 'inv_events_q, inv_agent1', 
    enabled    => TRUE, 
    comments   => 'Start an inventory replenishment job'); 
END; 

: 여기

http://docs.oracle.com/cd/E11882_01/server.112/e25494/scheduse005.htm#CHDIAJEB

은 위의 링크에서 예제 수평.

위의 코드를 수정하여 의도 한 단계를 수행 할 수 있습니까? 예를 들어 위의 2 ~ 4 단계를 event_condition을 대신 사용하여 제거 할 수 있습니까? 그렇다면, 예를 들어, queue_spec을 설정하는 방법과 같이 어떻게 생겼을까요?

답변

2

원격 서버에 Oracle Scheduler Agent를 설치한다고 가정하면 DBMS_SCHEDULER은 원격 시스템에서 실행 파일을 실행할 수 있습니다. DML 트리거를 Oracle Advanced Queue (AQ)에 메시지 대기열에 넣고 해당 대기열을 사용하여 event-based job (DML 트리거는 트랜잭션을 커밋하거나 롤백 할 수 없지만 DBMS_SCHEDULER 작업을 실행하면 암시 적으로 커밋을 발행하여 DML 트리거를 실행할 수 없습니다. 직무를 직접 실행). 이벤트 실행 작업과 원격 실행 파일을 실행하는 작업은 job chain의 일부가됩니다.

+0

감사합니다 저스틴, 네, 원격 서버에 에이전트를 배치 할 계획이었습니다. 위의 설명을 따르는 지 확실하지 않습니다. 프로세스가 상당히 복잡해 보입니다. 위의 업데이트 1을 참조하십시오.이 업데이트를 사용하면 더 쉽게 수행 할 수 있습니다. – ggkmath

관련 문제