Computación - TemporizadoresenOracle

 
Vista:

TemporizadoresenOracle

Publicado por Veronica Donoso (1 intervención) el 25/01/2005 13:13:21
Necesito activar un trigger o un procedimiento almacenado en Oracle solamente 1 vez al día. Como hacerlo de forma automática?? Existe algún evento que active, por ejemplo, un procedimiento, todos los días a la misma hora?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Activar un procedimiento almacenado en Oracle de forma automática

Publicado por Alejandro (562 intervenciones) el 22/09/2023 00:30:07
Verónica, en Oracle, puedes programar la ejecución de un procedimiento almacenado o un trigger para que se active automáticamente una vez al día en un horario específico utilizando la funcionalidad de "job scheduling" o planificación de trabajos. Aquí hay dos enfoques comunes para lograrlo:

1. Oracle DBMS_SCHEDULER:

Oracle proporciona el paquete `DBMS_SCHEDULER` para programar tareas en la base de datos. Puedes crear un job (trabajo) que ejecute tu procedimiento almacenado o trigger y programarlo para que se ejecute a una hora específica todos los días.

Aquí tienes un ejemplo de cómo crear un job que ejecute un procedimiento almacenado a las 3:00 PM todos los días:

1
2
3
4
5
6
7
8
9
10
11
BEGIN
  DBMS_SCHEDULER.create_job (
    job_name        => 'MI_TRABAJO_DIARIO',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN MI_PROCEDIMIENTO_ALMACENADO; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=DAILY; BYHOUR=15; BYMINUTE=0; BYSECOND=0',
    enabled         => TRUE
  );
END;
/

En este ejemplo, `'MI_PROCEDIMIENTO_ALMACENADO'` debe reemplazarse con el nombre de tu procedimiento almacenado.

2. Oracle DBMS_JOB (método más antiguo):

También puedes utilizar el paquete `DBMS_JOB` para programar trabajos, aunque se considera menos flexible que `DBMS_SCHEDULER`. Aquí hay un ejemplo similar para ejecutar un procedimiento almacenado todos los días a las 3:00 PM:

1
2
3
4
5
6
7
8
9
10
11
BEGIN
  DBMS_JOB.submit (
    job       => :job_number,
    what      => 'BEGIN MI_PROCEDIMIENTO_ALMACENADO; END;',
    next_date => TO_DATE('yyyy-mm-dd hh24:mi:ss', 'YYYY-MM-DD HH24:MI:SS'),
    interval  => 'TRUNC(SYSDATE+1) + 15/24',
    no_parse  => TRUE
  );
  COMMIT;
END;
/

Asegúrate de reemplazar `'MI_PROCEDIMIENTO_ALMACENADO'` con el nombre de tu procedimiento almacenado y ajustar `'yyyy-mm-dd hh24:mi:ss'` para que coincida con la fecha y hora a la que deseas programar la ejecución.

Ambos enfoques te permitirán programar la ejecución de un procedimiento almacenado o trigger en Oracle a una hora específica todos los días. Puedes elegir el método que mejor se adapte a tus necesidades y preferencias, aunque `DBMS_SCHEDULER` se considera la opción más moderna y flexible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar