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

);