Oracle 정시 작업 Job 상세 설명

4939 단어 Oracle
Oracle 정시 작업 Job: 작업 대기 열 을 배정 하고 관리 하 는 데 사용 되 며 작업 을 사용 하면 Oracle 데이터 베 이 스 를 정기 적 으로 특정한 작업 을 수행 할 수 있 습 니 다.그리고 Oracle 이 다시 시작 하면 Job 은 다시 시작 하지 않 아 도 계속 실 행 됩 니 다.
필드:
   (1) 배경 업무 통계, 예 를 들 어 타이머 임무 업무 장면 을 실현 하면 매일 주문 수 를 통계 한다.
   (2) 전신 이동 보고서 통계, 예 를 들 어 피크, 통화 목록
   (3) Oracle 대 Oracle, SQLServer to Oracle 등 대량 데이터 동기 화
   (4) 전기 가격 시스템
     (5)  요금 계산 시스템 
    ……
   많은 응용 장면 에서 응용 프로그램의 집행 은 시간 제한 이 있다. 예 를 들 어 사이트 의 배경 통계, 평가 시스템 은 보통 방 문 량 과 데이터 부하 가 비교적 적은 시간 대 를 선택 하여 집행 한다.응용 프로그램의 실행 시간 을 제한 하 는 데 는 운영 체제 급, 예 를 들 어 Windows 의 정시 작업 과 Linux / Unix 의 crontab 등 여러 가지 실현 방식 이 있 습 니 다.플랫폼 응용 급, 예 를 들 어 JDK 의 Timer 와 각종 프로 그래 밍 프레임 워 크, 데이터 베이스 등 시스템 에서 제공 하 는 정시 작업 API.관계 데이터베이스 정시 작업 은 특히 Oracle 과 SQLServer 를 예 로 들 수 있다.
 1. 작업 작업 작업 작업 만 들 기
declare
  job_id number;
begin
  sys.dbms_job.submit(job_id, 'JOB_Batch_P_Test;', sysdate, 'sysdate+1/1440'); --         
  sys.dbms_output.put_line(job_id); --  job Id
end;

2. Job 실행 상황 보기
--    
--  dba  
select * from dba_jobs; 
--  dba  
--     job
select * from dba_jobs_running; 

select * from all_jobs;  

select * from user_jobs;

--           job         job id ,what          ,next_date      ,interval    


3. 작업 시작 Job
begin
   dbms_job.run(101);--    Job  select * from user_jobs;  job   
end;

4. 작업 Job 삭제
begin
  dbms_job.broken(101,true);
  dbms_job.remove(101); --101   ID
end;
-- broken         job   ,     job     kill 。

Job 관련 보기 조회 설명
--       


  ( )                                       

JOB                        NUMBER                  

LOG_USER           VARCHAR2(30)           

PRIV_USER          VARCHAR2(30)             

SCHEMA_USER        VARCHAR2(30)                 

LAST_DATE          DATE                         

LAST_SEC           VARCHAR2(8)      HH24:MM:SS   last_date     ,    

THIS_DATE          DATE                       ,          null

THIS_SEC           VARCHAR2(8)      HH24:MM:SS   this_date     ,    

NEXT_DATE          DATE                        

NEXT_SEC           VARCHAR2(8)      HH24:MM:SS   next_date     ,    

TOTAL_TIME         NUMBER                      ,    

BROKEN             VARCHAR2(1)         ,Y      ,      

INTERVAL           VARCHAR2(200)                 

FAILURES           NUMBER                  

WHAT               VARCHAR2(2000)       PL/SQL 

CURRENT_SESSION_LABELRAW          MLSLABEL       Oracle   

CLEARANCE_HI          RAW MLSLABEL            Oracle    

CLEARANCE_LO          RAW              MLSLABEL        Oracle    

NLS_ENV               VARCHAR2(2000)        NLS    

MISC_ENV              RAW(32)                       



Job 문법 설명 만 들 기
declare

    variable job number;

begin

    sys.dbms_job.submit(job => :job,

    what => 'prc_name;',                          --          

    next_date => to_date('22-11-201309:09:41', 'dd-mm-yyyy hh24:mi:ss'),

    interval =>'sysdate+1/86400');            --  86400  ,      prc_name    

    commit;

end;

  dbms_job.submit    ,         :job、what、next_date、interval no_parse。

 

dbms_job.submit(

job       OUT binary_ineger,

What      IN varchar2,

next_date IN  date,

interval  IN varchar2,

no_parse  IN booean:=FALSE)



job       , submit()     binary_ineger,             。          ,   user_jobs    job 。

what        PL/SQL   ,       。

next_date             。

interval             。

no_parse                        ——true,   false。   PL/SQL                 , FALSE   PL/SQL           。

 

정시 표현 식
--      
    'SYSDATE + 1'

--       
    'SYSDATE + 1/24'

-- 10                       
    'SYSDATE + 10/(60*24)'

-- 30                         
    'SYSDATE + 30/(60*24*60)'

--                        
    'SYSDATE + 7'

--                     
    'TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,1))) + 23/24'

--  1 1                       
    'TRUNC(LAST_DAY(TO_DATE(EXTRACT(YEAR FROM SYSDATE)||'12'||'01','YYYY-MM-DD'))+1)'

--    12                        
    'TRUNC(SYSDATE + 1)'

--    8 30                   
    'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'

--      12                  
    'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

--         12         
    'TRUNC(LAST_DAY(SYSDATE ) + 1)'

--        23            
    'TRUNC (LAST_DAY (SYSDATE)) + 23 / 24'

--           11   
    'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

--        6 10       
    'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6*60+10)/(24*60)'

종결 어: Oracle 정시 작업 Job 은 일반적으로 저장 과정 과 결합 하여 사용 합 니 다.

좋은 웹페이지 즐겨찾기