Planificador de tareas programadas

10/03/2016

A partir de la version 11.50 de Informix se pueden programar tareas para que se ejecuten tanto en momentos puntuales en el tiempo como a intervalos pre-configurados. Estas tareas ejecutan commandos sql, procedimientos almacenados y rutinas (java y c) definidas por el usuario, y se denominan tasks y sensors.

La diferencia entre un sensor y una tarea es que el sensor es capaz de almacenar datos en tablas para posterior análisis.

Ejemplos:

Podemos crear una tarea para lanzar ckeckpoints cada 2 minutos entre las 8 AM y las 7 PM los lunes, miércoles y viernes de cada semana:

INSERT INTO ph_task

( tk_name,

tk_description,

tk_type,

tk_group,

tk_execute,

tk_start_time,

tk_stop_time,

tk_frequency,

tk_Monday,

tk_Tuesday,

tk_Wednesday,

tk_Thursday,

tk_Friday,

tk_Saturday,

tk_Sunday)

VALUES

( «Example Checkpoint»,

«Example to do a checkpoint every 2 minutes.»,

«TASK»,

«EXAMPLES»,

«EXECUTE FUNCTION admin(‘checkpoint’)»,

DATETIME(08:00:00) HOUR TO SECOND,

DATETIME(19:00:00) HOUR TO SECOND,

INTERVAL ( 2 ) MINUTE TO MINUTE,

‘t’,

‘f’,

‘t’,

‘f’,

‘t’,

‘f’,

‘f’);

 

Para guardar información de consumos de memoria cada 30 minutos en la tabla mon_memory_system y eliminar registros de fecha anterior a los últimos 30 días, podemos crear el siguiente sensor:

 INSERT INTO ph_task

(

tk_name,

tk_group,

tk_description,

tk_result_table,

tk_create,

tk_execute,

tk_stop_time,

tk_start_time,

tk_frequency,

tk_delete

)

VALUES

(«mon_memory_system»,

«MEMORY»,

«Server memory consumption»,

«mon_memory_system»,

«create table mon_memory_system (ID integer, class smallint, size int8,

used int8, free int8 )»,

«insert into mon_memory_system select $DATA_SEQ_ID, seg_class, seg_size,

seg_blkused, seg_blkfree FROM sysmaster:sysseglst»,

NULL,

NULL,

INTERVAL ( 30 ) MINUTE TO MINUTE,

INTERVAL ( 30 ) DAY TO DAY

);