Oracle en el trabajo (trabajo cron)

La tarea de Oracle (tareas programadas) implementado por la función en el paquete DBMS_JOB.
trabajo de conocimientos teóricos puede referirse https://blog.csdn.net/apextrace/article/details/7767506

A, DBMS_JOB relacionado con el conocimiento

1. Crear trabajo: 
   variable de jobno Número; 
   DBMS_JOB.SUBMIT (: jobno, el número --job 
                   'your_procedure;', - procedimiento para ejecutar, almacena ';' no se puede omitir 
                   next_date, - tiempo de ejecución siguiente 
                   'intervalo' - cada intervalo de tiempo, intervalo en días 
                   ); 
   - el sistema asignará automáticamente un número de tarea jobno. 
2, elimine el trabajo: DBMS_JOB.REMOVE (jobno); 
3, para llevar a cabo trabajo de las operaciones de modificación: dbms_job.what (jobno, qué); --lo que es una nueva operación (procedimientos almacenados) 
4, modificar el tiempo de ejecución siguiente: DBMS_JOB .next_date (jobno, next_date); 
. 5, modificado intervalo: dbms_job.interval (jobno, intervalo El); 
. 6, empezar de empleo: dbms_job.run (jobno); 
. 7, trabajo parada: dbms_job.broken (jobno, roto, nextdate) ; -broken Un booleano

En segundo lugar, los parámetros de inicialización job_queue_processes

1, Oracle job_queue_process pueden ser representados por el número de trabajo concurrente, cuando el valor job_queue_process de 0 indica que el trabajo de Oracle están detenido. 
2, Vista Parámetro job_queue_processes 
   Método a 
         job_queue_process Mostrar Parámetro; 
   Método dos: 
         SELECT *, en que a partir del nombre del parámetro V $ = ''; job_queue_processes 
. 3, job_queue_processes modificar los parámetros 
   alter job_queue_processes de referencia del sistema = 10;

Tres, user_jobs estructura de la tabla

El campo (columna) Tipo Descripción 
tareas Número de trabajo único número de identificación 
varchar2 log_user (30) de la tarea de usuario 
varchar2 PRIV_USER (30), dado el mandato del usuario 
varchar2 schema_user (30) a la tarea de analizar el modo de usuario 
último éxito fecha last_date tiempo para ejecutar la tarea 
varchar2 last_sec (8) como HH24: ss horas de formato de fecha last_date, minutos y segundos: mm 
this_date hora de inicio de la fecha se está ejecutando la tarea, si la tarea no se está ejecutando era nula 
this_sec VARCHAR2 (8) como HH24: mm : ss formato de fecha this_date horas, minutos y segundos 
de tiempo para ejecutar la tarea en una fecha regular de next_date

En cuarto lugar, el ejemplo

1, se crea en la Tabla plsql: 
Crear tabla T ( 
 ID VARCHAR2 (30), 
 (30) de nombres VARCHAR2 
); 

2 crear un procedimiento almacenado en plsql son,: 
crear o sustituir Procedimiento proce_t IS 
la comienzan 
 INSERT INTO T (ID, Nombre) valores ('. 1' , TO_CHAR (SYSDATE, 'AAAA-mM-dD HH24: mi: SS')); 
 el commit; 
proce_t Fin; 
/ 

3, crear una tarea de trabajo (1 minuto ejecuta una vez.): 
ejecutar SQL> después: 
jobno variables número; 
el inicio 
 DBMS_JOB.SUBMIT (: jobno, 'proce_t;', SYSDATE, 'SYSDATE + 24/1/60'); 
 el cometer; 
Fin; 
/ 
sumisión Consejo: 
Procedimiento PL / SQL terminado con éxito 
jobno 
------ --- 
25 
 
4, la tarea de seguimiento (véase la cola de tareas):
SQL> al seleccionar el trabajo, next_date, next_sec, fracasos, Broken desde user_jobs;
  
 fracasos rotos next_date next_sec el empleo 
---------- ----------- ---------------- -------- - ------ 
 25 14/09/2012 10:59:46 1 0 n- la 
tarea de descripción ha sido creada con éxito. 
Ejecutar SELECT * FROM t; ver los resultados de las tareas programadas. Se puede observar que el momento de las tareas se llevan a cabo normalmente. 

