「Oracle12c」CREATE_JOB文でスケジュール ジョブを作成する方法

環境
Oracle Database 12c Standard Edition Release 12.2.0.1.0 – 64bit Production

構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DBMS_SCHEDULER.CREATE_JOB
(
job_name => ジョブの名前,
job_type => ジョブタイプ
job_action => ストアド・プロシージャ名
start_date => ジョブの開始日時,
end_date => ジョブの終了日時,
repeat_interval => ジョブの実行間隔
enabled => TRUE(有効)/FALSE(無効)
);
DBMS_SCHEDULER.CREATE_JOB ( job_name => ジョブの名前, job_type => ジョブタイプ job_action => ストアド・プロシージャ名 start_date => ジョブの開始日時, end_date => ジョブの終了日時, repeat_interval => ジョブの実行間隔 enabled => TRUE(有効)/FALSE(無効) );
DBMS_SCHEDULER.CREATE_JOB
(
  job_name           =>  ジョブの名前,
  job_type           =>  ジョブタイプ
  job_action         =>  ストアド・プロシージャ名
  start_date         =>  ジョブの開始日時,
  end_date           =>  ジョブの終了日時,
  repeat_interval    =>  ジョブの実行間隔
  enabled            =>  TRUE(有効)/FALSE(無効)
);

ジョブタイプについて説明

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PLSQL_BLOCK         PL/SQLコード
STORED_PROCEDURE ストアドプロシージャ
EXECUTABLE         外部プログラム
CHAIN             チェーン
PLSQL_BLOCK         PL/SQLコード STORED_PROCEDURE ストアドプロシージャ EXECUTABLE         外部プログラム CHAIN             チェーン
PLSQL_BLOCK	        PL/SQLコード
STORED_PROCEDURE	       ストアドプロシージャ
EXECUTABLE	        外部プログラム
CHAIN	            チェーン

使用例
「2022/11/21」0時から3時間ごとに「PROCCFT」を実行するジョブ「JOB_PROCCFT」を作成します。

1.ジョブの権限を割り当てます

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
GRANT CREATE JOB TO CFTUSER;
GRANT MANAGE SCHEDULER TO CFTUSER;
GRANT CREATE JOB TO CFTUSER; GRANT MANAGE SCHEDULER TO CFTUSER;
GRANT CREATE JOB TO CFTUSER;
GRANT MANAGE SCHEDULER TO CFTUSER;

2.スケジュール ジョブの構文を定義します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
BEGIN
DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'JOB_PROCCFT',
job_type => 'STORED_PROCEDURE',
job_action => 'CFTUSER.PROCCFT',
start_date => TO_DATE('2022/11/21 00:00:00','yyyy/mm/dd hh24:mi:ss'),
repeat_interval => 'FREQ=HOURLY;INTERVAL=3',
enabled => TRUE
);
END;
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'JOB_PROCCFT', job_type => 'STORED_PROCEDURE', job_action => 'CFTUSER.PROCCFT', start_date => TO_DATE('2022/11/21 00:00:00','yyyy/mm/dd hh24:mi:ss'), repeat_interval => 'FREQ=HOURLY;INTERVAL=3', enabled => TRUE ); END;
BEGIN

DBMS_SCHEDULER.CREATE_JOB
(
  job_name           =>  'JOB_PROCCFT',
  job_type           =>  'STORED_PROCEDURE',
  job_action         =>  'CFTUSER.PROCCFT',
  start_date         =>  TO_DATE('2022/11/21 00:00:00','yyyy/mm/dd hh24:mi:ss'),
  repeat_interval    =>  'FREQ=HOURLY;INTERVAL=3',
  enabled            =>  TRUE
);

END;

 

Oracle 12c

Posted by arkgame