oracle job 응용 프로그램
8177 단어 Oacle
1.
begin
sys.dbms_job.submit(job => :job,
what => 'job_stat_cooperate;',
next_date => to_date('01-07-2008 05:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'TRUNC(SYSDATE+30)+5/24');
commit;
end;
/
매달 1 일 오전 5 시 에 실 행 된 JOB 는 지난주 에 쓰 려 고 시 도 했 는데 이번 주 에 와 서 실행 효 과 를 보고 OK. 기록 했다.
TRUNC (SYSDATE + 30) + 5 / 24 는 순환 시간 을 표시 합 니 다. 현재 시간 에 30 일의 날 짜 를 더 하고 구체 적 인 시간 을 더 합 니 다.
2.
Oracle 타이머 (Job) 시간 대별 쓰기 집합
원작 자: 블 로그 가든 이 휘황찬란 하 다. 원문: 링크
DBA 에 있어 데이터베이스 Job 은 더 이상 익숙 할 수 없습니다. 데이터 베 이 스 를 정기 적 으로 자동 으로 실행 하거나 데이터 베 이 스 를 백업 하거나 데이터 추출 을 하거나 데이터 베 이 스 를 최적화 시 켜 야 하기 때 문 입 니 다. 색인 재 구축 등 작업 을 포함 합 니 다.그러나 Oracle 타이머 Job 시간의 처리 에 있어 변화무쌍 합 니 다. 오늘 저 는 비교적 자주 사용 하 는 문법 을 다음 과 같이 모 았 습 니 다.
정리 하기 전에 먼저 Job 의 인 자 를 일일이 설명 하 세 요.
job 매개 변 수 는 Submit () 과정 에서 돌아 오 는 binaryineger。이 값 은 유일한 작업 을 표시 하 는 데 사 용 됩 니 다.
what 인 자 는 실 행 될 PL / SQL 코드 블록 입 니 다.
next_date 매개 변 수 는 언제 이 작업 을 실행 할 지 알려 줍 니 다.Job 을 쓸 때 이 값 을 지정 하지 않 아 도 됩 니 다.
interval 매개 변 수 는 언제 이 작업 이 다시 실 행 될 것 입 니까?
그 중에서 Interval 이라는 값 은 Job 이 언제, 다시 실 행 될 지 를 결정 하 는 관건 입 니 다.
예 를 들 어 저장 프로 세 스 pdosomethings, 서로 다른 시간 간격 으로 실행 되 어야 합 니 다.
declare
2 jobno number;
3begin
4 dbms_job.submit(
5 jobno,
6 'p_dosomething;', --what
7 to_date('20090101020000','yyyy-mm-dd hh24:mi:ss'),--next_date,
8 'Interval '--interval,
9 );
10 commit;
11end;
1、 분당 실행
Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)
2、 매일 정시 에 집행 하 다.
매일 새벽 2 시 에 실행
Interval => TRUNC(sysdate) + 1 +2 / (24)
3、 매주 정시 에 집행 하 다.
매주 새벽 2 시 에 실행
Interval = > TRUNC (next day (sysdate, 2) + 2 / 24 -- 월요일, 일주일 다음 날
4、 매달 정시 에 집행 하 다
매월 1 일 새벽 2 시 에 실행
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
5、 매 분기 정시 집행
예 를 들 어 매 분기 첫날 새벽 2 시 에 집행 된다.
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
6、 반년 마다 정시 에 집행 하 다.
매년 7 월 1 일과 1 월 1 일 새벽 2 시
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
7、 매년 정시 에 집행 하 다.
매년 1 월 1 일 새벽 2 시 에 집행 한다.
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24
물론 위 에 나열 되 어 있 는 것 은 여러 가지 측면 을 고려 할 수 없 지만 조금 만 변화 하면 수많은 예 를 파생 시 킬 수 있 습 니 다. 똑똑 한 당신 은 반드시 그 럴 것 입 니 다. 저 는 잔소리 가 많 지 않 습 니 다.
3. Oacle 데이터 베 이 스 는 정기 적 으로 스 크 립 트 를 자동 으로 실행 하거나 데이터 베 이 스 를 백업 하거나 데이터 추출 을 하거나 데이터 베 이 스 를 최적화 시 켜 야 합 니 다. 색인 재 구축 등 작업 을 포함 하여 함수 dbms 가 필요 합 니 다.job. submit, Oracle 타이머 Job 시간 처리 완료.dbms 사용job. submit 이 함 수 는 두 가지 만 고려 해 야 합 니 다. 특정한 임 무 를 배정 하고 임 무 를 수행 하 는 시간 을 맞 춰 야 합 니 다.하지만 가장 중요 하고 까다 로 운 일 입 니 다. 임 무 를 수행 할 시간 을 정 하 는 것 이 라 고 생각 합 니 다.시간 이 확정 되면 다른 일 은 하기 쉽다.다음은 함수 dbmsjob. submit 사용 방법:
dbms_job.submit( job out binary_integer,
what in archar2,
next_date in date,
interval in varchar2,
no_parse in boolean)
dbms_job.submit( job out binary_integer, what in archar2, next_date in date, interval in varchar2, no_parse in boolean)
그 중: ● job: 출력 변 수 는 이 작업 이 작업 대기 열 에 있 는 번호 입 니 다.● what: 실 행 된 작업 의 이름과 입력 매개 변수;●next_date: 작업 수행 시간;● interval: 작업 수행 시간 간격.그 중에서 Interval 이라는 값 은 Job 이 언제, 다시 실 행 될 지 결정 하 는 관건 입 니 다.interval 이 null 로 설정 되 었 을 때 이 job 실행 이 끝나 면 대기 열 에서 삭 제 됩 니 다.만약 우리 가 이 job 를 주기 적 으로 실행 해 야 한다 면 'sysdate + m' 로 표시 해 야 합 니 다.실행 시간의 간격 을 어떻게 잘 정 하 는 지 는 함수 TRUNC 를 파악 해 야 합 니 다.1. TRUNC (for dates) TRUNC 함수 가 지정 한 요 소 를 위 한 날짜 값 입 니 다.구체 적 인 문법 형식 은 다음 과 같다. TRUNC (date [, fmt]) 에서 날짜 값 fmt 날짜 형식 입 니 다. 이 날 짜 는 지정 한 요소 형식 으로 절 제 됩 니 다.무시 하면 가장 가 까 운 날짜 에서 이 함수 의 사용 상황 을 캡 처 합 니 다: 1) 해마다 select TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'yyyy') from dual ----------------------------------------------------------------------------------- TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mm') from dual ---------------------------------------------------------------------------------- TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'dd') from dual -------------------------------------------------------------------------------------- TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'hh') from dual ------------------------------------------------------------------------------------------ TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mi') from dual ---------------------------------------------------------------------------------------- 1) 、 분당 실행 Interval = > TRUNC (sysdate, 'mi') + 1 / (24 * 60) 2), 매일 정시 실행 예: 매일 새벽 2 시 에 Interval = > TRUNC (sysdate) + 1 + 2 / (24) 3), 매주 정시 실행 예: 매주 1 새벽 2 시 에 Interval = > TRUNC (next day (sysdate, 2) + 2 / 24 -- 월요일, 일주일 의 다음날 4),매월 정시 집행 예: 매월 1 일 새벽 2 시 에 Interval = > TRUNC (LAST DAY (SYSDATE) + 1 + 2 / 24 5), 분기 별 정시 집행 예 를 들 어 분기 별 첫날 새벽 2 시 에 Interval = > TRUNC (ADD MONTHS (SYSDATE, 3), 'Q') + 2 / 24 6), 반기 별 정시 집행 예: 매년 7 월 1 일과 1 월 1 일 새벽 2 시 Interval = > ADDMONTHS (trunc (sysdate, yyy), 6) + 2 / 24 7), 매년 정시 집행 예: 매년 1 월 1 일 새벽 2 시 에 Interval = > ADDMONTHS (trunc (sysdate, 'yyy'), 12) + 2 / 24 3. 인 스 턴 스 는 간단 한 예 를 제공 합 니 다. 주로 시간 간격 마다 표 에 기록 을 삽입 하 는 것 을 완성 합 니 다. 1) 테스트 테이블 생 성
SQL> create table test(id number,cur_time date);
。
---- sequence
CREATE SEQUENCE test_sequence
INCREMENT BY 1 --
START WITH 1 -- 1
NOMAXVALUE --
NOCYCLE -- ,
CACHE 10 ;
SQL> create table test(id number,cur_time date); 。 ---- sequence CREATE SEQUENCE test_sequence INCREMENT BY 1 -- START WITH 1 -- 1 NOMAXVALUE -- NOCYCLE -- , CACHE 10 ;
-- 트리거 코드 는:
create or replace trigger tri_test_id
before insert on test --test
for each row
declare
nextid number;
begin
IF :new.id IS NULLor :new.id=0 THEN --id
select test_sequence.nextval --SEQ_ID
into nextid
from sys.dual;
:new.id:=nextid;
end if;
end tri_test_id;
2) 사용자 정의 프로 세 스 만 들 기
SQL> create or replace procedure proc_test as
2 begin
3 insert into test(cur_time) values(sysdate);
4 end;
5 /
프로 세 스 가 생 성 되 었 습 니 다. 3) JOB 만 들 기
SQL> declare job1 number;
begin
dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');-- 1440 , test
end;
SQL> declare job1 number; begin dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');-- 1440 , test end;
PL/SQL JOB 가 성공 적 으로 완성 되 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.