Это можно сделать с помощью функции административного планировщика задач вместо cron. Вот пример сценария.
#!/bin/sh
db2set DB2_ATS_ENABLE=YES
db2stop
db2start
db2 -v "drop db db1"
db2 -v "create db db1"
db2 -v "connect to db1"
db2 -v "CREATE TABLESPACE SYSTOOLSPACE IN IBMCATGROUP MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 4"
db2 -v "create table s1.t4 (c1 int)"
db2 -v "create table s1.t5 (c1 int)"
db2 -v "insert into s1.t4 values (1)"
db2 -v "create procedure s1.copy_t4_t5() language SQL begin insert into s1.t5 select * from s1.t4; end"
db2 -v "CALL SYSPROC.ADMIN_TASK_ADD ('ATS1', CURRENT_TIMESTAMP, NULL, NULL, '0,10,20,30,40,50 * * * *', 'S1', 'COPY_T4_T5',NULL , NULL, NULL )"
date
Он создаст задачу с именем ATS1 и будет вызывать процедуру s1.copy_t4_t5 каждые 10 минут, например, 01:00, 01:20, 01:30. , Вам может потребоваться запустить ниже после выполнения сценария:
db2 -v "connect to db1"
Затем, через некоторое время, запустите ниже, чтобы увидеть, есть ли в таблице t5 строка, как и ожидалось:
db2 -v "select * from s1.t5"
В вашем случае 5-й параметр будет заменен на '0 23 1 * *' . Он представляет «минутный час day_of_month month weekday», поэтому он будет вызываться каждый 1-й день месяца в 23:00.
Для получения дополнительной информации о том, как изменить существующую задачу, удалить задачу, просмотреть статус, см. По адресу:
Подпрограммы и представления планировщика административных задач
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/c0061223.html
Также вот одна из хороших статей об этом:
[DB2 LUW] Пример использования планировщика административных задач ADMIN_TASK_ADD и ADMIN_TASK_REMOVE
https://www.ibm.com/support/pages/node/1140388?lang=en
Надеюсь, это поможет.