Oracleでjobを使用する例

2097 ワード

サンプルソース:
--      
create table T_TEST_JOB
(
  ID        LONG,
  TEST_DATE TIMESTAMP(6)
)
tablespace GBIAPS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
);

--      
create sequence SEQ_TEST_JOB
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 10;  

--        
create or replace procedure P_TEST_JOB as 
begin 
   insert into t_test_job(id,test_date) values (SEQ_TEST_JOB.NEXTVAL,sysdate);
end; 
/ 

--      SQL Plus   
--   job 
variable JOB_TESTJOB number; 
begin 
    dbms_job.submit(:JOB_TESTJOB,'P_TEST_JOB;',sysdate,'sysdate + 1 / (24*60)'); --           
end; 
/ 

--   job
begin 
    dbms_job.run(:JOB_TESTJOB); 
end; 
/

--   job
begin 
    dbms_job.remove(:JOB_TESTJOB); 
end; 
/

--   JOB
begin 
    dbms_job.remove(:JOB_TESTJOB); 
end; 
/ 

--   jobs
select * from DBA_JOBS_RUNNING;
select * from DBA_JOBS;

--     
select * from t_test_job;

--     
delete from t_test_job;


 
job_queue_プロセスパラメータの説明:
sqlplusでshow parameter jobを実行します.パラメータ値の表示
パラメータ値の変更:alter system set job_queue_processes=10;
 
a、Oracle jobプロセスの場合、調整プロセス(メインプロセス)および奴隷プロセス(サブプロセス)が含まれます.b、job_queue_プロセスの値範囲は0~1000で、job_によって作成できるjobプロセスは合計何個ですか?queue_プロセスパラメータで決定します.c、job_queue_プロセスが1より大きい場合、jobを並列に実行する場合、少なくとも1つは協調プロセスである.合計はjobを超えませんqueue_プロセスの値.d、job_queue_プロセスパラメータの値はDBMS_JOBとDBMS_SCHEDULER共有.e、job_queue_プロセスパラメータは、この値が0に設定されている場合、任意の方法で作成されたjobは実行されません.f、ゼロ以外のjob_queue_processesは、jobサブプロセスの数が使用可能なリソース、リソース構成方法、および現在実行されているjobの数に依存して自動的に調整されます.g、さらにScheduler jobs方式はscheduler属性MAX_に制限されているJOB_SLAVE_PROSESSの設定.h、DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEでmax_を設定job_slave_processes