スケジューラジョブ実行

(8.0.26)
https://qiita.com/magaming/items/6a941ef1c2f673de8ae7


drop procedure proc1;

delimiter //
create procedure proc1(in p1 int)
begin
  start transaction;
  update tab1 set col1 = p1;
  commit;
end
//
delimiter ;

 

select @@event_scheduler;


create event event1
on schedule every 1 day starts '2022-03-19 00:00:00'
do
call proc1(11);

select * from information_schema.EVENTS;
show events\G

 

現在の日付と時間を指定するには、CURRENT_TIMESTAMP を使用できます。 
このような場合、イベントは、作成されるとすぐに機能します。

select * from tab1;
show create event event1;

alter event event1
on schedule every 1 day starts current_timestamp;

alter event event1
on schedule every 1 day starts '2022-03-19 00:00:00';

select * from tab1;
show create event event1;


drop event event1;

 

(19c)

https://docs.oracle.com/cd/F19136_01/admin/scheduling-jobs-with-oracle-scheduler.html#GUID-1D534D91-17B2-4405-8D66-800FE824669A


create or replace procedure proc1(p1 in integer) as
ret integer;
begin
 update tab1 set col1 = p1;
 commit;
exception when others then
 raise;
end;
/


BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name           =>  'JOB1',
   job_type           =>  'STORED_PROCEDURE',
   job_action         =>  'TEST.PROC1',
   number_of_arguments => 1,
   start_date         =>  TO_DATE('2001/01/01 00:00:00','YYYY/MM/DD HH24:MI:SS'),
   repeat_interval    =>  'FREQ=DAILY;INTERVAL=1',
   end_date           =>  TO_DATE('2030/12/31 23:59:59','YYYY/MM/DD HH24:MI:SS'),
   auto_drop          =>   FALSE,
   comments           =>  'JOB1');
END;
/

BEGIN
  DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
     job_name           =>'JOB1',
     argument_position  =>1 ,
     argument_value     =>'11' );
END;
/

alter session set nls_timestamp_tz_format = 'YYYY/MM/DD HH24:MI:SS';
select * from DBA_SCHEDULER_JOBS where job_name = 'JOB1';
select * from ALL_SCHEDULER_JOB_ARGS where job_name = 'JOB1';

 

select * from tab1;


BEGIN
  DBMS_SCHEDULER.RUN_JOB(
    JOB_NAME            => 'JOB1',
    USE_CURRENT_SESSION => TRUE);
END;
/

select * from tab1;


BEGIN
  DBMS_SCHEDULER.DROP_JOB ('JOB1');
END;
/

 

(14)
OS:CentOS8

https://www.pgadmin.org/download/pgadmin-4-rpm/
https://www.pgadmin.org/docs/pgadmin4/6.7/pgagent.html
https://qiita.com/mkyz08/items/86ddc3e909b55eb16fd9

 

--1. pgAdmin4のインストール

rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
dnf install -y pgadmin4
/usr/pgadmin4/bin/setup-web.sh

 

--2. pgAgentのインストール

dnf install -y pgagent_14


※postgresデータベースに接続して実行
CREATE EXTENSION pgagent;
CREATE LANGUAGE plpgsql;


--3. 動作確認用プロシージャ作成
※testデータベースに接続して実行

create or replace procedure proc1(p1 in integer)
language plpgsql
as $$
declare
begin
  update tab1 set col1 = p1;
exception when others then
  raise;
end;
$$;

 


--4. パスワードファイル作成

vim ~/.pgpass
#ホスト名:ポート番号:データベース名:ユーザ名:パスワード
192.168.137.70:5432:postgres:postgres:postgres
192.168.137.70:5432:test:postgres:postgres

chmod 600 ~/.pgpass

--5. pgagent起動
/usr/bin/pgagent_14 hostaddr=192.168.137.70 dbname=postgres user=postgres

※dnfでインストールされるsystemctlで起動した場合、ジョブ動作確認できなかった

--6. ジョブ登録
※pgAdmin4で実行
http://192.168.137.70/pgadmin4

※ジョブ登録時のホストエージェント名は下記SQLで取得した値をセットする
IPアドレス指定では動作しないため注意

SELECT jagstation FROM pgagent.pga_jobagent;

call proc1(11);

ジョブを右クリックしてRun nowで実行可能


--7. ジョブ実行結果確認
※postgresデータベースに接続して実行

select * from pgagent.pga_schedule;
select * from pgagent.pga_job;

select * from pgagent.pga_joblog;
select * from pgagent.pga_jobsteplog;


※testデータベースに接続して実行

select * from tab1;

 

 

(2019)

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-start-job-transact-sql?view=sql-server-ver15


use test ;
GO

create or alter procedure proc1(@p1 integer) as
begin
  begin try
    begin transaction;
    update tab1 set col1 = @p1;
    commit;
  end try
  begin catch
    throw;
  end catch
end;
GO

 

use msdb ;
GO  
EXEC dbo.sp_add_job
    @job_name = N'job1' ;
GO

EXEC dbo.sp_add_jobstep
    @job_name = N'job1',
    @step_name = N'job1-1',
    @subsystem = N'TSQL',
    @command = N'test.dbo.proc1 11',
    @retry_attempts = 3,
    @retry_interval = 3 ;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'schedule1',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_date = 20010101,
    @active_end_date = 20301231,
    @active_start_time = 000000,
    @active_end_time = 235959
    ;
GO

EXEC dbo.sp_attach_schedule
   @job_name = N'job1',
   @schedule_name = N'schedule1';
GO

EXEC dbo.sp_add_jobserver
    @job_name = N'job1';
GO


select * from dbo.sysjobs
select * from dbo.sysschedules
select * from dbo.sysjobschedules
select * from dbo.sysjobservers


select * from test.dbo.tab1;

EXEC dbo.sp_start_job
    @job_name = N'job1';
GO


select * from test.dbo.tab1;

EXEC dbo.sp_delete_jobserver
    @job_name = N'job1',
    @server_name = N'MMM063';
GO

EXEC dbo.sp_detach_schedule
   @job_name = N'job1',
   @schedule_name = N'schedule1';
GO

EXEC dbo.sp_delete_schedule
    @schedule_name = N'schedule1';
GO

EXEC dbo.sp_delete_job
    @job_name = N'job1' ;
GO