5, se detiene la tarea del temporizador 
(1) Ver tarea de números de petición de tiempo. 
SQL> SELECT de empleo, next_date, next_sec, fracasos, Los Rotos de user_jobs; 
  
 empleo next_date fracasos next_sec The Broken 
---------- ----------- --------- ------- ---------- ------ 
 25 0 n a 2012/9/14 11:01:48 1. 
(2) para detener que se ha iniciado una tarea de temporizador: 
el inicio 
 DBMS_JOB .broken (25, true, sysdate); 
 el cometer; 
Fin; 
/ 
expresan trabajo parada para la tarea 25.  
si (3) Ver programado tarea se ha detenido correctamente

Después de la pantalla se realiza como sigue:
Procedimiento PL / SQL terminado con éxito 
si (3) Ver programado tarea ha comenzado
SQL> SELECT de empleo, next_date, next_sec, fracasos, Los Rotos de user_jobs; 
  
 empleo next_date fracasos next_sec The Broken 
---------- ----------- --------- ------- ---------- ------ 
 25 0 4000/1/1 00:00:00 Y 
valor Broken de Y, una tarea de temporización se detuvo. 

6, el momento de iniciar la tarea 
(1) se detiene la tarea temporizador Vista 
SQL> SELECT de empleo, next_date, next_sec, fracasos, Los Rotos de user_jobs; 
  
 empleo next_date fracasos next_sec The Broken 
---------- -------- --- ---------------- ---------- ------ 
 25 0 4000/1/1 00:00:00 Y 
valor Roto ay, una tarea de tiempo se ha detenido. 
(2) la tarea de temporización comienza 
el inicio 
 dbms_job.run (25); 
 el commit; 
Fin; 
/ 
SQL> SELECT de empleo, next_date, next_sec, fracasos, Los Rotos de user_jobs;
   
 empleo next_date fracasos next_sec The Broken 
---------- ----------- --------- ------- ---------- ------ 
 25 0 09/14/2012 11:06:17. 1 n- 
roto es n, una temporización para iniciar la tarea con éxito. 

7, ver el número de procesos 
mostrar job_queue_processes de parámetros; 
debe ser mayor que 0, de lo contrario ejecutar el siguiente comando para cambiar: 
el Sistema ALTER job_queue_processes el SET = 10; 

8, a continuación, crear una tarea (realizado una vez cada 5 minutos): 
variable de Número El jobno; 
la comienzan 
 DBMS_JOB.SUBMIT ( : jobno, 'proce_t;', sysdate, 'sysdate + 24/1/12'); --interval en un unidades diarias de 
 la cometen; 
Fin; 
/ 

9, la implementación de. 
seleccionar un trabajo, next_date, next_sec, fracasos , roto desde user_jobs ; 
resultar:
SQL> select trabajo, next_date, next_sec, fracasos, roto desde user_jobs; 
   
 Trabajo next_date fracasos next_sec The Broken
---------- ----------- ---------------- ---------- --- --- 
 26 2012/9/14 1 11:12:08 0 n 
 25 2012/9/14 1 11:07:18 0 n

V. Resumen

关于job运行时间
(1)每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/(24*60)
(2)每天定时执行
例如:每天的凌晨1点执行
Interval => TRUNC(sysdate) + 1 +1/(24)
(3)每周定时执行
例如:每周一凌晨1点执行
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24
(4)每月定时执行
例如:每月1日凌晨1点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
(5)每季度定时执行
例如每季度的第一天凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
(6)每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
(7)每年定时执行
例如:每年1月1日凌晨1点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'), 12)+1/24

job的运行频率设置
(1)每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1) + (8*60+10)/24*60
(2)Toad中提供的:
每天:trunc(sysdate+1)
每周:trunc(sysdate+7)
每月:trunc(sysdate+30)
每个星期日:next_day(trunc(sysdate),'星期日')
每天6点:trunc(sysdate+1)+6/24
半个小时:sysdate+30/(24*60)
每个小时的第15分钟运行,比如:8:15,9:15,10:15…:trunc(sysdate,'hh')+(60+15)/(24*60) 

  

转自:https://www.jb51.net/article/92575.htm

Supongo que te gusta

Origin www.cnblogs.com/shujk/p/12541676.html
Recomendado
Clasificación