sql - software - ¿Cómo crear un trabajo programado "singleton" en Oracle?
patrones de diseño para desarrollo web (4)
De la guía de administradores de Oracle 10g:
"El paquete DBMS_JOB ha sido reemplazado por el paquete DBMS_SCHEDULER . En particular, si está administrando trabajos para administrar la carga del sistema, debería considerar deshabilitar DBMS_JOB al revocar el privilegio de ejecución del paquete para los usuarios".
DBMS_SCHEDULER es la forma recomendada por Oracle para hacer esto ahora. Una ventaja que tiene es que puede administrar sus trabajos a través de Enterprise Manager / Grid Control si está usando esto.
Probablemente sea solo el vocabulario que me falta para descubrir cómo hacer esto:
Un trabajo programado para ejecutarse regularmente cada 5 minutos, sin embargo, mantener un seguimiento de que nunca hay dos instancias de ejecución al mismo tiempo, es decir, la siguiente instancia se pospondría o saltaría si la anterior dura más de 5 minutos.
¿Cuál es la forma más fácil / más elegante de lograr esto?
Otra ventaja que dbms_scheduler tiene sobre dbms_job es que puede controlar mejor la carga, el uso de recursos y que también puede ejecutar trabajos externos a la base de datos.
hth, Ronald.
Si por alguna razón dbms_job o dbms_scheduler no funcionan para usted, también puede usar DBMS_APPLICATION_INFO.SET_APPLICATION_INFO
para establecer el nombre del módulo de su trabajo y puede consultar v $ session para ver cuántas sesiones están actualmente ejecutando ese módulo.
¿Qué tipo de trabajo es este? ¿Un procedimiento almacenado PL / SQL?
DBMS_JOB
se ocupa de eso. Solo úsalo.