ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

114 DBMS_SCHEDULER

DBMS_SCHEDULERパッケージは、任意のPL/SQLプログラムからコール可能なスケジューリング機能およびプロシージャのコレクションを提供します。


関連項目:

DBMS_SCHEDULERの使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。


データ構造

DBMS_SCHEDULERパッケージは、OBJECTタイプおよびTABLEタイプを定義します。

オブジェクト・タイプ

表タイプ


JOBARGオブジェクト・タイプ

このタイプは、JOBおよびJOBATTRオブジェクト・タイプで使用されます。一連のジョブ引数のうちの1つのジョブ引数を表します。

構文

TYPE jobarg IS OBJECT (
   arg_position         NUMBER,
   arg_text_value       VARCHAR2(4000),
   arg_anydata_value    ANYDATA,
   arg_operation        VARCHAR2(5);

属性

表114-1 JOBARGオブジェクト・タイプの属性

属性 説明

arg_position

引数の位置。

arg_text_value

データ型がVARCHAR2の場合の引数の値。

arg_anydata_value

データ型がAnyDataの場合の引数の値。

arg_operation

操作のタイプ:

  • SET

  • RESET


JOBARGコンストラクタ・ファンクション

このコンストラクタ・ファンクションは、ジョブ引数を構成します。また、このファンクションはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

テキスト値でジョブ引数を構成する場合

constructor function jobarg (
   arg_position        IN POSITIVEN,
   arg_value           IN VARCHAR2)
   RETURN SELF AS RESULT;

AnyData値でジョブ引数を構成する場合

constructor function jobarg (
   arg_position        IN POSITIVEN,
   arg_value           IN ANYDATA)
   RETURN SELF AS RESULT;

NULL値でジョブ引数を構成する場合

constructor function jobarg (
   arg_position        IN POSITIVEN,
   arg_reset           IN BOOLEAN DEFAULT FALSE)
   RETURN SELF AS RESULT;

パラメータ

表114-2 JOBARGコンストラクタ・ファンクションのパラメータ

パラメータ 説明

arg_position

引数の位置。

arg_value

引数の値。

arg_reset

arg_resetTRUEに設定すると、その位置にある引数がリセットされます。

arg_resetFALSE(デフォルト)に設定すると、引数がNULL値で作成されます。



JOBARG_ARRAY表タイプ

構文

TYPE jobarg_array IS TABLE OF jobarg;

JOBオブジェクト・タイプ

このタイプは、CREATE_JOBSプロシージャで使用され、一連のジョブのうちの1つのジョブを表します。

構文

TYPE job IS OBJECT (
   job_name             VARCHAR2(100),
   job_class            VARCHAR2(32),
   job_style            VARCHAR2(11),
   job_template         VARCHAR2(100)
   program_action       VARCHAR2(4000),
   action_type          VARCHAR2(20),
   schedule_name        VARCHAR2(65),
   repeat_interval      VARCHAR2(4000),
   schedule_limit       INTERVAL DAY(2) TO SECOND(6),
   start_date           TIMESTAMP(6) WITH TIME ZONE,
   end_date             TIMESTAMP(6) WITH TIME ZONE,
   event_condition      VARCHAR2(4000),
   queue_spec           VARCHAR2(100),
   number_of_args       NUMBER,
   arguments            JOBARG_ARRAY,
   priority             NUMBER,
   job_weight           NUMBER,
   max_run_duration     INTERVAL DAY(2) TO SECOND(6),
   max_runs             NUMBER,
   max_failures         NUMBER,
   logging_level        NUMBER,
   restartable          VARCHAR2(5),
   stop_on_window_exit  VARCHAR2(5),
   raise_events         NUMBER,
   comments             VARCHAR2(240),
   auto_drop            VARCHAR2(5),
   enabled              VARCHAR2(5),
   follow_default_tz    VARCHAR2(5),
   parallel_instances   VARCHAR2(5),
   aq_job               VARCHAR2(5),
   instance_id          NUMBER);

オブジェクト属性

表114-3に、JOBオブジェクト・タイプの属性を示します。 これらの属性の詳細は、「SET_ATTRIBUTEプロシージャ」を参照してください。

表114-3 JOBオブジェクト・タイプの属性

属性 説明

job_name

ジョブの名前。

job_class

ジョブ・クラスの名前。

job_style

ジョブのスタイル:

  • REGULAR

  • LIGHTWEIGHT

job_template

プログラムの名前。 「CREATE_JOBプロシージャ」program_name引数と同じです。

program_action

ジョブのインライン・アクション。 「CREATE_JOBプロシージャ」job_action引数と同じです。

action_type

ジョブ・アクションのタイプ。 「CREATE_JOBプロシージャ」job_type引数と同じです。 job_templateを設定してprogram_actionおよびaction_typeをNULLのままにするか、job_templateをNULLのままにする場合は、program_actionおよびaction_typeを設定する必要があります。

schedule_name

ジョブの実行時刻を指定するスケジュールの名前。

repeat_interval

時間ベースのインライン・スケジュール。

schedule_limit

ジョブの実行がスケジュールされていた実行時刻からの経過時間。

start_date

ジョブの開始日時。

end_date

ジョブの終了日時。

event_condition

イベント・ベースのジョブのイベント条件。

queue_spec

イベント・ベースのジョブのキューの仕様。

number_of_args

ジョブ引数の数。

arguments

ジョブ引数の配列。

priority

ジョブの優先順位。

job_weight

ジョブの重み。

max_run_duration

ジョブの最大実行時間。

max_runs

ジョブが完了とマークされるまでの最大実行数。

max_failures

ジョブが中断とマークされるまでに許容される最大失敗数。

logging_level

ジョブのロギング・レベル。

restartable

ジョブが再開可能である(TRUE)か、再開不可能である(FALSE)かを示します。

stop_on_window_exit

ジョブが実行されているウィンドウが終了した場合にジョブを停止する(TRUE)か、停止しない(FALSE)かを示します。 「SET_ATTRIBUTEプロシージャ」で説明されているstop_on_window_closeジョブ属性と同じです。

raise_events

イベントが発生する状態変更。

comments

ジョブに関するコメント。

auto_drop

TRUE(デフォルト)は、ジョブの完了後にジョブが削除されることを示します。

enabled

ジョブの作成直後にジョブを有効にする(TRUE)か、有効にしない(FALSE)かを示します。

follow_default_tz

TRUEの場合で、ジョブstart_dateがNULLのときは、default_timezone Scheduler属性を変更すると、このジョブが新しいタイムゾーンで実行されるように、Schedulerによってジョブの次の実行日時が再計算されます。たとえば、ジョブが古いタイムゾーンの午前2時に実行するように設定されていた場合は、新しいタイムゾーンの午前2時で実行されるようになります。(ジョブstart_dateがNULLでない場合、ジョブの実行日時のタイムゾーンは、常にstart_dateのタイムゾーンで指定されます。)FALSEの場合、default_timezone Scheduler属性が変更されても、ジョブの次の開始日時は再計算されません。古いタイムゾーンが新しいタイムゾーンより3時間早い場合、古いタイムゾーンの午前2時で実行されるようにスケジュールされているジョブは、新しいタイムゾーンの午前5時に実行されます。

parallel_instances

イベント・ベースのジョブ専用。TRUEの場合は、指定したイベントが発生すると、そのイベントを処理する新しい軽量ジョブがSchedulerによって作成されます。したがって、同じイベント・ベースのジョブの複数のインスタンスをパラレルで実行できます。

aq_job

内部使用専用。

instance_id

ジョブを実行する必要があるインスタンスのインスタンスID。


JOBコンストラクタ・ファンクション

このコンストラクタ・ファンクションは、ジョブ・オブジェクトを構成します。

構文

constructor function job (
   job_name            IN VARCHAR2,
   job_style           IN VARCHAR2 DEFAULT 'REGULAR',
   job_template        IN VARCHAR2 DEFAULT NULL,
   program_action      IN VARCHAR2 DEFAULT NULL,
   action_type         IN VARCHAR2 DEFAULT NULL,
   schedule_name       IN VARCHAR2 DEFAULT NULL,
   repeat_interval     IN VARCHAR2 DEFAULT NULL,
   event_condition     IN VARCHAR2 DEFAULT NULL,
   queue_spec          IN VARCHAR2 DEFAULT NULL,
   start_date          IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   end_date            IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   number_of_args      IN NATURAL DEFAULT NULL,
   arguments           IN JOBARG_ARRAY DEFAULT NULL,
   job_class           IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
   schedule_limit      IN INTERVAL DAY TO SECOND DEFAULT NULL,
   priority            IN NATURAL DEFAULT NULL,
   job_weight          IN NATURAL DEFAULT NULL,
   max_run_duration    IN INTERVAL DAY TO SECOND DEFAULT NULL,
   max_runs            IN NATURAL DEFAULT NULL,
   max_failures        IN NATURAL DEFAULT NULL,
   logging_level       IN NATURALN DEFAULT 64,
   restartable         IN BOOLEAN DEFAULT FALSE,
   stop_on_window_exit IN BOOLEAN DEFAULT FALSE,
   raise_events        IN NATURAL DEFAULT NULL,
   comments            IN VARCHAR2 DEFAULT NULL,
   auto_drop           IN BOOLEAN DEFAULT TRUE,
   enabled             IN BOOLEAN DEFAULT FALSE,
   follow_default_tz   IN BOOLEAN DEFAULT FALSE,
   parallel_instances  IN BOOLEAN DEFAULT FALSE,
   aq_job              IN BOOLEAN DEFAULT FALSE,
   instance_id         IN NATURAL DEFAULT NULL)
   RETURN SELF AS RESULT;

JOB_ARRAY表タイプ

構文

TYPE job_array IS TABLE OF job;

JOBATTRオブジェクト・タイプ

このタイプは、SET_JOB_ATTRIBUTESプロシージャで使用され、一連のジョブ属性のうちの1つのジョブ属性を表します。

構文

TYPE jobattr IS OBJECT (
   job_name             VARCHAR2(100),
   attr_name            VARCHAR2(30),
   char_value           VARCHAR2(4000),
   char_value2          VARCHAR2(4000),
   args_value           JOBARG_ARRAY,
   num_value            NUMBER,
   timestamp_value      TIMESTAMP(6) WITH TIME ZONE,
   interval_value       INTERVAL DAY(2) TO SECOND(6);

属性

表114-4 JOBATTRオブジェクト・タイプの属性

属性 説明

job_name

ジョブの名前。

attr_name

属性の名前。

char_value

データ型がVARCHAR2の場合の引数の値。

char_value2

2つ目のVARCHAR2属性値。

args_value

データ型がJOBARG配列の場合の引数の値。

num_value

データ型がNUMBERの場合の引数の値。

timestamp_value

データ型がTIMESTAMP WITH TIME ZONEの場合の引数の値。

interval_value

データ型がINTERVAL DAY TO SECONDの場合の引数の値。


JOBATTRコンストラクタ・ファンクション

このコンストラクタ・ファンクションは、ジョブ属性を構成します。また、このプロシージャは、VARCHAR2NUMBERTIMESTAMP WITH TIME ZONEINTERVAL DAY TO SECONDデータ型およびJOBARG型の配列の属性値を作成するためにオーバーロードされています。

構文

constructor function jobattr (
   job_name            IN VARCHAR2,
   attr_name           IN VARCHAR2,
   attr_value          IN VARCHAR2,
   attr_value2         IN VARCHAR2 DEFAULT NULL)
   RETURN SELF AS RESULT;
constructor function jobattr (
   job_name            IN VARCHAR2,
   attr_name           IN VARCHAR2,
   attr_value          IN [NUMBER, BOOLEAN,
                           TIMESTAMP WITH TIME ZONE,
                           INTERVAL DAY TO SECOND, JOBARG_ARRAY])
   RETURN SELF AS RESULT;
constructor function jobattr (
   job_name            IN VARCHAR2,
   attr_name           IN VARCHAR2)
   RETURN SELF AS RESULT;

パラメータ

表114-5 JOBATTRコンストラクタ・ファンクションのパラメータ

パラメータ 説明

job_name

ジョブの名前。

attr_name

引数の名前。

attr_value

引数の値。

attr_value2

ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。 attr_value2引数は、この2つ目の値(オプション)に使用します。



JOBATTR_ARRAY表タイプ

構文

TYPE jobattr_array IS TABLE OF jobattr;

SCHEDULER$_STEP_TYPEオブジェクト・タイプ

このタイプは、チェーン・ステップのリストを初期状態のままで戻すためにRUN_CHAINで使用されます。

構文

TYPE scheduler$_step_type IS OBJECT (
   step_name  VARCHAR2(32),
   step_type  VARCHAR2(32));

属性

表114-6 SCHEDULER$_STEP_TYPEオブジェクト・タイプ

属性 説明

step_name

ステップの名前。

step_type

ステップの状態。



SCHEDULER$_STEP_TYPE_LIST表タイプ

構文

TYPE scheduler$_step_type_list IS TABLE OF scheduler$_step_type;

DBMS_SCHEDULERの使用方法

この項では、次の項目について説明します。


ルールおよび制限

DBMS_SCHEDULERパッケージの使用時には、次のルールが適用されます。


使用上の注意

Schedulerでは、高度なカレンダ構文を使用して、「毎週木曜日と金曜日の午後4時」、「毎月第2水曜日」などの繰返しスケジュールを定義できます。 このカレンダ構文は、多くのパッケージ・サブプログラムのrepeat_interval引数のカレンダ式で使用されます。カレンダ式を評価すると、一連の個別タイムスタンプが戻されます。

カレンダ構文の例は、『Oracle Database管理者ガイド』を参照してください。

カレンダ構文

次のカレンダ構文では、*は0またはそれ以上を意味します。

repeat_interval = regular_schedule | combined_schedule

regular_schedule = frequency_clause
[";" interval_clause] [";" bymonth_clause] [";" byweekno_clause]
[";" byyearday_clause] [";" bydate_clause] [";" bymonthday_clause]
[";" byday_clause] [";" byhour_clause] [";" byminute_clause]
[";" bysecond_clause] [";" bysetpos_clause] [";" include_clause]
[";" exclude_clause] [";" intersect_clause][";" periods_clause]
[";" byperiod_clause]

combined_schedule = schedule_list [";" include_clause]
[";" exclude_clause] [";" intersect_clause]
frequency_clause = "FREQ" "=" ( predefined_frequency | user_defined_frequency )
predefined_frequency = "YEARLY" | "MONTHLY" | "WEEKLY" | "DAILY" |
   "HOURLY" | "MINUTELY" | "SECONDLY"
user_defined_frequency = named_schedule

interval_clause = "INTERVAL" "=" intervalnum
   intervalnum = 1 through 99
bymonth_clause = "BYMONTH" "=" monthlist
   monthlist = monthday ( "," monthday)*
   month = numeric_month | char_month
   numeric_month = 1 | 2 | 3 ...  12
   char_month = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
   "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
byweekno_clause = "BYWEEKNO" "=" weeknumber_list
   weeknumber_list = weeknumber ( "," weeknumber)*
   weeknumber = [minus] weekno
   weekno = 1 through 53
byyearday_clause = "BYYEARDAY" "=" yearday_list
   yearday_list = yearday ( "," yearday)*
   yearday = [minus] yeardaynum
   yeardaynum = 1 through 366
bydate_clause = "BYDATE" "=" date_list
   date_list = date ( "," date)*
   date = [YYYY]MMDD [ offset | span ]
bymonthday_clause = "BYMONTHDAY" "=" monthday_list
   monthday_list = monthday ( "," monthday)*
   monthday = [minus] monthdaynum
   monthdaynum = 1 through 31
byday_clause = "BYDAY" "=" byday_list
   byday_list = byday ( "," byday)*
   byday = [weekdaynum] day
   weekdaynum = [minus] daynum
   daynum = 1 through 53 /* if frequency is yearly */
   daynum = 1 through 5  /* if frequency is monthly */
   day = "MON" | "TUE" | "WED" | "THU" | "FRI" | "SAT" | "SUN"
byhour_clause = "BYHOUR" "=" hour_list
   hour_list = hour ( "," hour)*
   hour = 0 through 23
byminute_clause = "BYMINUTE" "=" minute_list
   minute_list = minute ( "," minute)*
   minute = 0 through 59
bysecond_clause = "BYSECOND" "=" second_list
   second_list = second ( "," second)*
   second = 0 through 59
bysetpos_clause = "BYSETPOS" "=" setpos_list
   setpos_list = setpos ("," setpos)*
   setpos = [minus] setpos_num
   setpos_num = 1 through 9999

include_clause = "INCLUDE" "=" schedule_list
exclude_clause = "EXCLUDE" "=" schedule_list
intersect_clause = "INTERSECT" "=" schedule_list
schedule_list = schedule_clause ("," schedule_clause)*
schedule_clause = named_schedule [ offset ]
named_schedule = [schema "."] schedule
periods_clause = "PERIODS" "=" periodnum
byperiod_clause = "BYPERIOD" "=" period_list
period_list = periodnum ("," periodnum)*
periodnum = 1 through 100

offset = ("+" | "-") ["OFFSET:"] duration_val
span = ("+" | "-" | "^") "SPAN:" duration_val
duration_val = dur-weeks | dur_days
dur_weeks = numofweeks "W"
dur_days = numofdays "D"
numofweeks = 1 through 53
numofdays = 1 through 376
minus = "-"

表114-7 repeat_intervalの値

名前 説明

FREQ

繰返しのタイプを指定します。これは必ず指定する必要があります。頻度の値には、事前定義済のYEARLY、MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELYおよびSECONDLYを設定できます。また、既存のスケジュールを指定して、ユーザー定義の頻度として使用することもできます。

INTERVAL

繰返しの実行頻度を正の整数で指定します。デフォルトは1で、秒単位では毎秒、日単位では毎日を意味します。最大値は999です。

BYMONTH

ジョブを実行する月を指定します。数字(1月の場合は1、3月の場合は3など)を入力するか、または3文字の略語(2月の場合はFEB、7月の場合はJULなど)を入力できます。

BYWEEKNO

ある年における週を番号で指定します。ISO-8601に準拠して、一週間は月曜から日曜までとし、グレゴリオ暦年の最初の週が4日以上ある場合に、その週をその年の第1週目とします。つまり、グレゴリオ暦年の最初の木曜日が含まれ、かつ1月4日が含まれる週が第1週目となります。

ISO-8601準拠の週番号は、1から52または53の整数になります。週1の一部は前の暦年に含まれる場合があり、週52の一部は翌暦年に含まれる場合があります。またその年に週53がある場合、その週の一部は必ず翌暦年に含まれます。

たとえば1998年の場合、ISO準拠の週1は1997年12月29日(月曜日)から始まり、ISO準拠の最後の週(週53)は1999年1月3日(日曜日)に終わりました。このため、1997年12月29日はISO週1998-1で、1999年1月1日はISO週1998-53になります。

byweeknoはYEARLYに対してのみ有効です。

無効な指定の例は、"FREQ=YEARLY; BYWEEKNO=1; BYMONTH=12"および"FREQ=YEARLY;BYWEEKNO=53;BYMONTH=1"です。

BYYEARDAY

ある年における日付を番号で指定します。有効な値は1から31です。たとえば、69は3月10日(1月は31、2月は28、3月は10)です。69はうるう年以外では3月10日、うるう年の場合は3月9日になります。うるう年かどうかにかかわらず、-2は常に12月30日になります。

BYDATE

日付のリストを指定します。それぞれの日付を[YYYY]MMDDの形式で指定します。連続する日付のリストは、SPAN修飾子を使用して生成できます。また、OFFSET修飾子を使用すると、日付を調整できます。単純なBYDATE句の例を次に示します。

BYDATE=0115,0315,0615,0915,1215,20060115

次に示すSPANの例は、1月10日から5日間を示すBYDATE=0110,0111,0112,0113,0114と同じです。

BYDATE=0110+SPAN:5D

SPANキーワードの前にあるプラス記号は、範囲が指定日から開始されることを示します。マイナス記号の場合は、範囲が指定日で終了することを示します。また、「^」の場合は、指定日が、n日間またはn週間の範囲の中日になることを示します。nが偶数の場合は、1つ大きい奇数に調整されます。

OFFSETは、n日間またはn週間を加算または減算して指定日を調整します。 BYDATE=0205-OFFSET:2Wは、BYDATE=0205-14DOFFSET:キーワードはオプション)と同じです。また、これはBYDATE=0122とも同じです。

BYMONTHDAY

月における日付を番号で指定します。有効な値は1から31です。たとえば10の場合は、選択した月の10日を意味します。 マイナス記号(-)を使用して、最後の日から逆に数えることができます。BYMONTHDAY=-1はその月の最後の日を意味し、BYMONTHDAY=-2はその月の最後から2番目の日を意味します。

BYDAY

曜日を指定します。月曜日から日曜日までを、MON、TUEなどの形式で指定します。数字を使用して、その年の26番目の金曜日を指定したり(頻度にYEARLYを使用している場合)、その月の4番目の木曜日を指定できます(頻度にMONTHLYを使用している場合)。マイナス記号を使用すると、その月の最後から2番目の金曜日を指定できます。たとえば、-1 FRIはその月の最後の金曜日を示します。

BYHOUR

ジョブを実行する時間を指定します。 有効な値は0から23です。たとえば、10は午前10時を示します。

BYMINUTE

ジョブを起動する分を指定します。有効な値は0から59です。たとえば、45は選択した時間(時)の45分すぎを示します。

BYSECOND

ジョブを実行する秒を指定します。有効な値は0から59です。たとえば、30は選択した分の30秒すぎを示します。

BYSETPOS

カレンダ式全体を評価して戻されたタイムスタンプのリスト内の位置を基準にして、1つ以上の項目を選択します。これは、月の最後の就業日にジョブの実行が必要な場合などに有効です。他のBY句を指定してではなく、1月のすべての就業日のリストを評価するカレンダ式を作成した後、そのリストの最後の項目のみを選択するBYSETPOS句を追加して表現できます。就業日が月曜日から金曜日とすると、構文は次のようになります。

FREQ=MONTHLY; BYDAY=MON,TUE,WED,THU,FRI; BYSETPOS=-1

有効な値は1から9999です。負の数を指定すると、リストの最後から項目が選択されます(-1は最後の項目、-2は最後から2番目の項目などのように選択されます)。正の数を指定すると、リストの最初から選択されます。BYSETPOS句は、常に最後に評価されます。BYSETPOSは、頻度がMONTHLYおよびYEARLYの場合にのみサポートされます。

BYSETPOS句がタイムスタンプのリストに適用されるのは、頻度期間ごとに1回です。たとえば、頻度がMONTHLYと定義されている場合は、月のすべての有効なタイムスタンプが確認され、そのリストが順序付けられた後、BYSETPOS句が適用されます。その後、次の月に対して同じ手順が繰り返されます。開始日が2004年6月10日であるとすると、前述の例の評価結果は、6月30日、7月30日、8月31日、9月30日、10月29日などのようになります。

INCLUDE

1つ以上の名前付きスケジュールをカレンダ式に含めます。つまり、含める各名前付きスケジュールで定義されているタイムスタンプ・セットが、カレンダ式の評価結果に追加されます。含めるスケジュールとカレンダ式の両方で同じタイムスタンプが生成される場合、そのタイムスタンプは、タイムスタンプの結果セットに1回のみ含められます。名前付きスケジュールは、CREATE_SCHEDULEプロシージャで定義済である必要があります。

EXCLUDE

1つ以上の名前付きスケジュールをカレンダ式から除外します。つまり、除外する各名前付きスケジュールで定義されているタイムスタンプ・セットが、カレンダ式の評価結果から削除されます。名前付きスケジュールは、CREATE_SCHEDULEプロシージャで定義済である必要があります。

INTERSECT

カレンダ式の結果と、1つ以上の名前付きスケジュールで定義されているタイムスタンプ・セットの共通部分を指定します。タイムスタンプの結果セットには、カレンダ式と、いずれかの名前付きスケジュールの両方に表示されるタイムスタンプのみが含まれます。

たとえば、名前付きスケジュールlast_satは、毎月の最終土曜日を示し、2005年の場合、月末が土曜日でもある月は4月と12月のみであることを示すとします。 また、名前付きスケジュールend_qtrは、次のように、2005年の各四半期の最終日を示すとします。

3/31/2005, 6/30/2005, 9/30/2005, 12/31/2005

次に示すカレンダ式の結果は、次の日付になります。

3/31/2005, 4/30/2005, 6/30/2005, 9/30/2005, 12/31/2005
FREQ=MONTHLY; BYMONTHDAY=-1; INTERSECT=last_sat,end_qtr

この例では、FREQ=MONTHLY; BYMONTHDAY=-1の項は各月の末日を示します。

PERIODS

ユーザー定義の頻度の1サイクルを構成する期間の数を指定します。 これは、ユーザー定義の頻度を定義するスケジュールのrepeat_interval式で使用されます。 メイン・スケジュールのrepeat_interval式にBYPERIOD句が含まれている場合は必須です。次の例では、会計年度の四半期が定義されます。

FREQ=YEARLY;BYDATE=0301,0601,0901,1201;PERIODS=4

BYPERIOD

ユーザー定義の頻度から期間を選択します。 たとえば、前述の例の会計年度の四半期を定義するユーザー定義の頻度スケジュールをメイン・スケジュールで指定した場合、そのメイン・スケジュールにBYPERIOD=2,4という句が含まれていると、会計年度の第2四半期および第4四半期が選択されます。


スケジュールの組合せ スケジュールの組合せには、次の2つの方法があります。

ユーザー定義の頻度 DAILYWEEKLYMONTHLYなどのあらかじめ定義されている頻度を使用するのではなく、各期間の開始日を戻すスケジュールを自分で作成すると、ユーザー独自の頻度を作成できます。 たとえば、次のrepeat_interval式は、会計年度の各四半期の始まりを定義するfiscal_yearというスケジュールで使用します。

FREQ=YEARLY;BYDATE=0301,0601,0901,1201;PERIODS=4

各四半期の最後の水曜日を戻すには、fiscal_yearスケジュールをユーザー定義の頻度として使用するスケジュール(メイン・スケジュール)を作成します。

FREQ=fiscal_year;BYDAY=-1WED

ユーザー定義の頻度の期間の長さが同じである必要はありません。メイン・スケジュールのBYSETPOS句と番号付きの就業日は、各期間の長さに基づいて再計算されます。特定の期間内の日付を選択するには、メイン・スケジュールでBYPERIOD句を使用する必要があります。これを可能にするには、ユーザー定義の頻度として使用するスケジュールにPERIODS句が含まれ、開始日が適切に設定されている必要があります。このスケジュールから戻される最初の日は、期間1の開始ポイントとして使用されます。

別の例として、月曜日から金曜日が就業日という条件で、会計年度の第2四半期と第4四半期の最後の就業日を求める場合を考えます。この場合のメイン・スケジュールのrepeat_interval句は、次のようになります。

FREQ=fiscal_year;BYDAY=MON,TUE,WED,THU,FRI;BYPERIOD=2,4;BYSETPOS=-1

開始日および反復間隔 Schedulerでは、ジョブまたはスケジュールの開始日から日時が取得され、デフォルト値としてrepeat_intervalに埋め込まれます。たとえば、指定された頻度が毎年で、反復間隔にBYMONTH句またはBYMONTHDAY句が含まれていない場合、ジョブを実行する月と日は開始日から取得されます。同様に、頻度が毎月で、反復間隔にBYMONTHDAY句が含まれていない場合、毎月ジョブを実行する日は開始日から取得されます。BYHOURBYMINUTEおよびBYSECOND句のデフォルト値が存在する場合は、それらの値が開始日から取得され、これらの句が指定されていない場合に使用されます。INCLUDE句、EXCLUDE句またはINTERSECT句が存在する場合、日付に関連するデフォルト値は開始日から取得されませんが、時間に関連するデフォルト値は取得されます。次にいくつかの例を示します。

start_date:      4/15/05 9:00:00
repeat_interval: freq=yearly

is expanded internally to:

freq=yearly;bymonth=4;bymonthday=15;byhour=9;byminute=0;bysecond=0

前述のスケジュールは、2005年4月5日の9:00:00、2006年4月5日の9:00:00、2007年4月5日の9:00:00などのように実行されます。

次の例では、スケジュールS1のrepeat_intervalがFREQ=YEARLY;BYDATE=0701に設定されているとします。

start_date:      01/20/05 9:00:00
repeat_interval: freq=yearly;include=S1

is expanded internally to:

freq=yearly;byhour=9;byminute=0;bysecond=0;include=S1

INCLUDE句が存在するため、日付に関連する情報は開始日から取得されません。 ただし、時間に関連する情報は取得されます。したがって、前述のスケジュールは、2005年7月1日の9:00:00、2006年7月1日の9:00:00、2008年7月1日の9:00:00などのように実行されます。

一般的な規則 カレンダ式を使用する場合、次の規則を考慮する必要があります。

BYSETPOS句の規則 BYSETPOS句の規則は次のとおりです。

BYDATE句の規則 BYDATE句の規則は次のとおりです。

EXCLUDE句の規則 時間構成要素が含まれていない除外日の期間は24時間です。除外日に含まれるすべてのタイムスタンプが削除されます。 次の例で、jan_fifteenは、1月15日の1日にのみ解決される名前付きスケジュールです。

freq=monthly;bymonthday=15,30;byhour=8,13,18;byminute=0;bysecond=0;
     exclude=jan_fifteenth

この場合、1月15日の3つすべてのジョブ・インスタンスが削除されます。

OFFSETの規則 個々の名前付きスケジュールの日付は、その日付に正のオフセットを加えて調整できます。 たとえば、JOB1の実行ごとに正確にその15日後にJOB2を実行するには、JOB1のスケジュールに+OFFSET:15Dを次のように追加します。

BEGIN
dbms_scheduler.create_schedule('job2_schedule', repeat_interval =>
  'job1_schedule+OFFSET:15D');
END;
/

名前付きスケジュールへの負のオフセットの追加はサポートされていません。

例114-1 すべての組合せ

この例では、ユーザー定義の頻度、範囲、オフセット、およびBYSETPOS句とINCLUDE句の使用方法を示します。(オフセット句のOFFSET:キーワードはオプションでです。)

小売業界の多くの企業では、同じ会計年度を採用しています。この会計年度は、2月1日に最も近い日曜日に始まり、次の四半期は正確に13週間後に始まります。小売業界の会計年度スケジュールは、次のように定義できます。

begin
 dbms_scheduler.create_schedule('year_start', repeat_interval=>
       'FREQ=YEARLY;BYDATE=0201^SPAN:1W;BYDAY=SUN');
 dbms_scheduler.create_schedule('retail_fiscal_year',
        to_timestamp_tz('15-JAN-2005 12:00:00','DD-MON-YYYY HH24:MI:SS'),
         'year_start,year_start+13w,year_start+26w,year_start+39w;periods=4');
end;
/

次のスケジュールを使用すると、小売業界の第2四半期と第4四半期の5日目にジョブを実行できます。これは、既存のholidayスケジュールに含まれている日のみでなく、土曜日および日曜日も休日であることを前提としています。

begin
 dbms_scheduler.create_schedule('fifth_day_off', repeat_interval=>
  'FREQ=retail_fiscal_year;BYDAY=SAT,SUN;INCLUDE=holiday;
    BYPERIOD=2,4;BYSETPOS=5');
end;
/

DBMS_SCHEDULERサブプログラムの要約

表114-8 DBMS_SCHEDULERパッケージのサブプログラム

サブプログラム 説明

ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ


ユーザーをサブスクライバとしてSchedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEに追加します。

ADD_WINDOW_GROUP_MEMBERプロシージャ

既存のウィンドウ・グループにウィンドウを追加します。

ALTER_CHAINプロシージャ


チェーンの指定ステップを変更します。

ALTER_RUNNING_CHAINプロシージャ


実行中のチェーンの指定ステップを変更します。

CLOSE_WINDOWプロシージャ


オープンしているウィンドウをただちにクローズします。

COPY_JOBプロシージャ


既存のジョブをコピーします。

CREATE_CHAINプロシージャ


チェーン(様々な目的を実現するために組み合わされた一連の名前付きプログラム)を作成します。

CREATE_CREDENTIALプロシージャ


資格証明を作成します。

CREATE_EVENT_SCHEDULEプロシージャ


イベント・スケジュール(イベントの検出に基づいてジョブを開始するスケジュール)を作成します。

CREATE_JOBプロシージャ


1つのジョブを作成します。

CREATE_JOB_CLASSプロシージャ


ジョブ・クラス(リソースの割当ておよび優先順位付けのためにジョブをグループ化する方法を提供するもの)を作成します。

CREATE_JOBSプロシージャ


複数のジョブを作成します。

CREATE_PROGRAMプロシージャ


プログラムを作成します。

CREATE_SCHEDULEプロシージャ


スケジュールを作成します。

CREATE_WINDOWプロシージャ


ウィンドウ(様々なリソース・プランを様々なタイミングで自動的にアクティブにする方法を提供するもの)を作成します。

CREATE_WINDOW_GROUPプロシージャ


ウィンドウ・グループを作成します。

DEFINE_ANYDATA_ARGUMENTプロシージャ


値が複合型で、AnyDataオブジェクト内でカプセル化して渡す必要のあるプログラム引数を定義します。

DEFINE_CHAIN_EVENT_STEPプロシージャ


チェーン・ステップを追加または置換し、イベント・スケジュールまたはインライン・イベントに関連付けます。 「DEFINE_CHAIN_STEP」も参照してください。

DEFINE_CHAIN_RULEプロシージャ


既存のチェーンにルールを追加します。

DEFINE_CHAIN_STEPプロシージャ


チェーン・ステップを定義します。チェーン・ステップには、プログラムまたは別の(ネストした)チェーンを指定できます。 「DEFINE_CHAIN_EVENT_STEP」も参照してください。

DEFINE_METADATA_ARGUMENTプロシージャ


プログラムの特別なメタデータ引数を定義します。この引数を通じて特定のメタデータを取得できます。

DEFINE_PROGRAM_ARGUMENTプロシージャ


値を文字列リテラルとしてプログラムに渡すことのできるプログラム引数を定義します。

DISABLEプロシージャ


プログラム、ジョブ、チェーン、ウィンドウまたはウィンドウ・グループを使用禁止にします。

DROP_CHAINプロシージャ


既存のチェーンを削除します。

DROP_CHAIN_RULEプロシージャ


既存のチェーンからルールを削除します。

DROP_CHAIN_STEPプロシージャ


チェーン・ステップを削除します。

DROP_CREDENTIALプロシージャ


資格証明を削除します。

DROP_JOBプロシージャ


ジョブ・クラスの1つのジョブまたはすべてのジョブを削除します。

DROP_JOB_CLASSプロシージャ


ジョブ・クラスを削除します。

DROP_PROGRAMプロシージャ


プログラムを削除します。

DROP_PROGRAM_ARGUMENTプロシージャ


プログラム引数を削除します。

DROP_SCHEDULEプロシージャ


スケジュールを削除します。

DROP_WINDOWプロシージャ


ウィンドウを削除します。

DROP_WINDOW_GROUPプロシージャ


ウィンドウ・グループを削除します。

ENABLEプロシージャ


プログラム、ジョブ、チェーン、ウィンドウまたはウィンドウ・グループを使用可能にします。

END_DETACHED_JOB_RUNプロシージャ


連結解除された実行中のジョブを終了します。

EVALUATE_CALENDAR_STRINGプロシージャ


カレンダ文字列を評価し、ジョブやウィンドウの次の実行日を表示します。

EVALUATE_RUNNING_CHAINプロシージャ


実行中のチェーンのルールを強制的に再評価し、条件を満たしているルールがある場合は適用します。

GENERATE_JOB_NAMEファンクション


ジョブに一意の名前を生成します。これにより、接頭辞を追加してジョブを識別できます(たとえば、Sallyのジョブの名前はsally1sally2のようになります)。

GET_ATTRIBUTEプロシージャ


オブジェクトの属性値を取得します。

GET_FILEプロシージャ


ホストからファイルを取得します。

GET_SCHEDULER_ATTRIBUTEプロシージャ


Scheduler属性の値を取得します。

OPEN_WINDOWプロシージャ


ウィンドウをただちにオープンします。このプロシージャの継続時間中、このウィンドウはすぐにオープンします。

PURGE_LOGプロシージャ


ジョブおよびウィンドウのログから特定の行をパージします。

PUT_FILEプロシージャ


1つ以上のホストにファイルを保存します。

REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャ


Schedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEからユーザーをサブスクライブ解除します。

REMOVE_WINDOW_GROUP_MEMBERプロシージャ


既存のウィンドウ・グループからウィンドウを削除します。指定したウィンドウが特定グループのメンバーでない場合は、削除できません。

RESET_JOB_ARGUMENT_VALUEプロシージャ


関連するプログラムで定義された引数に割り当てられた現在の値をリセットします。

RUN_CHAINプロシージャ


1回のみ実行するジョブを作成して、チェーンをただちに実行します。

RUN_JOBプロシージャ


ジョブをただちに実行します。

SET_AGENT_REGISTRATION_PASSプロシージャ


データベースのエージェント登録パスワードを設定します

SET_ATTRIBUTEプロシージャ


ジョブ、スケジュールなどのSchedulerオブジェクトの属性を変更します。

SET_ATTRIBUTE_NULLプロシージャ


オブジェクトの属性をNULLに変更します。

SET_JOB_ANYDATA_VALUEプロシージャ


AnyDataオブジェクト内でカプセル化したジョブ引数の値を設定します。

SET_JOB_ARGUMENT_VALUEプロシージャ


ジョブ引数の値を設定します。

SET_JOB_ATTRIBUTESプロシージャ


ジョブ属性の値を設定します。

SET_SCHEDULER_ATTRIBUTEプロシージャ


Scheduler属性の値を設定します。

STOP_JOBプロシージャ


現在実行中のジョブ、またはジョブ・クラスのすべてのジョブを停止します。



ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ

このプロシージャは、ユーザーをサブスクライバとしてSchedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEに追加し、指定したエージェントを使用してこのキューからデキューする権限をそのユーザーに付与します。

構文

DBMS_SCHEDULER.ADD_EVENT_QUEUE_SUBSCRIBER (
   subscriber_name         IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-9 ADD_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ

パラメータ 説明

subscriber_name

Schedulerイベント・キューのサブスクライブに使用するOracle Streams Advanced Queuing(AQ)エージェントの名前。NULLに設定すると、エージェントが作成され、コール・ユーザーのユーザー名が割り当てられます。


使用上の注意

サブスクリプションは、ルールに基づきます。このルールによって、ユーザーは自分が所有するジョブで発生したイベントのみを検知することが許可され、他のすべてのメッセージはフィルタ処理で除外されます。同じ名前のAQエージェントがすでに存在する場合は、エラーが発生します。


ADD_WINDOW_GROUP_MEMBERプロシージャ

このプロシージャは、1つ以上のウィンドウを既存のウィンドウ・グループに追加します。

構文

DBMS_SCHEDULER.ADD_WINDOW_GROUP_MEMBER (
   group_name              IN VARCHAR2,
   window_list             IN VARCHAR2);

パラメータ

表114-10 ADD_WINDOW_GROUP_MEMBERプロシージャのパラメータ

パラメータ 説明

group_name

ウィンドウ・グループの名前。

window_list

ウィンドウの名前。


使用上の注意

すでにオープンしているウィンドウをウィンドウ・グループに追加すると、Schedulerではこのウィンドウ・グループ内の次のウィンドウがオープンするまで、このウィンドウ・グループを指定したジョブを取得しません。

グループにウィンドウを追加するには、MANAGE SCHEDULER権限が必要です。

ウィンドウ・グループは、他のウィンドウ・グループのメンバーになれないことに注意してください。


ALTER_CHAINプロシージャ

このプロシージャは、チェーンの指定ステップの属性を変更します。 変更は、現在実行中のチェーン・ジョブで次回から指定ステップを実行するときに適用されます。また、変更後、同じチェーン・ジョブを実行するときや、そのチェーンを指定する他のチェーン・ジョブを実行するときにも変更は適用されます。

構文

1つ以上のステップのブール属性の値を変更する場合:

DBMS_SCHEDULER.ALTER_CHAIN (
   chain_name              IN VARCHAR2,
   step_name               IN VARCHAR2,
   attribute               IN VARCHAR2,
   value                   IN BOOLEAN);

1つ以上のステップの文字属性の値を変更する場合:

DBMS_SCHEDULER.ALTER_CHAIN (
   chain_name              IN VARCHAR2,
   step_name               IN VARCHAR2,
   attribute               IN VARCHAR2,
   char_value              IN      VARCHAR2);

パラメータ

表114-11 ALTER_CHAINプロシージャのパラメータ

パラメータ 説明

chain_name

変更するチェーンの名前。

step_name

変更するステップまたはステップのカンマ区切りリストの名前。NULLは指定できません。

attribute

変更するステップの属性。 次のいずれかを指定する必要があります。

  • 'PAUSE': ステップのPAUSE属性をTRUEに設定すると、ステップの実行が終了したときにその状態はPAUSEDになります(completed属性はFALSEのままです)。一時停止したチェーン・ステップのPAUSE属性を、(ALTER_RUNNING_CHAINを使用して)FALSEに再設定すると、ステップの状態は完了状態(SUCCEEDEDFAILEDまたはSTOPPED)になり、completed属性がTRUEに設定されます。PAUSEに設定すると、実行済のステップには影響しません。これによって、特定ステップの実行後に、チェーンの実行を一時停止できます。

  • 'SKIP': ステップのSKIP属性をTRUEに設定すると、ステップ条件が満たされた場合、ステップは実行されず、即時成功した場合と同様に処理されます。SKIPTRUEに設定しても、そのステップが、実行中のステップ、遅延後に実行されるようにスケジュールされているステップ、またはすでに実行済のステップの場合は影響を受けません。PAUSEが設定されているステップのSKIPTRUEに設定すると、ステップ条件が満たされた場合、そのステップの状態は即時PAUSEDになります。

  • 'RESTART_ON_RECOVERY': ステップのRESTART_ON_RECOVERY属性をTRUEに設定すると、ステップは、データベースのシャットダウンよって停止した場合、データベースのリカバリ時に再開されます。この属性をFALSEに設定すると、ステップがデータベースのシャットダウンよって停止した場合は、データベースのリカバリ時にそのステップに停止のマークが付けられ、チェーンは続行されます。

  • 'DESTINATION': リモートの外部ジョブを実行するステップにのみ有効です。 ステップを実行する場所を指定します。 この属性は、host:portの形式で指定する必要があります。ここで、hostは宛先ホストのホスト名またはIPアドレス、portはそのホストでSchedulerエージェントがリスニングするポート番号です。デフォルトではNULLです。

  • 'CREDENTIAL_NAME': 外部ジョブ(ローカルまたはリモート)を実行するステップにのみ有効です。 このステップの実行時に使用する資格証明を指定します。デフォルトではNULLです。

value

属性に設定する値(ブール属性の場合)。

char_value

属性に設定する値(文字属性の場合)。


使用上の注意

チェーンを変更するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTERオブジェクト権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


ALTER_RUNNING_CHAINプロシージャ

このプロシージャは、チェーンの指定ステップの属性を変更します。 指定された実行中のチェーン・ジョブのチェーンのインスタンスのステップにのみ影響します。

構文

DBMS_SCHEDULER.ALTER_RUNNING_CHAIN (
   job_name                IN VARCHAR2,
   step_name               IN VARCHAR2,
   attribute               IN VARCHAR2,
   value                   IN {BOOLEAN|VARCHAR2});

パラメータ

表114-12 ALTER_RUNNING_CHAINプロシージャのパラメータ

パラメータ 説明

job_name

チェーンを実行しているジョブの名前。

step_name

変更するステップまたはステップのカンマ区切りリストの名前。属性がPAUSEまたはSKIPの場合にこれをNULLに設定すると、実行中のチェーンのすべてのステップが変更されます。

attribute

変更するステップの属性。 'PAUSE'、'SKIP'、'RESTART_ON_RECOVERY'または'STATE'のいずれかを指定する必要があります。

  • 'PAUSE': ステップのPAUSE属性をTRUEに設定すると、ステップの実行が終了したときにその状態はPAUSEDになります(completed属性はFALSEのままです)。一時停止したチェーン・ステップのPAUSE属性を、(ALTER_RUNNING_CHAINを使用して)FALSEに再設定すると、ステップの状態は完了状態(SUCCEEDEDFAILEDまたはSTOPPED)になり、completed属性がTRUEに設定されます。PAUSEに設定すると、実行済のステップには影響しません。これによって、特定ステップの実行後に、チェーンの実行を一時停止できます。 step_nameNULLに設定した場合は、この実行中のチェーンのすべてのステップのPAUSETRUEに設定されます。

  • 'SKIP': ステップのSKIP属性をTRUEに設定すると、ステップ条件が満たされた場合、ステップは実行されず、即時成功した場合と同様に処理されます。SKIPTRUEに設定しても、そのステップが、実行中のステップ、遅延後に実行されるようにスケジュールされているステップ、またはすでに実行済のステップの場合は影響を受けません。 step_nameNULLに設定した場合は、この実行中のチェーンのすべてのステップのSKIPTRUEに設定されます。PAUSEが設定されているステップのSKIPTRUEに設定すると、ステップ条件が満たされた場合、そのステップの状態は即時PAUSEDになります。

  • 'RESTART_ON_RECOVERY': ステップのRESTART_ON_RECOVERY属性をTRUEに設定すると、ステップは、データベースのシャットダウンよって停止した場合、データベースのリカバリ時に再開されます。この属性をFALSEに設定すると、ステップがデータベースのシャットダウンよって停止した場合は、データベースのリカバリ時にそのステップに停止のマークが付けられ、チェーンは続行されます。

  • 'STATE': ステップの状態を変更します。状態は、ステップを実行中でない場合にのみ変更できます。状態は、次のいずれかにのみ変更できます。

    'NOT_STARTED', 'SUCCEEDED', 'FAILED error_code'
    

    状態をFAILEDに変更する場合は、エラー・コード(正の整数)を指定する必要があります。

value

属性に設定する値。 TRUEFALSE、'NOT_STARTED'、'SUCCEEDED'または'FAILED error_code'のいずれかを指定する必要があります。


使用上の注意

実行中のチェーンを変更するには、実行中のジョブに対するALTER権限が必要です。(ジョブの所有者であるか、ジョブに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


CLOSE_WINDOWプロシージャ

このプロシージャは、オープンしているウィンドウをただちにクローズします。ウィンドウはクローズすると無効になります。Schedulerでは、ウィンドウがクローズすると、リソース・プランをウィンドウ外で有効だったリソース・プランに切り替えるか、オーバーラップ・ウィンドウの場合はリソース・プランを別のウィンドウに切り替えます。

構文

DBMS_SCHEDULER.CLOSE_WINDOW (
   window_name             IN VARCHAR2);

パラメータ

表114-13 CLOSE_WINDOWプロシージャのパラメータ

パラメータ 説明

window_name

ウィンドウの名前。


使用上の注意

存在しないウィンドウ、またはオープンしていないウィンドウをクローズしようとすると、エラーが発生します。

ジョブの属性stop_on_window_closeTRUEに設定されていない場合は、ジョブを実行しているウィンドウをクローズしても、その実行中のジョブは停止されません。ただし、リソース・プランが変更される可能性があるため、ジョブに割り当てられたリソースも変更される可能性があります。

実行中のジョブのスケジュールとしてウィンドウ・グループが設定されている場合、そのジョブを実行しているウィンドウをクローズしても、同じウィンドウ・グループ内の別のウィンドウがアクティブ化された場合は、このジョブは停止されません。 これは、ジョブの属性stop_on_window_closeTRUEに設定されている場合でも当てはまります。

ウィンドウをクローズするには、MANAGE SCHEDULER権限が必要です。


COPY_JOBプロシージャ

このプロシージャは、既存のジョブのすべての属性を新しいジョブにコピーします。既存のジョブのステータスは変更されませんが、新しいジョブは使用禁止で作成されます。

構文

DBMS_SCHEDULER.COPY_JOB (
   old_job                IN VARCHAR2,
   new_job                IN VARCHAR2);

パラメータ

表114-14 COPY_JOBプロシージャのパラメータ

パラメータ 説明

old_job

既存のジョブの名前。

new_job

新しいジョブの名前。


使用上の注意

ジョブをコピーするには、新しいジョブのスキーマ内にジョブを作成する権限(ユーザー自身のスキーマに作成する場合はCREATE JOBシステム権限、それ以外の場合はCREATE ANY JOBシステム権限)が必要です。古いジョブがユーザー自身のスキーマにない場合は、そのジョブに対するALTER権限か、またはCREATE ANY JOBシステム権限も必要です。


CREATE_CHAINプロシージャ

このプロシージャは、新しいチェーンを作成します。チェーンの名前は、myschema.mynameなどのようにスキーマ名で修飾することもできます。

チェーンは、常に使用禁止の状態で作成されるため、使用する前にENABLEプロシージャで使用可能にする必要があります。

構文

DBMS_SCHEDULER.CREATE_CHAIN (
   chain_name              IN VARCHAR2,
   rule_set_name           IN VARCHAR2 DEFAULT NULL,
   evaluation_interval     IN INTERVAL DAY TO SECOND DEFAULT NULL,
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-15 CREATE_CHAINプロシージャのパラメータ

パラメータ 説明

chain_name

新しいチェーンの名前(スキーマで修飾することもできます)。この名前は、SQLネームスペース内で一意である必要があります。したがって、名前およびスキーマが同じ表またはその他のオブジェクトが存在しないようにする必要があります。

rule_set_name

通常、ルール・セットは渡す必要がありません。ルール・セットおよび関連する空の評価コンテキストは、Schedulerによって自動的に作成されます。 その後、ユーザーは、DEFINE_CHAIN_RULEを使用してルールを追加したり、DROP_CHAIN_RULEを使用してルールを削除できます。

十分な知識を持つユーザーは、チェーン依存性を表すルール・セットを作成し、ここで渡すことができます。これによって、より柔軟にルールを定義できます。たとえば、条件によって外部変数を参照したり、評価コンテキストによって表を公開することができます。ルール・セットを渡す場合は、それがチェーン・ルール・セットの形式であることを確認する必要があります。(たとえば、すべてのステップは、評価コンテキストに変数として示されている必要があります)。 ルール・セットを渡さない場合、ルール・セットはSCHED_RULESET${N}の形式で作成され、評価コンテキストはSCHED_EVCTX${N}の形式で作成されます。

ルールおよびルール・セットの詳細は、『Oracle Streams概要および管理』を参照してください。

evaluation_interval

これをNULLに設定すると、ジョブの開始時およびステップの完了時にのみ、実行中のチェーンのルールが再評価されます。NULL以外の値に設定すると、指定された間隔で定期的にルールが評価されます。 評価ではCPUが集中的に使用される場合があるため、このパラメータは、可能最高値に設定するか、または可能な場合はNULLのままにしておく必要があります。evaluation_intervalは、1分より小さい値または1日より大きい値には設定できません。

comments

チェーンの目的を説明するコメント(オプション)。


使用上の注意

ユーザー各自のスキーマにチェーンを作成するには、CREATE JOBシステム権限が必要です。別のスキーマでチェーンを作成するには、CREATE ANY JOBシステム権限が必要です。 rule_set_nameを指定しない場合、ルール・セットと評価コンテキストは、チェーンが作成されるスキーマに作成されます。したがって、ユーザーには、それらのオブジェクトの作成に必要な権限が必要です。 詳細は、「DBMS_RULE_ADM.CREATE_RULE_SETプロシージャ」および「DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXTプロシージャ」を参照してください。


CREATE_CREDENTIALプロシージャ

このプロシージャは、ユーザー名/パスワードのペアを作成し、資格証明と呼ばれるデータベース・オブジェクトに保存します。

構文

DBMS_SCHEDULER.CREATE_CREDENTIAL (
   credential_name         IN VARCHAR2,
   username                IN VARCHAR2,
   password                IN VARCHAR2,
   database_role           IN VARCHAR2 DEFAULT NULL,
   windows_domain          IN VARCHAR2 DEFAULT NULL,
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-16 CREATE_CREDENTIALプロシージャのパラメータ

パラメータ 説明

credential_name

資格証明の参照に使用される名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。二重引用符で囲まないかぎり、大文字に変換されます。

username

この資格証明を選択する場合に、オペレーティング・システムにログインしてジョブを実行するために使用されるユーザー名。NULLには設定できません。

password

この資格証明を選択する場合に、リモート・オペレーティング・システムにログインしてジョブを実行するために使用されるパスワード。NULLには設定できません。また、大/小文字が区別されます。パスワードはわかりにくい形で保存され、Schedulerディクショナリ・ビューには表示されません。

database_role

将来使用するために予約されています。

windows_domain

Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。このドメインは、自動的に大文字に変換されます。

comments

資格証明の説明に使用可能なテキスト文字列。このフィールドは、Schedulerでは使用されません。


使用上の注意

資格証明は特定のスキーマに存在し、CREATE JOBシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE ANY JOB権限が必要です。

ユーザー名は、大/小文字が区別されます。二重引用符および空白は使用できません。


CREATE_EVENT_SCHEDULEプロシージャ

このプロシージャは、イベント・スケジュールを作成します(イベント・スケジュールは、特定のイベントが発生した際にジョブを開始するために使用します)。

構文

DBMS_SCHEDULER.CREATE_EVENT_SCHEDULE (
   schedule_name           IN VARCHAR2,
   start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   event_condition         IN VARCHAR2,
   queue_spec              IN VARCHAR2,
   end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-17 CREATE_EVENT_SCHEDULEプロシージャのパラメータ

パラメータ 説明

schedule_name

この属性は、スケジュールの一意の識別子を指定します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、スケジュールはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。

start_date

この属性は、スケジュールが有効になる日時を指定します。 このスケジュールのコンテキストでは、この日時より前に発生したイベントは無視されます。

event_condition

イベント・ソースのキュー表の列に基づく条件式です。この式は、アドバンスト・キューイング・ルールの構文に従っている必要があります。したがって、メッセージ・ペイロードがオブジェクト・タイプで、式のオブジェクト属性の前にtab.user_dataを付加した場合は、ユーザー・データ・プロパティを式に含めることができます。ルールの詳細は、「DBMS_AQADM.ADD_SUBSCRIBERプロシージャ」を参照してください。

queue_spec

この引数は、特定のジョブを開始するイベントがエンキューされるキュー(ソース・キュー)を指定します。ソース・キューが保護キューの場合、queue_spec引数は、queue_name, agent nameという形式の値ペアを含む文字列です。保護キューでない場合は、キュー名のみ指定する必要があります。指定したキュー名が完全修飾名でない場合、キューは、ジョブの所有者のスキーマ内にあるとみなされます。保護キューの場合、指定するエージェント名は、キューに現在サブスクライブされている有効なエージェントの名前である必要があります。

end_date

指定日時の後で、ジョブの実行およびウィンドウのオープンを停止する日時です。

end_dateの指定されていないイベント・スケジュールは、無期限に有効です。

end_dateは、start_dateより後の日付である必要があります。当日か前の日付の場合、スケジュールを作成する際にエラーが発生します。

comments

スケジュールのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。


使用上の注意

このプロシージャでは、各自のスキーマでスケジュールを作成するにはCREATE JOB権限が、またはschema.schedule_nameを指定することによって他者のスキーマでスケジュールを作成するにはCREATE ANY JOB権限が必要です。スケジュールが作成されると、他のユーザーもそのスケジュールを使用できます。スケジュールは、PUBLICへのアクセス権を伴って作成されます。このため、スケジュールへのアクセス権限を明示的に付与する必要はありません。


CREATE_JOBプロシージャ

このプロシージャは、1つのジョブ(通常または軽量)を作成します。 ジョブの作成時にenabled属性をTRUEに設定して使用可能にすると、Schedulerによりスケジュールに従って自動的にジョブは実行されます。 ジョブの作成時に使用禁止に設定すると、SET_ATTRIBUTEプロシージャを使用してジョブを使用可能にするまでジョブは実行されません。

このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、構文宣言とともに示します。

構文

既存のプログラムまたはスケジュールを使用せずに、1回のコールでジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
   job_name             IN VARCHAR2,
   job_type             IN VARCHAR2,
   job_action           IN VARCHAR2,
   number_of_arguments  IN PLS_INTEGER              DEFAULT 0,
   start_date           IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   repeat_interval      IN VARCHAR2                 DEFAULT NULL,
   end_date             IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   job_class            IN VARCHAR2                 DEFAULT 'DEFAULT_JOB_CLASS',
   enabled              IN BOOLEAN                  DEFAULT FALSE,
   auto_drop            IN BOOLEAN                  DEFAULT TRUE,
   comments             IN VARCHAR2                 DEFAULT NULL);

指定のスケジュール・オブジェクトおよび指定のプログラム・オブジェクトを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
   job_name                IN VARCHAR2,
   program_name            IN VARCHAR2,
   schedule_name           IN VARCHAR2,
   job_class               IN VARCHAR2              DEFAULT 'DEFAULT_JOB_CLASS',
   enabled                 IN BOOLEAN               DEFAULT FALSE,
   auto_drop               IN BOOLEAN               DEFAULT TRUE,
   comments                IN VARCHAR2              DEFAULT NULL,
   job_style               IN VARCHAR2              DEFAULT 'REGULAR');

指定のプログラム・オブジェクトおよびインライン・スケジュールを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
   job_name             IN VARCHAR2,
   program_name         IN VARCHAR2,
   start_date           IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   repeat_interval      IN VARCHAR2                 DEFAULT NULL,
   end_date             IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   job_class            IN VARCHAR2                 DEFAULT 'DEFAULT_JOB_CLASS',
   enabled              IN BOOLEAN                  DEFAULT FALSE,
   auto_drop            IN BOOLEAN                  DEFAULT TRUE,
   comments             IN VARCHAR2                 DEFAULT NULL,
   job_style            IN VARCHAR2                 DEFAULT 'REGULAR');

指定のスケジュール・オブジェクトおよびインライン・プログラムを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
   job_name                IN VARCHAR2,
   schedule_name           IN VARCHAR2,
   job_type                IN VARCHAR2,
   job_action              IN VARCHAR2,
   number_of_arguments     IN PLS_INTEGER       DEFAULT 0,
   job_class               IN VARCHAR2          DEFAULT 'DEFAULT_JOB_CLASS',
   enabled                 IN BOOLEAN           DEFAULT FALSE,
   auto_drop               IN BOOLEAN           DEFAULT TRUE,
   comments                IN VARCHAR2          DEFAULT NULL);

インライン・プログラムおよびイベントを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
   job_name                IN VARCHAR2,
   job_type                IN VARCHAR2,
   job_action              IN VARCHAR2,
   number_of_arguments     IN PLS_INTEGER       DEFAULT 0,
   start_date              IN TIMESTAMP WITH TIME ZONE,
   event_condition         IN VARCHAR2,
   queue_spec              IN VARCHAR2,
   end_date                IN TIMESTAMP WITH TIME ZONE,
   job_class               IN VARCHAR2          DEFAULT 'DEFAULT_JOB_CLASS',
   enabled                 IN BOOLEAN           DEFAULT FALSE,
   auto_drop               IN BOOLEAN           DEFAULT TRUE,
   comments                IN VARCHAR2          DEFAULT NULL);

指定のプログラム・オブジェクトおよびイベントを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
   job_name                IN VARCHAR2,
   program_name            IN VARCHAR2,
   start_date              IN TIMESTAMP WITH TIME ZONE,
   event_condition         IN VARCHAR2,
   queue_spec              IN VARCHAR2,
   end_date                IN TIMESTAMP WITH TIME ZONE,
   job_class               IN VARCHAR2          DEFAULT 'DEFAULT_JOB_CLASS',
   enabled                 IN BOOLEAN           DEFAULT FALSE,
   auto_drop               IN BOOLEAN           DEFAULT TRUE,
   comments                IN VARCHAR2          DEFAULT NULL,
   job_style               IN VARCHAR2          DEFAULT 'REGULAR');

パラメータ

表114-18 CREATE_JOBプロシージャのパラメータ

パラメータ 説明

job_name

この属性はジョブの名前を指定し、ジョブを一意に識別します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、ジョブはスキーマの表と同じ名前を持つことができません。作成するジョブを別のスキーマに配置する場合は、そのスキーマ名でジョブを修飾する必要があります。

job_nameを指定しない場合、エラーが発生します。 Schedulerによって名前を生成する場合は、GENERATE_JOB_NAMEプロシージャを使用して名前を生成してから、この生成された名前をCREATE_JOBプロシージャで使用できます。 GENERATE_JOB_NAMEプロシージャ・コールは順序番号を生成し、この番号がジョブ名になります。順序番号には、接頭辞として文字列を付けることができます。これにより、順序番号の付いた文字列がジョブ名になります。 詳細は、「GENERATE_JOB_NAMEファンクション」を参照してください。

job_type

この属性は、作成するジョブのタイプを指定します。これを指定しない場合、エラーが発生します。サポートされる値は、次のとおりです。

  • 'PLSQL_BLOCK'

    ジョブが無名PL/SQLブロックであることを示します。 ジョブまたはプログラムのタイプがPLSQL_BLOCKの場合、そのジョブまたはプログラムの引数はサポートされません。この場合、引数は0である必要があります。

  • 'STORED_PROCEDURE'

    ジョブが、PL/SQLプロシージャ、Javaストアド・プロシージャまたは外部Cサブプログラムであることを示します。プロシージャのみがサポートされ、戻り値を持つファンクションはサポートされません。

  • 'EXECUTABLE'

    ジョブがデータベースの外部ジョブであることを示します。外部ジョブとは、オペレーティング・システムのコマンドラインから実行可能なものすべてのことです。Anydata引数は、EXECUTABLEタイプのジョブまたはプログラムではサポートされていません。ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

  • 'CHAIN'

    ジョブがチェーンであることを示します。 チェーンでは引数がサポートされていません。したがって、number_of_argumentsは0(ゼロ)にする必要があります。

job_action

この属性は、ジョブのアクションを指定します。次のアクションを指定できます。

PL/SQLブロックでは、アクションはPL/SQLコードを実行します。これらのブロックはセミコロンで終わる必要があります。たとえば、my_proc();BEGIN my_proc(); END;またはDECLARE arg pls_integer := 10; BEGIN my_proc2(arg); END;です。Schedulerは独自のブロックでjob_actionをラップし、DECLARE ... BEGIN job_action END;を実行用にPL/SQLに渡します。これは一部の内部Scheduler変数を宣言するために行われます。PL/SQLコードには、event_messageを除く任意のSchedulerメタデータ属性を含めることができます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。使用可能なメタデータ属性の詳細は、表114-30を参照してください。

ストアド・プロシージャの場合は、このアクションはストアド・プロシージャの名前です。ジョブとは別のスキーマにプロシージャが存在する場合は、そのスキーマを指定する必要があります。

ジョブまたはプログラムのタイプがSTORED_PROCEDUREの場合、INOUT引数またはOUT引数を持つPL/SQLプロシージャは、job_actionとしてサポートされません。

実行可能ファイルの場合、アクションは、フルパス名が含まれ、すべてのコマンドライン引数が除外されている外部実行可能ファイルの名前です。アクションが1つの疑問符('?')で始まっている場合、この疑問符は、ローカル・ジョブのOracleホーム・ディレクトリのパスまたはリモート・ジョブのSchedulerエージェント・ホームのパスに置き換えられます。アクションにアット・マーク('@')が含まれており、ジョブがローカルの場合、アット・マークは現行のOracleインスタンスのSIDに置き換えられます。

チェーンの場合は、このアクションはSchedulerチェーン・オブジェクトの名前です。チェーンがジョブとは別のスキーマ内に存在する場合は、そのスキーマを指定する必要があります。

インライン・プログラムにjob_actionを指定しないと、ジョブの作成時にエラーが発生します。

number_of_arguments

この属性は、ジョブに予測される引数の数を指定します。範囲は0から255で、デフォルトは0です。

program_name

このジョブに関連付けるプログラムの名前です。プログラムがEXECUTABLEタイプの場合、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

start_date

ジョブの開始がスケジュールされている最初の日時を指定します。 start_dateおよびrepeat_intervalをNULLのままにした場合、ジョブは使用可能になるとただちに実行されるようにスケジュールされます。

カレンダ式を使用して反復間隔を指定する繰返しジョブの場合は、start_dateは参照日として使用されます。 ジョブの実行がスケジュールされる最初の日時は、現在の日時以降で最初にカレンダ式に一致した日時になります。

Schedulerでは、ジョブが正確な時間に実行されることを保証しません。これは、システムがオーバーロードしてリソースが使用できない場合があるためです。

event_condition

イベント・ソースのキュー表の列に基づく条件式です。この式は、アドバンスト・キューイング・ルールの構文に従っている必要があります。したがって、メッセージ・ペイロードがオブジェクト・タイプで、式のオブジェクト属性の前にtab.user_dataを付加した場合は、ユーザー・データ・プロパティを式に含めることができます。ルールの詳細は、「DBMS_AQADM.ADD_SUBSCRIBERプロシージャ」を参照してください。

queue_spec

この引数は、特定のジョブを開始するイベントがエンキューされるキュー(ソース・キュー)を指定します。ソース・キューが保護キューの場合、queue_spec引数は、queue_name, agent nameという形式の値ペアを含む文字列です。保護キューでない場合は、キュー名のみ指定する必要があります。指定したキュー名が完全修飾名でない場合、キューは、ジョブの所有者のスキーマ内にあるとみなされます。保護キューの場合、指定するエージェント名は、キューに現在サブスクライブされている有効なエージェントの名前である必要があります。

repeat_interval

ジョブを繰り返す間隔を指定します。反復間隔は、カレンダ式またはPL/SQL式を使用して指定できます。

指定した式を評価して、ジョブの次回実行時を決定します。 repeat_intervalを指定しない場合、ジョブは、指定した開始日に1回のみ実行されます。詳細は、「カレンダ構文」を参照してください。

schedule_name

このジョブに関連付けるスケジュール、ウィンドウまたはウィンドウ・グループの名前です。

job_class

このジョブに関連付けるクラス。

end_date

ジョブの期限が切れる日時を指定します。この日時を過ぎると、ジョブは実行されなくなります。end_dateより後に、auto_dropTRUEの場合は、ジョブが削除されます。auto_dropFALSEの場合、ジョブは使用禁止になり、ジョブのSTATECOMPLETEDに設定されます。

end_dateに値が指定されていない場合、ジョブは無期限で繰り返されます。ただし、max_runsまたはmax_failuresが設定されている場合は、いずれかの値に達するとジョブは停止します。

end_dateの値は、start_dateの値よりも大きい必要があります。等しいか小さい場合、ジョブが使用可能になったときにエラーが発生します。

comments

ジョブのコメントを指定します。デフォルトでは、この属性はNULLです。

job_style

作成するジョブのスタイル。この引数は、次の値のいずれかを取ることができます。

  • 'REGULAR': 通常のジョブが作成されます。これがデフォルトです。

  • 'LIGHTWEIGHT': 軽量ジョブが作成されます。 この値は、ジョブがプログラム・オブジェクトを参照する場合にのみ指定できます。 軽量ジョブは、多数の短時間のジョブを頻繁に実行する場合に使用します。 特定の条件下では、軽量ジョブを使用してもパフォーマンスがあまり向上しない場合があります。

enabled

ジョブを使用可能で作成するかどうかを指定します。TRUEまたはFALSEを設定できます。デフォルトではFALSEに設定されるため、ジョブは使用禁止で作成されます。使用禁止ジョブとは、ジョブに関するメタデータが取得され、ジョブはデータベース・オブジェクトとして存在しますが、Schedulerはこのジョブを無視し、ジョブ・コーディネータが処理対象としてジョブを取得しないことを意味します。ジョブ・コーディネータがジョブを処理できるようにするには、ジョブが使用可能である必要があります。この引数をTRUEに設定するか、またはENABLEプロシージャを使用すると、ジョブを使用可能にできます。

auto_drop

このフラグをTRUEに設定すると、ジョブは、完了するかまたは自動的に使用禁止になると自動的に削除されます。ジョブは、次の場合、完了したとみなされます。

  • ジョブの終了日(または終了予定日)を過ぎた場合。

  • max_runs回実行された場合。max_runsSET_ATTRIBUTEで設定されている必要があります。

  • 繰り返しジョブでないジョブが1回実行された場合。

ジョブは、max_failures回失敗すると、使用禁止になります。max_failuresSET_ATTRIBUTEで設定します。

このフラグをFALSEに設定すると、ジョブは削除されず、ジョブのメタデータはDROP_JOBプロシージャで明示的に削除されるまで保持されます。

デフォルトでは、ジョブはauto_dropで作成され、TRUEに設定されます。


使用上の注意

ジョブは、デフォルトでは使用禁止の状態で作成されます。ジョブをアクティブにしてスケジュール可能にするには、明示的に使用可能にする必要があります。ジョブを使用可能にする前に、すべてのプログラム引数(存在する場合)を定義してください(これは、プログラム・オブジェクトにデフォルト値を定義するか、またはジョブに値を指定して行います)。

ユーザー各自のスキーマでジョブを作成するには、CREATE JOB権限を持っている必要があります。CREATE ANY JOB権限を持っているユーザーは、すべてのスキーマでジョブを作成できます。作成するジョブを別のスキーマに配置する場合は、そのスキーマ名でジョブ名を修飾する必要があります。EXECUTABLEタイプのジョブの場合(またはEXECUTABLEタイプのプログラムを指定するジョブの場合)、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

ジョブを特定のクラスまたはプログラムに関連付けるには、そのクラスまたはプログラムのEXECUTE権限が必要です。

ジョブの属性には、CREATE_JOBで設定できないものもあります。一部の属性は、ジョブの作成後に設定する必要があります。 たとえば、ジョブ引数は、SET_JOB_ARGUMENT_VALUEプロシージャまたはSET_JOB_ANYDATA_VALUEプロシージャで設定する必要があります。 job_prioritymax_runsなどの他のジョブ属性は、SET_ATTRIBUTEプロシージャで設定します。

複数のジョブを効率的に作成するには、CREATE_JOBSプロシージャを使用します。


注意:

Schedulerは、ジョブのイベント条件に一致するイベントが発生するたびに、イベント・ベースのジョブを実行します。ただし、ジョブの実行中に発生したイベントは無視されます。この場合、イベントは、コンシュームされますが、同じジョブをもう1つ実行することはありません。


CREATE_JOB_CLASSプロシージャ

このプロシージャは、ジョブ・クラスを作成します。ジョブ・クラスはSYSスキーマ内に作成されます。

構文

DBMS_SCHEDULER.CREATE_JOB_CLASS (
   job_class_name            IN VARCHAR2,
   resource_consumer_group   IN VARCHAR2 DEFAULT NULL,
   service                   IN VARCHAR2 DEFAULT NULL,
   logging_level             IN PLS_INTEGER
                                DEFAULT DBMS_SCHEDULER.LOGGING_RUNS,
   log_history               IN PLS_INTEGER DEFAULT NULL,
   comments                  IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-19 CREATE_JOB_CLASSプロシージャのパラメータ

パラメータ 説明

job_class_name

作成するクラスの名前。SYS以外のスキーマは指定できません。

この属性はジョブ・クラスの名前を指定し、ジョブ・クラスを一意に識別します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、ジョブ・クラスはスキーマの表と同じ名前を持つことができません。

resource_consumer_group

この属性は、このクラスに関連付けるリソース・コンシューマ・グループを指定します。リソース・コンシューマ・グループは、処理のニーズに基づいてグループ化された同期または非同期セッションのセットです。ジョブ・クラスとリソース・コンシューマ・グループは、多対1の関係になります。ジョブ・クラスに関連付けられたリソース・コンシューマ・グループは、ジョブ・クラスに割り当てられるリソースを決定します。

ジョブ・クラスに関連付けられたリソース・コンシューマ・グループが削除された場合、ジョブ・クラスはデフォルトのリソース・コンシューマ・グループに関連付けられます。

リソース・コンシューマ・グループが指定されていない場合、ジョブ・クラスはデフォルトのリソース・コンシューマ・グループに関連付けられます。

ジョブ・クラスの作成時に指定のリソース・コンシューマ・グループが存在しない場合、エラーが発生します。

service

このクラス内のジョブが親和性を持つデータベース・サービスを指定します。つまりRAC環境では、このクラスのジョブは、特定のサービスに割り当てられたデータベース・インスタンスでのみ実行されます。

サービスは、リソース・コンシューマ・グループにマップできます。したがって、サービスを指定することで、ジョブに割り当てるリソースを制御することもできます。 詳細は、「DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING」を参照してください。 サービスがリソース・コンシューマ・グループにマップされている場合にresource_consumer_group属性とservice属性の両方を指定すると、resource_consumer_group属性の方が優先されます。

サービスを指定しない場合、ジョブ・クラスはデフォルトのサービスに属します。つまり、ジョブ・クラスにはサービスに対する親和性がなく、クラスタ内のどのデータベース・インスタンスでもジョブを実行できます。ジョブ・クラスが属するサービスが削除された場合、ジョブ・クラスはデフォルトのサービスに属します。

ジョブ・クラスの作成時に指定したサービスが存在しない場合、エラーが発生します。

logging_level

この属性は、ログ情報量を指定します。次のオプションから選択可能です。

  • DBMS_SCHEDULER.LOGGING_OFF

    このクラスのどのジョブに対してもログは実行されません。

  • DBMS_SCHEDULER.LOGGING_RUNS

    Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。これがデフォルトです。

  • DBMS_SCHEDULER.LOGGING_FAILED_RUNS

    Schedulerは、クラス内の失敗したジョブに対してのみログを実行します。

  • DBMS_SCHEDULER.LOGGING_FULL

    Schedulerは、ジョブの全実行記録に加えて、このクラスのすべてのジョブで実行されたすべての操作を記録します。 ジョブが作成、使用可能化、使用禁止化、変更(SET_ATTRIBUTEを使用)、停止されるたびに、ログにエントリが記録されます。

log_history

この属性は、このクラスのジョブに対するジョブ・ログ・エントリが保持される日数を制御します。これにより、ジョブ・ログが無制限に大きくなることを避けることができます。

有効値の範囲は、0から999です。0に設定すると、履歴は保持されません。 NULL(デフォルト)の場合、Scheduler属性のlog_historySET_SCHEDULER_ATTRIBUTEで設定可能)によって、保持する日数が設定されます。

comments

ジョブ・クラスのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。


使用上の注意

あるジョブ・クラスに属するジョブを作成するには、ジョブの所有者がそのジョブ・クラスのEXECUTE権限を持っている必要があります。このため、ジョブ・クラスを作成したら、そのジョブ・クラスに関するEXECUTE権限を発行して、ユーザーがそのクラスに属するジョブを作成できるようにする必要があります。ロールに対してもEXECUTE権限を付与できます。

ジョブ・クラスを作成するには、MANAGE SCHEDULERシステム権限が必要です。


CREATE_JOBSプロシージャ

このプロシージャは、複数のジョブ(通常または軽量)を作成し、1回のコールでそれぞれの引数に値を設定します。

構文

DBMS_SCHEDULER.CREATE_JOBS (
   job_array         IN JOB_ARRAY,
   commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表114-20 CREATE_JOBSプロシージャのパラメータ

パラメータ 説明

job_array

ジョブ定義の配列。 JOB_ARRAYおよびJOBデータ型については、「データ構造」を参照してください。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

  • STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻されます。このエラーが発生する前に正常に実行された作成操作はディスクにコミットされます。これがデフォルトです。

  • TRANSACTIONAL: このプロシージャは最初にエラーが発生した時点で戻されます。このエラーが発生する前に実行されたすべての操作がロールバックされます。

  • ABSORB_ERRORS: このプロシージャは、エラーを吸収してリスト内の残りのジョブの作成を試行します。また、正常に実行されたすべての作成操作をコミットします。


使用上の注意

このプロシージャは、1つのトランザクションのコンテキストで多くのジョブを作成できます。目的のパフォーマンスを実現するには、作成するジョブを十分なサイズのバッチにグループ化する必要があります。 小さい配列サイズを指定してCREATE_JOBSをコールしても、CREATE_JOBをジョブごとに1回コールする場合の速度とあまり変わりません。


CREATE_PROGRAMプロシージャ

このプロシージャは、プログラムを作成します。

構文

DBMS_SCHEDULER.CREATE_PROGRAM (
   program_name             IN VARCHAR2,
   program_type             IN VARCHAR2,
   program_action           IN VARCHAR2,
   number_of_arguments      IN PLS_INTEGER DEFAULT 0,
   enabled                  IN BOOLEAN DEFAULT FALSE,
   comments                 IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-21 CREATE_PROGRAMプロシージャのパラメータ

パラメータ 説明

program_name

この属性は、プログラムの一意の識別子を指定します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、プログラムはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。

program_type

この属性は、作成するプログラムのタイプを指定します。これを指定しない場合、エラーが発生します。 program_typeには、次の3つの値がサポートされています。

  • 'PLSQL_BLOCK'

    プログラムがPL/SQLブロックであることを示します。 ジョブまたはプログラムのタイプがPLSQL_BLOCKの場合、そのジョブまたはプログラムの引数はサポートされません。この場合、引数は0である必要があります。

  • 'STORED_PROCEDURE'

    プログラムが、PL/SQLプロシージャ、Javaストアド・プロシージャまたは外部Cサブプログラムであることを示します。プロシージャのみがサポートされ、戻り値を持つファンクションはサポートされません。INOUT引数またはOUT引数を持つPL/SQLプロシージャは、サポートされません。

  • 'EXECUTABLE'

    プログラムがデータベースの外部プログラムであることを示します。外部プログラムとは、オペレーティング・システムのコマンドラインから実行可能なものすべてのことです。AnyData引数は、タイプEXECUTABLEのジョブまたはプログラムではサポートされていません。

program_action

この属性は、プログラムのアクションを指定します。次のアクションを指定できます。

PL/SQLブロックでは、アクションはPL/SQLコードを実行します。これらのブロックはセミコロンで終わる必要があります。たとえば、my_proc();BEGIN my_proc(); END;またはDECLARE arg pls_integer := 10; BEGIN my_proc2(arg); END;です。Schedulerは独自のブロックでjob_actionをラップし、DECLARE ... BEGIN job_action END;を実行用にPL/SQLに渡します。これは一部の内部Scheduler変数を宣言するために行われます。PL/SQLコードには、event_messageを除く任意のSchedulerメタデータ属性を含めることができます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。使用可能なメタデータ属性の詳細は、表114-30を参照してください。

ストアド・プロシージャの場合は、このアクションはストアド・プロシージャの名前です。ジョブとは別のスキーマにプロシージャが存在する場合は、そのスキーマを指定する必要があります。

実行可能ファイルの場合、アクションは、フルパス名が含まれ、すべてのコマンドライン引数が除外されている外部実行可能ファイルの名前です。アクションが1つの疑問符('?')で始まっている場合、この疑問符は、ローカル・ジョブのOracleホーム・ディレクトリのパスまたはリモート・ジョブのSchedulerエージェント・ホームのパスに置き換えられます。アクションにアット・マーク('@')が含まれており、ジョブがローカルの場合、アット・マークは現行のOracleインスタンスのSIDに置き換えられます。

program_actionを指定しない場合、エラーが発生します。

無名ブロックの場合は、変数名のjob_namejob_ownerjob_startwindow_startwindow_endを使用して、特別なSchedulerのメタデータにアクセスできます。 これらの詳細は、define_metadata_argumentに関する情報を参照してください。

number_of_arguments

この属性は、プログラムが使用する引数の数を指定します。このパラメータを指定しない場合、デフォルトは0になります。プログラムは最大255個の引数を使用できます。

program_typePLSQL_BLOCKの場合、このフィールドは無視されます。

enabled

このフラグは、プログラムを使用可能で作成するかどうかを指定します。このフラグをTRUEに設定した場合、妥当性チェックが実行され、すべてのチェックに成功すると、プログラムはENABLEDで作成されます。デフォルトでは、このフラグはFALSEに設定されており、プログラムは使用可能で作成されません。ENABLEプロシージャをコールして、プログラムを使用する前に使用可能にすることもできます。

comments

プログラムのコメントです。デフォルトでは、この属性はNULLです。


使用上の注意

ユーザー各自のスキーマでプログラムを作成するには、CREATE JOB権限を持っている必要があります。CREATE ANY JOB権限を持っているユーザーは、すべてのスキーマでプログラムを作成できます。デフォルトでは、プログラムは使用禁止の状態で作成されます(使用可能フィールドがTRUEに設定されている場合は、この限りではありません)。プログラムが使用可能になるまでは、ジョブによって実行されることはありません。

他のユーザーがこのプログラムを使用するには、EXECUTE権限が必要です。このため、プログラムを作成したら、EXECUTE権限を付与する必要があります。


CREATE_SCHEDULEプロシージャ

このプロシージャは、スケジュールを作成します。

構文

DBMS_SCHEDULER.CREATE_SCHEDULE (
   schedule_name          IN VARCHAR2,
   start_date             IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
   repeat_interval        IN VARCHAR2,
   end_date               IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
   comments               IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-22 CREATE_SCHEDULEプロシージャのパラメータ

パラメータ 説明

schedule_name

この属性は、スケジュールの一意の識別子を指定します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、スケジュールはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。

start_date

この属性は、スケジュールが有効になる最初の日時を指定します。 繰返しスケジュールの場合、start_dateの値は参照日です。 この場合、スケジュールが開始するのはstart_dateではありません。スケジュールの開始は、指定した反復間隔によって決まります。スケジュールの最初のインスタンスの決定には、start_dateが使用されます。

以前にstart_dateを指定し、repeat_intervalに値を指定していない場合、スケジュールは無効です。 繰返しジョブまたは繰返しウィンドウでは、この属性に値が指定されていない場合、repeat_intervalからstart_dateを取り出すことができます。

start_dateがNULLの場合は、ジョブまたはウィンドウが使用可能になった日付が使用されます。 start_daterepeat_intervalの両方をNULLにすることはできません。

repeat_interval

スケジュールを繰り返す間隔を指定します。この間隔はカレンダ構文で表されます。詳細は、「カレンダ構文」を参照してください。PL/SQL式を使用して、指定のスケジュールの反復間隔を指定することはできません。

end_date

指定日時の後で、ジョブの実行およびウィンドウのオープンを停止する日時です。

end_dateの指定されていない非繰返しスケジュールは、無期限に有効です。

end_dateは、start_dateより後の日付である必要があります。当日か前の日付の場合、スケジュールを作成する際にエラーが発生します。

comments

スケジュールのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。


使用上の注意

このプロシージャでは、各自のスキーマでスケジュールを作成するにはCREATE JOB権限が、またはschema.schedule_nameを指定することによって他者のスキーマでスケジュールを作成するにはCREATE ANY JOB権限が必要です。スケジュールが作成されると、他のユーザーもそのスケジュールを使用できます。スケジュールは、PUBLICへのアクセス権を伴って作成されます。このため、スケジュールへのアクセス権限を明示的に付与する必要はありません。


CREATE_WINDOWプロシージャ

このプロシージャは、繰返しの時間枠(ウィンドウ)を作成してリソース・プランに関連付けます。このウィンドウを使用すると、ジョブをスケジュールし、関連付けられたリソース・プランの下でそのジョブを実行することができます。 ウィンドウはSYSスキーマ内に作成されます。

このプロシージャはオーバーロードされています。

構文

指定のスケジュール・オブジェクトを使用してウィンドウを作成する場合:

DBMS_SCHEDULER.CREATE_WINDOW (
   window_name             IN VARCHAR2,
   resource_plan           IN VARCHAR2,
   schedule_name           IN VARCHAR2,
   duration                IN INTERVAL DAY TO SECOND,
   window_priority         IN VARCHAR2 DEFAULT 'LOW',
   comments                IN VARCHAR2 DEFAULT NULL);

インライン・スケジュールを使用してウィンドウを作成する場合:

DBMS_SCHEDULER.CREATE_WINDOW (
   window_name             IN VARCHAR2,
   resource_plan           IN VARCHAR2,
   start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   repeat_interval         IN VARCHAR2,
   end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   duration                IN INTERVAL DAY TO SECOND,
   window_priority         IN VARCHAR2 DEFAULT 'LOW',
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-23 CREATE_WINDOWプロシージャのパラメータ

パラメータ 説明

window_name

この属性は、ウィンドウを一意に識別します。この名前はSQLネームスペースにおいて一意である必要があります。すべてのウィンドウはSYSスキーマ内にあります。したがって、ウィンドウ名の前に'SYS.'を付けることもできます。

resource_plan

この属性は、ウィンドウをオープンすると自動的にアクティブになるリソース・プランを指定します。ウィンドウがクローズすると、システムによって、適切なリソース・プランに切り替えられます。このリソース・プランは、ほとんどの場合、ウィンドウがオープンする前に有効だったリソース・プランですが、別のウィンドウのリソース・プランにすることもできます。

1つのウィンドウに関連付けられるのは、1つのリソース・プランのみです。NULLまたは空文字列("")にも設定できます。NULLに設定すると、ウィンドウのオープン時に有効だったリソース・プランが、ウィンドウの継続時間中もそのまま有効になります。空文字列に設定すると、ウィンドウの継続時間中、リソース・マネージャは使用禁止になります。

ウィンドウが開いているときにリソース・プランが削除されても、このウィンドウの継続時間中のリソース割当てには影響しません。

start_date

この属性は、ウィンドウのオープンがスケジュールされている最初の日時を指定します。 start_dateで指定された値が過去の日付か、または指定されていない場合は、ウィンドウは作成されるとすぐにオープンされます。

カレンダ式を使用して反復間隔を指定する繰返しウィンドウの場合、start_dateの値は参照日になります。 ウィンドウを最初にオープンする日付は、指定した反復間隔およびstart_dateの値によって決まります。

duration

ウィンドウをオープンする時間長を指定します。たとえば'interval '5' hour'は5時間です。この属性にデフォルト値はありません。このため、ウィンドウの作成時にこの値を指定しないと、エラーが発生します。継続時間には日から秒までの時間隔型があり、範囲は1分から99日です。

schedule_name

ウィンドウに関連付けるスケジュールの名前です。

repeat_interval

ウィンドウを繰り返す間隔を指定します。この間隔はSchedulerのカレンダ構文で表されます。詳細は、「カレンダ構文」を参照してください。

PL/SQL式を使用して、ウィンドウの反復間隔を指定することはできません。

指定した式は、ウィンドウの次回のオープンを決定するために評価されます。 repeat_intervalを指定しない場合、ウィンドウは指定した開始日に1回だけオープンされます。

end_date

ウィンドウがクローズする日時を指定します。 end_dateの値に達すると、ウィンドウは使用禁止になります。 *_SCHEDULER_WINDOWSビューで、ウィンドウの使用可能フラグがFALSEに設定されます。

end_dateに値を指定しない非繰返しウィンドウの場合は、ウィンドウの継続時間中に1回だけオープンされます。 繰返しウィンドウの場合は、end_dateを指定しないと、ウィンドウは無期限に繰り返されます。

end_dateは、start_dateより後の日付である必要があります。当日か前の日付の場合、ウィンドウを作成する際にエラーが発生します。

window_priority

2つのウィンドウがオーバーラップした場合のみ使用されます。一度に1つのウィンドウしか有効にできないため、オープンするウィンドウを決定するためにウィンドウの優先順位が使用されます。使用可能な値は、'HIGH'と'LOW'の2つです。優先順位の高いウィンドウは、低いウィンドウに優先します。これは、優先順位の低いウィンドウが高いウィンドウとオーバーラップした場合、優先順位の低いウィンドウはオープンされないことを意味します。デフォルトでは、ウィンドウは優先順位が'LOW'で作成されます。

comments

ウィンドウのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。


使用上の注意

ウィンドウを作成するには、MANAGE SCHEDULER権限が必要です。

Schedulerウィンドウは、スケジュールに基づいてリソース・プランを自動的に切り替えるために使用される重要なメカニズムです。ALTER SYSTEM SET RESOURCE_MANAGER_PLAN文またはDBMS_RESOURCE_MANAGER.SWITCH_PLANパッケージ・プロシージャを使用すると、リソース・プランを手動でアクティブにすることもできます。また、これらの手動による方法のいずれを使用しても、Schedulerウィンドウによるリソース・プランの切替えを使用禁止にできます。 詳細は、『Oracle Database管理者ガイド』および「SWITCH_PLANプロシージャ」を参照してください。


CREATE_WINDOW_GROUPプロシージャ

このプロシージャは、新しいウィンドウ・グループを作成します。 ウィンドウ・グループは、Schedulerウィンドウのリストで定義します。 ウィンドウ・グループは、ジョブ・スケジュールとして割り当てることができます。 グループのいずれかのウィンドウがアクティブになると、ジョブが実行されます。

ウィンドウ・グループはSYSスキーマで作成します。

構文

DBMS_SCHEDULER.CREATE_WINDOW_GROUP (
   group_name            IN VARCHAR2,
   window_list           IN VARCHAR2 DEFAULT NULL,
   comments              IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-24 CREATE_WINDOW_GROUPプロシージャのパラメータ

パラメータ 説明

group_name

ウィンドウ・グループの名前。

window_list

ウィンドウ・グループに割り当てられたウィンドウのリスト。存在しないウィンドウを指定した場合は、エラーが生成され、ウィンドウ・グループは作成されません。

ADD_WINDOW_GROUP_MEMBERプロシージャを使用してウィンドウを追加することもできます。ウィンドウ・グループは、他のウィンドウ・グループのメンバーになれません。

NULLを設定することもできます。

comments

ウィンドウ・グループのコメント。


使用上の注意

ウィンドウ・グループを作成するには、MANAGE SCHEDULER権限が必要です。ウィンドウ・グループは、ウィンドウと同様に、PUBLICへのアクセス権を伴って作成されるため、ウィンドウ・グループへのアクセス権限は必要ありません。

ウィンドウ・グループに、他のウィンドウ・グループを含めることはできません。


DEFINE_ANYDATA_ARGUMENTプロシージャ

このプロシージャは、値が複合型で、ANYDATAオブジェクト内でカプセル化する必要のあるプログラム引数の名前またはデフォルト値を定義します。このプログラムを参照するジョブによって、デフォルト値を上書きできます。

構文

DBMS_SCHEDULER.DEFINE_ANYDATA_ARGUMENT (
   program_name            IN VARCHAR2,
   argument_position       IN PLS_INTEGER,
   argument_name           IN VARCHAR2 DEFAULT NULL,
   argument_type           IN VARCHAR2,
   default_value           IN SYS.ANYDATA,
   out_argument            IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-25 DEFINE_ANYDATA_ARGUMENTプロシージャのパラメータ

パラメータ 説明

program_name

変更するプログラムの名前。この名前のプログラムが存在する必要があります。

argument_position

実行可能ファイルに渡される際の引数の位置。引数の位置として指定できる値は、1から、そのプログラムに指定されたnumber_of_argumentsの値までです。その位置に定義された引数を置き換えるため、この値は一意に指定する必要があります。

argument_name

引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。 名前を割り当てた場合は、その名前をSET_JOB_ANYDATA_VALUEプロシージャなどの他のパッケージ・プロシージャでも使用できます。

argument_type

定義する引数のデータ型。この属性は、Schedulerによって検証または使用されません。引数に割り当てる値を決定する際に、プログラムのユーザーによってのみ使用されます。

default_value

AnyDataオブジェクト内でカプセル化された引数に割り当てられるデフォルト値。これはオプションです。

out_argument

このパラメータは将来使用するために予約されています。この値はFALSEに設定してください。


使用上の注意

1からnumber_of_arguments値までのすべてのプログラム引数は、プログラムが使用可能になる前に定義しておく必要があります。このプロシージャの引数のデフォルト値が定義されていない場合は、ジョブで値を定義する必要があります。

プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を定義できます。


DEFINE_CHAIN_EVENT_STEPプロシージャ

このプロシージャは、チェーン・ステップを追加または置換し、イベント・スケジュールまたはインライン・イベントに関連付けます。このステップは、実行中のチェーン内で開始されると、指定されたイベントが発生するまで完了しません。チェーンを使用可能にして使用するには、チェーン内のすべてのステップを定義しておく必要があります。ステップを定義する際は、そのステップに名前を付け、ステップの実行時の動作を指定します。同じ名前のステップがすでに存在する場合は、古いステップが新しいステップに置き換えられます。

構文

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP (
   chain_name              IN VARCHAR2,
   step_name               IN VARCHAR2,
   event_schedule_name     IN VARCHAR2,
   timeout                 IN INTERVAL DAY TO SECOND DEFAULT NULL);

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP (
   chain_name              IN VARCHAR2,
   step_name               IN VARCHAR2,
   event_condition         IN VARCHAR2,
   queue_spec              IN VARCHAR2,
   timeout                 IN INTERVAL DAY TO SECOND DEFAULT NULL);

パラメータ

表114-26 DEFINE_CHAIN_EVENT_STEPプロシージャのパラメータ

パラメータ 説明

chain_name

ステップが含まれているチェーンの名前。

step_name

ステップの名前。

event_schedule_name

ステップが待機するイベント・スケジュールの名前。

timeout

このパラメータは将来使用するために予約されています。

event_condition

「CREATE_EVENT_SCHEDULEプロシージャ」を参照してください。

queue_spec

「CREATE_EVENT_SCHEDULEプロシージャ」を参照してください。


使用上の注意

チェーン・ステップを定義するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTERオブジェクト権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


DEFINE_CHAIN_RULEプロシージャ

このプロシージャは、新しいルール(条件とアクションの組合せ)を既存のチェーンに追加します。この条件は、SQLまたはSchedulerチェーン条件構文を使用して表現され、アクションを実行するための前提条件を示します。アクションは、条件が満たされた場合に実行される動作を指定します。

実際のルール・オブジェクトは、チェーンが存在するスキーマにルールを格納するために作成されます。ルール名が指定されている場合は、その名前がルール・オブジェクトに付けられます。ルール名が指定されている場合に同じ名前のルールがチェーンのスキーマ内に存在すると、既存のルールが変更されます(チェーンのスキーマ以外のスキーマは指定できません)。 ルール名が指定されていない場合は、SCHED_RULE${N}の形式のルール名が生成されます。

構文

DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
   chain_name              IN VARCHAR2,
   condition               IN VARCHAR2,
   action                  IN VARCHAR2,
   rule_name               IN VARCHAR2 DEFAULT NULL,
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-27 DEFINE_CHAIN_RULEプロシージャのパラメータ

パラメータ 説明

chain_name

変更するチェーンの名前。

condition

SQLまたはSchedulerチェーン条件構文を使用して表現したブール式。(Schedulerチェーン条件構文については後述)。アクションを実行するには、式の評価結果がTRUEになる必要があります。

条件をSQLで表現する場合は、SELECT文のWHERE句構文を使用する必要があります。バインド変数としてチェーン・ステップ名を使用すると、チェーン・ステップ属性を参照できます。 バインド変数構文は、:step_name.attributeです(step_nameは、入力したオブジェクトを参照します)。 使用可能な属性は、completedstatestart_dateend_dateerror_codeおよびdurationです。 state属性に指定可能な値には、'NOT_STARTED'、'SCHEDULED'、'RUNNING'、'PAUSED'、'STALLED'、'SUCCEEDED'、'FAILED''STOPPED'などがあります。ステップの状態が'SUCCEEDED''FAILED'または'STOPPED'の場合、そのcompleted属性は'TRUE'に設定されます。それ以外の場合、completed'FALSE'に設定されます。

チェーンを開始するには、評価結果がTRUEになるルールがすべてのチェーンに含まれている必要があります。 このために、チェーン条件構文を使用する場合は'TRUE'、SQL構文を使用する場合は'1=1'を条件として含むルールを使用できます。

action

ルールの評価結果がTRUEの場合に実行されるアクション。アクションは、1つ以上のキーワードと、オプションの値および遅延句で構成されている必要があります。

指定可能なアクションは、次のとおりです。

  • [AFTER delay_interval] START step_1[,step_2 ...]

  • STOP step_1[,step_2 ...]

  • END [{end_value|step_name.error_code}]

STARTアクションの最初に、遅延句を指定して、アクションを実行するまで待機する遅延間隔を指定できます。delay_intervalは、HH:MM:SSの書式の日時間隔です。

ENDアクションは、エラー・コードでチェーンを終了します。このエラー・コードは、指定したend_valueか、step_nameの完了時のエラー・コードのいずれかです。 デフォルトのエラー・コードは0(ゼロ)で、これはチェーンが正常に実行されたことを示します。

rule_name

作成するルールの名前。 rule_nameが指定されていない場合は、SCHED_RULE$_{N}の形式のルール名が生成されます。

comments

ルールの説明コメント(オプション)。これは、作成されるルール・オブジェクトに格納されます。


チェーン条件構文

Schedulerチェーン条件構文を使用すると、現行のチェーン内のステップの状態およびエラー・コードを使用して条件を簡単に作成できます。次に、使用可能な構成要素を示します。これらは、すべてブール式です。

TRUE
FALSE
stepname [NOT] SUCCEEDED
stepname [NOT] FAILED
stepname [NOT] STOPPED
stepname [NOT] COMPLETED
stepname ERROR_CODE IN (integer, integer, integer ...)
stepname ERROR_CODE NOT IN (integer, integer, integer ...)
stepname ERROR_CODE = integer
stepname ERROR_CODE != integer
stepname ERROR_CODE <> integer
stepname ERROR_CODE > integer
stepname ERROR_CODE >= integer
stepname ERROR_CODE < integer
stepname ERROR_CODE <= integer

複雑な条件を作成する場合は、次のブール演算子を使用できます。

expression AND expression
expression OR expression
NOT (expression)

integerは、正または負のいずれも指定できます。順序付けを明確にしたり、適用する場合は、カッコを使用できます。NOT演算子には、カッコを使用する必要があります。

ステップの一部として実行されるPL/SQLコードでは、RAISE_APPLICATION_ERROR文を使用して、ステップのERROR_CODE値を設定できます。

使用上の注意

チェーン・ルールを定義するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。

チェーンを開始するルールおよび終了するルールを、それぞれ1つ以上定義する必要があります。 詳細は、『Oracle Database管理者ガイド』のチェーンへのルールの追加に関する項を参照してください。

次に、ルール条件およびルール・アクションの使用例を示します。

Schedulerチェーン条件構文を使用したルール条件

'step1 completed'
-- satisfied when step step1 has completed. (step1 completed is also TRUE when any
-- of the following are TRUE: step1 succeeded, step1 failed, step1 stopped.)

'step1 succeeded and step2 succeeded'
-- satisfied when steps step1 and step2 have both succeeded

'step1 error_code > 100'
-- satisfied when step step1 has failed with an error_code greater than 100

'step1 error_code IN (1, 3, 5, 7)'
-- satisfied when step step1 has failed with an error_code of 1, 3, 5, or 7

SQL構文を使用したルール条件

':step1.completed = ''TRUE'' AND :step1.end_date >SYSDATE-1/24'
--satisfied when step step1 completed less than an hour ago

':step1.duration > interval ''5'' minute'
-- satisfied when step step1 has completed and took longer than 5 minutes to complete

ルール・アクション

'AFTER 01:00:00 START step1, step2'
--After an hour start steps step1 and step2

'STOP step1'
--Stop step step1

END step4.error_code'
--End the chain with the error code that step step4 finished with. If step4 has not completed, the chain will be ended unsuccessfully with error code 27435.

'END' or 'END 0'
--End the chain successfully (with error_code 0)

'END 100'
--End the chain unsuccessfully with error code 100.

DEFINE_CHAIN_STEPプロシージャ

このプロシージャは、チェーン・ステップを追加または置換し、プログラムまたはネストしたチェーンに関連付けます。チェーン・ステップが開始されると、指定されたプログラムまたはチェーンが実行されます。 chain_name引数で指定した名前のステップがすでに存在している場合は、古いステップが新しいステップに置き換えられます。

チェーンの所有者は、ステップに関連付けられているプログラムまたはチェーンに対するEXECUTE権限を持っている必要があります。ステップでは、1つのみのプログラムまたはチェーンを実行できます。

構文

DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
   chain_name              IN VARCHAR2,
   step_name               IN VARCHAR2,
   program_name            IN VARCHAR2);

パラメータ

表114-28 DEFINE_CHAIN_STEPプロシージャのパラメータ

パラメータ 説明

chain_name

変更するチェーンの名前。

step_name

定義するステップの名前。同じ名前のステップがすでに存在する場合は、古いステップが新しいステップに置き換えられます。

program_name

このステップで実行するプログラムまたはチェーンの名前。チェーンの所有者は、このプログラムまたはチェーンに対するEXECUTE権限を持っている必要があります。


使用上の注意

チェーン・ステップを定義するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


DEFINE_METADATA_ARGUMENTプロシージャ

このプロシージャは、プログラムの特別なメタデータ引数を定義します。Schedulerでは、この引数によってSchedulerのメタデータをストアド・プロシージャなどの実行可能ファイルに渡すことができます。この引数を使用してジョブに値を設定することはできません。

構文

DBMS_SCHEDULER.DEFINE_METADATA_ARGUMENT (
  program_name            IN VARCHAR2,
  metadata_attribute      IN VARCHAR2,
  argument_position       IN PLS_INTEGER,
  argument_name           IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-29 DEFINE_METADATA_ARGUMENTプロシージャのパラメータ

パラメータ 説明

program_name

変更するプログラムの名前。

metadata_attribute

渡すメタデータ。 有効なメタデータ属性は、'job_name'、'job_subname'、'job_owner'、'job_start'、'window_start'、'window_end'および'event_message'です。

これらの属性の詳細は、表114-30を参照してください。

argument_position

実行可能ファイルに渡される際の引数の位置。 プログラムに指定されたnumber_of_argumentsを超える値は指定できません。その位置に定義された引数を置き換えるため、この値は一意に指定する必要があります。

argument_name

引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てた場合は、その名前を他のパッケージ・プロシージャでも使用できます。


表114-30 メタデータ属性

メタデータ属性 データ型 説明

job_name

VARCHAR2

現在実行中のジョブの名前。

job_subname

VARCHAR2

現在実行中のジョブのサブ名。 チェーン・ステップを実行中のジョブは、名前+サブ名の形式で一意に識別されます。ジョブがチェーンの一部でない場合は、NULLを指定します。

job_owner

VARCHAR2

現在実行中のジョブの所有者。

job_scheduled_start

TIMESTAMP WITH TIME ZONE

現在実行中のジョブのスケジュール上の開始時間。

job_start

TIMESTAMP WITH TIME ZONE

現在実行中のジョブの開始時間。

window_start

TIMESTAMP WITH TIME ZONE

ジョブがウィンドウによって開始された場合は、そのウィンドウがオープンした時間。

window_end

TIMESTAMP WITH TIME ZONE

ジョブがウィンドウによって開始された場合は、そのウィンドウのクローズがスケジュールされている時間。

event_message

(「説明」を参照)

イベント・ベースのジョブの場合は、ジョブを開始したイベントのメッセージ・コンテンツ。この属性のデータ型は、イベントで使用されるキューによって異なります。 キュー表のUSER_DATA列の型と同じ型になります。


使用上の注意

プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を定義できます。

event_messageを除くすべてのメタデータ属性は、ジョブのjob_action属性またはプログラムのprogram_action属性に入力するPL/SQLブロックでも使用できます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。


DEFINE_PROGRAM_ARGUMENTプロシージャ

このプロシージャは、プログラム引数の名前またはデフォルト値を定義します。プログラム引数のデフォルト値が定義されていない場合は、そのプログラムを参照するジョブで引数の値を指定する必要があります。(ジョブで、デフォルト値を上書きすることもできます。)

このプロシージャはオーバーロードされています。

構文

プログラム引数をデフォルト値を使用せずに定義する場合:

PROCEDURE define_program_argument(
   program_name            IN VARCHAR2,
   argument_position       IN PLS_INTEGER,
   argument_name           IN VARCHAR2 DEFAULT NULL,
   argument_type           IN VARCHAR2,
   out_argument            IN BOOLEAN DEFAULT FALSE);

プログラム引数をデフォルト値で定義する場合:

PROCEDURE define_program_argument(
   program_name            IN VARCHAR2,
   argument_position       IN PLS_INTEGER,
   argument_name           IN VARCHAR2 DEFAULT NULL,
   argument_type           IN VARCHAR2,
   default_value           IN VARCHAR2,
   out_argument            IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-31 DEFINE_PROGRAM_ARGUMENTプロシージャのパラメータ

パラメータ 説明

program_name

変更するプログラムの名前。この名前のプログラムが存在する必要があります。

argument_position

実行可能ファイルに渡される際の引数の位置。引数の位置として指定できる値は、1から、そのプログラムに指定されたnumber_of_argumentsの値までです。その位置に定義された引数を置き換えるため、この値は一意に指定する必要があります。

argument_name

引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。 名前を割り当てた場合は、その名前をSET_JOB_ARGUMENT_VALUEプロシージャなどの他のパッケージ・プロシージャでも使用できます。

argument_type

定義する引数のデータ型。この属性は、Schedulerによって検証または使用されません。引数に割り当てる値を決定する際に、プログラムのユーザーによってのみ使用されます。

default_value

ジョブによって何も指定されていない場合に、引数に割り当てられるデフォルト値。

out_argument

このパラメータは将来使用するために予約されています。この値はFALSEに設定してください。


使用上の注意

1からnumber_of_arguments値までのすべてのプログラム引数は、プログラムが使用可能になる前に定義しておく必要があります。このプロシージャの引数のデフォルト値が定義されていない場合は、ジョブで値を定義する必要があります。

プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を定義できます。


DISABLEプロシージャ

このプロシージャは、プログラム、ジョブ、チェーン、ウィンドウまたはウィンドウ・グループを使用禁止にします。

構文

DBMS_SCHEDULER.DISABLE (
   name              IN VARCHAR2,
   force             IN BOOLEAN DEFAULT FALSE,
   commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表114-32 DISABLEプロシージャのパラメータ

パラメータ 説明

name

使用禁止にするオブジェクトの名前。カンマ区切りリストを使用できます。

ジョブ・クラス名を指定すると、そのジョブ・クラスのすべてのジョブが使用禁止になります。ジョブ・クラスは使用禁止になりません。

ウィンドウ・グループ名を指定すると、ウィンドウ・グループが使用禁止になりますが、ウィンドウ・グループのメンバーであるウィンドウは使用禁止になりません。

force

依存関係を無視するかどうかを指定します。詳細は、「使用上の注意」を参照してください。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

  • STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻されます。このエラーが発生する前に正常に実行された使用禁止化操作はディスクにコミットされます。これがデフォルトです。

  • TRANSACTIONAL: この値は、ジョブを使用禁止にする場合にのみ設定できます。このプロシージャは最初にエラーが発生した時点で戻されます。このエラーが発生する前に実行されたすべての操作がロールバックされます。このタイプは、ジョブまたは一連のジョブを使用禁止にする場合にのみサポートされます。また、forceTRUEに設定した場合、このタイプはサポートされません。

  • ABSORB_ERRORS: この値は、ジョブを使用禁止にする場合にのみ設定できます。 このプロシージャは、エラーを吸収して残りのジョブの使用禁止化を試行し、正常に実行されたすべての使用禁止化操作をコミットします。このタイプは、ジョブまたは一連のジョブを使用禁止にする場合にのみサポートされます。


使用上の注意

すでに使用禁止になっているオブジェクトを使用禁止にしても、エラーは発生しません。DISABLEプロシージャは複数のSchedulerオブジェクトで使用されるため、ウィンドウおよびウィンドウ・グループを使用禁止にする場合は、前にSYSを入力する必要があります。

forceオプションの目的は、依存関係を示すことです。依存オブジェクトは変更されません。

ウィンドウまたはウィンドウ・グループでDISABLEを実行するには、MANAGE SCHEDULER権限が必要です。この権限のない場合は、使用禁止対象のオブジェクトの所有者であるか、そのオブジェクトのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。

ジョブ

ジョブを使用禁止にするとは、ジョブのメタデータが存在してもジョブを実行できず、ジョブ・コーディネータがこれらのジョブを処理対象として取得しないことを意味します。ジョブが使用禁止になると、ジョブ・キューのstatedisabledに変更されます。

forceFALSEに設定した場合でジョブが現在実行中の場合は、エラーが戻されます。

forceTRUEに設定した場合、ジョブは使用禁止になりますが、現在実行中のインスタンスは終了できます。

プログラム

プログラムが使用禁止になると、ステータスは使用禁止に変更されます。使用禁止プログラムとは、メタデータが存在しても、このプログラムを指定したジョブを実行できないことを意味します。

forceFALSEに設定した場合、プログラムがどのジョブからも参照されないようにする必要があります。参照された場合はエラーが発生します。

forceTRUEに設定した場合、このプログラムを指定したジョブは使用禁止になりませんが、このプログラムは無効であるため、実行時にエラーになります。

このプログラムを指定した実行中のジョブは、DISABLEコールの影響を受けずに続行できます。

プログラムが使用禁止の場合、プログラムに関するすべての引数には影響ありません。

ウィンドウ

ウィンドウを使用禁止にした場合、ウィンドウがオープンされないことを意味しますが、ウィンドウのメタデータは依然存在するため、再び使用可能に設定できます。

forceFALSEに設定した場合、ウィンドウがどのジョブからもオープンまたは参照されないようにする必要があります。オープンまたは参照された場合はエラーが発生します。

forceTRUEに設定した場合、オープンしているウィンドウを使用禁止にできますが、ウィンドウをクローズすることはできません。ウィンドウは、再び使用可能に設定されるまでオープンされません。

ウィンドウが使用禁止の場合、このウィンドウがスケジュールとして設定されているジョブを使用禁止にすることはできません。

ウィンドウ・グループ

ウィンドウ・グループを使用禁止にすると、このウィンドウ・グループがスケジュールとして設定されたジョブのうち現在実行中でないジョブは、メンバー・ウィンドウがオープンしても実行されません。ただし、ウィンドウ・グループのメンバー・ウィンドウがどれか1つスケジュールとして設定されているジョブは、実行されます。

ウィンドウ・グループのメタデータは依然存在するため、再び使用可能に設定できます。ウィンドウ・グループのメンバーは、オープンしたままであることに注意してください。

forceFALSEに設定した場合、ウィンドウ・グループに、ジョブによってオープンまたは参照されるメンバーが存在しないようにする必要があります。存在する場合は、エラーが発生します。

forceTRUEに設定すると、次のようになります。

ジョブのチェーン

チェーンを使用禁止にしても、チェーンのメタデータはそのまま存在しますが、そのメタデータを指定するジョブは実行できなくなります。これによって、不完全に指定されたチェーンが実行される危険性がなくなり、チェーンを安全に変更できます。forceFALSEに設定した場合は、チェーンがどのジョブからも参照されないようにする必要があります。参照された場合は、エラーが発生します。forceTRUEに設定した場合、このチェーンを指定したジョブは使用禁止になりませんが、実行時にエラーになります。このチェーンを指定した実行中のジョブは、DISABLEコールの影響を受けずに処理を完了できます。


DROP_CHAINプロシージャ

このプロシージャは、既存のチェーンを削除します。

構文

DBMS_SCHEDULER.DROP_CHAIN (
   chain_name              IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-33 DROP_CHAINプロシージャのパラメータ

パラメータ 説明

chain_name

削除するチェーンの名前。チェーンのカンマ区切りリストも使用できます。

force

forceFALSEに設定した場合は、チェーンがどのジョブからも参照されないようにする必要があります。参照された場合は、エラーが発生します。

forceTRUEに設定した場合、チェーンを指定するすべてのジョブは、チェーンが削除される前に使用禁止になります。このチェーンを指定する実行中のジョブは、チェーンが削除される前に停止されます。


使用上の注意

チェーンを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。

チェーンに関連付けられているすべてのステップが削除されます。チェーンの作成時にルール・セットが指定されていなかった場合は、チェーンに関連付けられている、自動的に作成されたルール・セットおよび評価コンテキストも削除されます。したがって、ユーザーはこの操作を行う権限が必要です。 詳細は、「DBMS_RULE_ADM.DROP_RULE_SETプロシージャ」および「DBMS_RULE_ADM.DROP_EVALUATION_CONTEXTプロシージャ」を参照してください。

forceFALSEに設定した場合は、すべてのジョブでこのチェーンを使用できません。forceTRUEに設定した場合は、このチェーンが削除される前に、このチェーンを使用するすべてのジョブが使用禁止になります(それらのジョブで実行中のものがある場合はすべて停止されます)。


DROP_CHAIN_RULEプロシージャ

このプロシージャは、既存のチェーンからルールを削除します。このルールに対応するルール・オブジェクトも削除されます。チェーンは使用禁止になりません。このルールを削除するとチェーンが無効になる場合は、まずチェーンを使用禁止にして、実行されないようにする必要があります。

構文

DBMS_SCHEDULER.DROP_CHAIN_RULE (
   chain_name              IN VARCHAR2,
   rule_name               IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-34 DROP_CHAIN_RULEプロシージャのパラメータ

パラメータ 説明

chain_name

変更するチェーンの名前。

rule_name

削除するルールの名前。

force

forceTRUEに設定すると、チェーンを実行中の場合でも削除操作は続行されます。実行中のチェーンは、停止または中断されません。forceFALSEに設定すると、チェーンの実行中はエラーが発生します。


使用上の注意

チェーン・ルールを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。

チェーン・ルールを削除すると、元のルール・データベース・オブジェクトも削除されるため、ユーザーは、そのルール・オブジェクトを削除する権限を持っている必要があります。 詳細は、「DBMS_RULE_ADM.DROP_RULEプロシージャ」を参照してください。


DROP_CHAIN_STEPプロシージャ

このプロシージャは、チェーン・ステップを削除します。このチェーン・ステップがチェーン・ルールで使用されている場合は、チェーンが使用禁止になります。

構文

DBMS_SCHEDULER.DROP_CHAIN_STEP (
   chain_name              IN VARCHAR2,
   step_name               IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-35 DROP_CHAIN_STEPプロシージャのパラメータ

パラメータ 説明

chain_name

変更するチェーンの名前。

step_name

削除するステップの名前。カンマ区切りリストを使用できます。

force

forceTRUEに設定すると、このチェーンを実行中の場合でも正常に処理が行われます。実行中のチェーンは、停止または中断されません。このチェーンの実行中にforceFALSEに設定すると、エラーが発生します。


使用上の注意

チェーン・ステップを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


DROP_CREDENTIALプロシージャ

このプロシージャは、資格証明を削除します。

構文

DBMS_SCHEDULER.DROP_CREDENTIAL (
   credential_name         IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-36 DROP_CREDENTIALプロシージャのパラメータ

パラメータ 説明

credential_name

削除する資格証明の名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。

force

FALSEに設定した場合、資格証明がどのジョブからも参照されないようにする必要があります。参照された場合は、エラーが発生します。TRUEに設定した場合、資格証明は、ジョブから参照されているかどうかに関係なく削除されます。資格証明を参照しているジョブは、存在していない資格証明を指すことになり、実行時にエラーをスローします。


使用上の注意

資格証明の所有者またはCREATE ANY JOBシステム権限を持つユーザーのみが資格証明を削除できます。

資格証明を参照している実行中のジョブは、このプロシージャの影響を受けることなく続行できます。


DROP_JOBプロシージャ

このプロシージャは、ジョブ・クラスの1つのジョブまたはすべてのジョブを削除します。 これにより、ジョブ・キューからジョブが削除され、ジョブのメタデータも削除されるため、*_SCHEDULER_JOBSビューで表示できなくなります。このため、ジョブはこれ以上実行されません。ジョブを削除すると、そのジョブに設定されたすべての引数値も削除されます。

構文

DBMS_SCHEDULER.DROP_JOB (
   job_name                IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE,
   commit_semantics        IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表114-37 DROP_JOBプロシージャのパラメータ

パラメータ 説明

job_name

ジョブまたはジョブ・クラスの名前。カンマ区切りリストを使用できます。ジョブ・クラスの場合は、SYSスキーマを指定する必要があります。

ジョブ・クラスの名前を指定すると、そのジョブ・クラスに属するジョブは削除されますが、ジョブ・クラス自体は削除されません。

force

forceFALSEに設定した場合で、コール時にジョブのインスタンスを実行中の場合、コール結果はエラーになります。

forceTRUEに設定した場合、まずSchedulerは実行中のジョブのインスタンスの停止を(forceフラグをFALSEに設定してSTOP_JOBコールを発行して)試み、それからジョブを削除します。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

  • STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻されます。このエラーが発生する前に正常に実行された削除操作はディスクにコミットされます。これがデフォルトです。

  • TRANSACTIONAL: このプロシージャは最初にエラーが発生した時点で戻されます。このエラーが発生する前に実行されたすべての操作がロールバックされます。forceTRUEに設定した場合、このタイプはサポートされません。

  • ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの削除を試行し、正常に実行されたすべての削除操作をコミットします。


使用上の注意

ジョブを削除するには、そのジョブに対するALTER権限が必要です(ジョブの所有者であるか、ジョブに対するALTERオブジェクト権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


DROP_JOB_CLASSプロシージャ

このプロシージャは、ジョブ・クラスを削除します。ジョブ・クラスの削除とは、そのジョブ・クラスのすべてのメタデータをデータベースから削除することです。

構文

DBMS_SCHEDULER.DROP_JOB_CLASS (
   job_class_name          IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-38 DROP_JOB_CLASSプロシージャのパラメータ

パラメータ 説明

job_class_name

ジョブ・クラスの名前。カンマ区切りリストを使用できます。

force

forceFALSEに設定した場合、削除対象のジョブによってクラスが参照されないようにする必要があります。参照された場合はエラーが発生します。

forceTRUEに設定すると、そのクラスに所属するジョブは使用禁止になり、クラスはデフォルト・クラスに設定されます。これに成功した場合のみクラスは削除されます。

そのジョブ・クラスに所属する実行中のジョブには影響しません。


使用上の注意

ジョブ・クラスを削除するには、MANAGE SCHEDULERシステム権限が必要です。


DROP_PROGRAMプロシージャ

このプロシージャは、プログラムを削除します。プログラムを削除すると、プログラムに関連する引数もすべて削除されます。

構文

DBMS_SCHEDULER.DROP_PROGRAM (
   program_name            IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-39 DROP_PROGRAMプロシージャのパラメータ

パラメータ 説明

program_name

削除するプログラムの名前。カンマ区切りリストを使用できます。

force

forceFALSEに設定した場合、プログラムがどのジョブからも参照されないようにする必要があります。参照された場合はエラーが発生します。

forceTRUEに設定した場合、そのプログラムを参照するすべてのジョブは、プログラムが削除される前に使用禁止になります。

このプログラムを指定した実行中のジョブは、DROP_PROGRAMコールの影響を受けずに続行できます。


使用上の注意

プログラムを削除するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラムを削除できます。


DROP_PROGRAM_ARGUMENTプロシージャ

このプロシージャは、プログラム引数を削除します。引数は、名前(指定されている場合)または位置のどちらでも指定できます。

このプロシージャはオーバーロードされています。

構文

位置を使用してプログラム引数を削除する場合:

DBMS_SCHEDULER.DROP_PROGRAM_ARGUMENT (
   program_name            IN VARCHAR2,
   argument_position       IN PLS_INTEGER);

名前を使用してプログラム引数を削除する場合:

DBMS_SCHEDULER.DROP_PROGRAM_ARGUMENT (
   program_name            IN VARCHAR2,
   argument_name           IN VARCHAR2);

パラメータ

表114-40 DROP_PROGRAM_ARGUMENTプロシージャのパラメータ

パラメータ 説明

program_name

変更するプログラムの名前。この名前のプログラムが存在する必要があります。

argument_name

削除する引数の名前。

argument_position

削除する引数の位置。


使用上の注意

プログラム引数を削除するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を削除できます。


DROP_SCHEDULEプロシージャ

このプロシージャは、スケジュールを削除します。

構文

DBMS_SCHEDULER.DROP_SCHEDULE (
   schedule_name    IN VARCHAR2,
   force            IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-41 DROP_SCHEDULEプロシージャのパラメータ

パラメータ 説明

schedule_name

スケジュールの名前。カンマ区切りリストを使用できます。

force

forceFALSEに設定した場合、スケジュールがどのジョブからもどのウィンドウからも参照されないようにする必要があります。参照された場合はエラーが発生します。

forceTRUEに設定した場合、このスケジュールを使用するすべてのジョブまたはウィンドウは、スケジュールが削除される前に使用禁止になります。

このスケジュールを指定した実行中のジョブおよびオープン中のウィンドウには影響しません。


使用上の注意

削除するスケジュールの所有者であるか、そのスケジュールのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。


DROP_WINDOWプロシージャ

このプロシージャは、ウィンドウを削除します。このウィンドウに関するすべてのメタデータが、データベースから削除されます。このウィンドウに対するすべての参照が、ウィンドウ・グループから削除されます。

構文

DBMS_SCHEDULER.DROP_WINDOW (
   window_name             IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-42 DROP_WINDOWプロシージャのパラメータ

パラメータ 説明

window_name

ウィンドウの名前。カンマ区切りリストを使用できます。

force

forceFALSEに設定した場合、ウィンドウがジョブによってオープンまたは参照されないようにする必要があります。オープンまたは参照された場合はエラーが発生します。

forceTRUEに設定した場合、ウィンドウは削除され、このウィンドウがスケジュールとして設定されているジョブは使用禁止になります。ただし、削除されたウィンドウがメンバーになっているウィンドウ・グループがスケジュールとして設定されているジョブは、使用禁止になりません。ウィンドウがオープンされると、Schedulerはまずそのウィンドウをクローズしてから削除しようと試みます。ウィンドウがクローズすると、通常のクローズ・ウィンドウ・ルールが適用されます。

このウィンドウがスケジュールとして設定されている実行中のジョブは、そのジョブのstop_on_window_closeフラグをTRUEに設定していない場合は続行できます。このフラグをTRUEに設定している場合は、ウィンドウを削除するとジョブも停止します。


使用上の注意

ウィンドウを削除するには、MANAGE SCHEDULER権限が必要です。


DROP_WINDOW_GROUPプロシージャ

このプロシージャは、ウィンドウ・グループを削除しますが、このウィンドウ・グループのメンバーであるウィンドウは削除しません。

構文

DBMS_SCHEDULER.DROP_WINDOW_GROUP (
   group_name              IN VARCHAR2
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-43 DROP_WINDOW_GROUPプロシージャのパラメータ

パラメータ 説明

group_name

ウィンドウ・グループの名前。

force

forceFALSEに設定した場合、ウィンドウ・グループがどのジョブからも参照されないようにする必要があります。参照された場合はエラーが発生します。

forceTRUEに設定した場合、ウィンドウ・グループは削除され、このウィンドウ・グループがスケジュールとして設定されているジョブは使用禁止になります。 このウィンドウ・グループがスケジュールとして設定されている実行中のジョブは、そのジョブのstop_on_window_closeフラグをTRUEに設定している場合でも、続行できます。

削除対象のウィンドウ・グループのメンバーがオープンしている場合でも、ウィンドウ・グループは削除可能です。


使用上の注意

このグループのメンバーであるすべてのウィンドウを削除し、かつウィンドウ・グループ自体は削除しない場合は、DROP_WINDOWプロシージャを使用して、ウィンドウ・グループの名前をコールに提供できます。

ウィンドウ・グループを削除するには、MANAGE SCHEDULER権限が必要です。


ENABLEプロシージャ

このプロシージャは、プログラム、ジョブ、チェーン、ウィンドウまたはウィンドウ・グループを使用可能にします。オブジェクトが使用可能である場合は、使用可能フラグはTRUEに設定されています。デフォルトでは、ジョブ、チェーンおよびプログラムは使用禁止で作成され、ウィンドウおよびウィンドウ・グループは使用可能で作成されます。

使用禁止になっていたジョブを使用可能にすると、Schedulerによりスケジュールに従ってジョブが自動的に実行されるようになります。

オブジェクトを使用可能にする前に、妥当性チェックが実行されます。チェックに失敗すると、オブジェクトは使用可能に設定されず、内容を説明するエラーが戻されます。このプロシージャは、オブジェクトがすでに使用可能である場合はエラーを戻しません。

構文

DBMS_SCHEDULER.ENABLE (
   name              IN VARCHAR2,
   commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表114-44 ENABLEプロシージャのパラメータ

パラメータ 説明

name

使用可能にするSchedulerオブジェクトの名前。名前のカンマ区切りリストを使用できます。

ジョブ・クラス名を指定すると、そのジョブ・クラスのすべてのジョブが使用可能になります。

ウィンドウ・グループ名を指定すると、ウィンドウ・グループが使用可能になりますが、ウィンドウ・グループのメンバーであるウィンドウは使用可能になりません。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

  • STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻されます。このエラーが発生する前に正常に実行された使用可能化操作はディスクにコミットされます。これがデフォルトです。

  • TRANSACTIONAL: この値は、ジョブを使用可能にする場合にのみ設定できます。このプロシージャは最初にエラーが発生した時点で戻されます。このエラーが発生する前に実行されたすべての操作がロールバックされます。このタイプは、ジョブまたは一連のジョブを使用可能にする場合にのみサポートされます。

  • ABSORB_ERRORS: この値は、ジョブを使用可能にする場合にのみ設定できます。 このプロシージャは、エラーを吸収して残りのジョブの使用可能化を試行し、正常に実行されたすべての使用可能化操作をコミットします。このタイプは、ジョブまたは一連のジョブを使用可能にする場合にのみサポートされます。


使用上の注意

ENABLEプロシージャは複数のSchedulerオブジェクトで使用されているため、ウィンドウまたはウィンドウ・グループを使用可能にする場合は、接頭辞としてSYSを入力する必要があります。

ウィンドウまたはウィンドウ・グループでENABLEを実行するには、MANAGE SCHEDULER権限が必要です。この権限のない場合は、使用可能にするオブジェクトの所有者であるか、そのオブジェクトのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。EXECUTABLEタイプのジョブの場合(またはEXECUTABLEタイプのプログラムを指定するジョブの場合)、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。


END_DETACHED_JOB_RUNプロシージャ

このプロシージャは、連結解除されたジョブの実行を終了します。 連結解除されたジョブとは、連結解除されたプログラム(detached属性がTRUEに設定されたプログラム)を指定するジョブのことです。 連結解除されたジョブの実行は、このプロシージャまたはSTOP_JOBプロシージャがコールされるまで終了しません。

構文

DBMS_SCHEDULER.END_DETACHED_JOB_RUN (
   job_name          IN VARCHAR2,
   error_number      IN PLS_INTEGER DEFAULT 0,
   additional_info   IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-45 END_DETACHED_JOB_RUNプロシージャのパラメータ

パラメータ 説明

job_name

終了するジョブの名前。 連結解除された実行中のジョブである必要があります。

error_number

0(ゼロ)の場合は、ジョブの実行に対して成功のログが記録されます。 0(ゼロ)以外の場合は、ジョブの実行に対してこのエラー番号と失敗のログが記録されます。 -1013の場合は、ジョブの実行に対して停止のログが記録されます。

additional_info

このテキストは、該当するジョブ実行の*_scheduler_job_run_detailsビューのadditional_info列に格納されます。


使用上の注意

このプロシージャを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。 CREATE ANY JOB権限を持っているユーザーは、連結解除されたすべてのジョブの実行を終了できます。


関連項目:

連結解除されたジョブの詳細は、『Oracle Database管理者ガイド』を参照してください。


EVALUATE_CALENDAR_STRINGプロシージャ

Schedulerのカレンダ構文を使用して、ジョブ、ウィンドウまたはスケジュールの反復間隔を定義できます。 このプロシージャはカレンダ式を評価し、ジョブまたはウィンドウの次の実行日時を表示します。この機能は、ジョブまたはウィンドウを実際にスケジュールする必要がなく、カレンダ文字列の正しい定義をテストできるため、非常に便利です。

また、このプロシージャを1回起動したときに戻されるnext_run_dateを、このプロシージャを次回起動するときのreturn_date_after引数として渡すことによって、反復間隔の複数のステップを取得するのに使用することもできます。

構文

DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
   calendar_string    IN  VARCHAR2,
   start_date         IN  TIMESTAMP WITH TIME ZONE,
   return_date_after  IN  TIMESTAMP WITH TIME ZONE,
   next_run_date      OUT TIMESTAMP WITH TIME ZONE);

パラメータ

表114-46 EVALUATE_CALENDAR_STRINGプロシージャのパラメータ

パラメータ 説明

calendar_string

評価するカレンダ文字列。この文字列は、「使用上の注意」で説明したカレンダ構文で指定する必要があります。

start_date

反復間隔が有効になる日時。カレンダ文字列に不足している特定の項目を記入するために使用することもできます。オプションでNULLを設定することもできます。

return_date_after

Schedulerはすべての有効な実行日を決定するのに十分な情報を、start_dateおよびカレンダ文字列から取得します。この引数を設定することにより、Schedulerはこのすべての一致した選択可能値の中からどれを戻すかを判断します。NULL値がこの引数に渡されると、Schedulerは自動的にその値としてsystimestampを使用します。

next_run_date

return_date_after引数に値が渡された後に発生するカレンダ文字列および開始日に一致する、最初のタイムスタンプ。


次に示すコードの一部は、特定のカレンダ文字列を使用して、ジョブが実行される次の5日分の日付を決定するために使用できます。

SET SERVEROUTPUT ON;
ALTER SESSION set NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
Session altered.

DECLARE
start_date        TIMESTAMP;
return_date_after TIMESTAMP;
next_run_date     TIMESTAMP;
BEGIN
start_date :=
  to_timestamp_tz('01-JAN-2003 10:00:00','DD-MON-YYYY HH24:MI:SS');
return_date_after := start_date;
FOR i IN 1..5 LOOP
  DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING(
    'FREQ=DAILY;BYHOUR=9;BYMINUTE=30;BYDAY=MON,TUE,WED,THU,FRI',
    start_date, return_date_after, next_run_date);
DBMS_OUTPUT.PUT_LINE('next_run_date: ' || next_run_date);
return_date_after := next_run_date;
END LOOP;
END;
/

next_run_date: 02-JAN-03 09.30.00.000000 AM
next_run_date: 03-JAN-03 09.30.00.000000 AM
next_run_date: 06-JAN-03 09.30.00.000000 AM
next_run_date: 07-JAN-03 09.30.00.000000 AM
next_run_date: 08-JAN-03 09.30.00.000000 AM

PL/SQL procedure successfully completed.

使用上の注意

特に必要なScheduler権限はありません。


EVALUATE_RUNNING_CHAINプロシージャ

このプロシージャは、実行中のチェーンのルールを強制的に再評価し、条件を満たしているルールがある場合は適用します。引数として渡すジョブは、チェーンを指定し、実行中である必要があります。ジョブを実行中でない場合は、エラーが発生します。(ジョブは、RUN_JOBを使用して開始できます。)

チェーンのいずれかのステップ自体でチェーンを実行中の場合、別のEVALUATE_RUNNING_CHAINが、ネストされている実行中のチェーンごとに実行されます。

構文

DBMS_SCHEDULER.EVALUATE_RUNNING_CHAIN (
   job_name              IN VARCHAR2);

パラメータ

表114-47 EVALUATE_RUNNING_CHAINプロシージャのパラメータ

パラメータ 説明

job_name

ルールを再評価対象の実行中の(チェーンを指定している)ジョブの名前。


使用上の注意

ジョブに対してEVALUATE_RUNNING_CHAINを実行するには、そのジョブに対するALTER権限が必要です(ジョブの所有者であるか、ジョブに対するALTER権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。


注意:

チェーンは、次のタイミングで自動的に評価されます。
  • チェーン・ジョブの開始時

  • チェーン・ステップの完了時

  • チェーンのいずれかのイベント・ステップに関連付けられたイベントの発生時

ほとんどのチェーンの場合は、これで十分です。 EVALUATE_RUNNING_CHAINは、次の状況でのみ使用してください。

  • ALTER_RUNNING_CHAINプロシージャを使用して、実行中のチェーンを手動で操作した場合

  • チェーン・ルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合

これらの場合でも、チェーンの作成時にevaluation_interval属性を設定しておくと、EVALUATE_RUNNING_CHAINが不要になることがあります。



GENERATE_JOB_NAMEファンクション

このファンクションは、ジョブの一意の名前を戻します。 名前は{prefix}Nの形式で示され、Nは順序番号です。 接頭辞が指定されていない場合にデフォルトで生成される名前はJOB$_1JOB$_2JOB$_3などになります。接頭辞として'SCOTT'が指定されている場合の名前は、SCOTT1SCOTT2などになります。

構文

DBMS_SCHEDULER.GENERATE_JOB_NAME (
   prefix        IN VARCHAR2 DEFAULT 'JOB$_') RETURN VARCHAR2;

パラメータ

表114-48 GENERATE_JOB_NAMEファンクションのパラメータ

パラメータ 説明

prefix

ジョブ名の作成時に使用する接頭辞。


使用上の注意

接頭辞が明示的にNULLに設定された場合、順序番号のみの名前になります。 この順序番号のみの名前を使用する場合は、DBMS_SCHEDULERコールで使用するときに二重引用符で囲む必要があります。接頭辞は18文字以下でなければならず、数字で終わることはできません。

GENERATE_JOB_NAMEファンクションが同じジョブ名を2回戻すことはありませんが、戻された名前が既存のデータベース・オブジェクトの名前と一致する可能性があることに注意してください。

このファンクションを使用するために必要なScheduler権限は特にありません。


GET_ATTRIBUTEプロシージャ

このプロシージャは、Schedulerオブジェクトの属性値を取得します。 このプロシージャは、次のタイプの値を出力するためにオーバーロードされています(VARCHAR2TIMESTAMP WITH TIMEZONEBOOLEANPLS_INTEGER、およびINTERVAL DAY TO SECOND

構文

DBMS_SCHEDULER.GET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          OUT {VARCHAR2|TIMESTAMP WITH TIMEZONE|
                     PLS_INTEGER|BOOLEAN|INTERVAL DAY TO SECOND});

DBMS_SCHEDULER.GET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          OUT {VARCHAR2|TIMESTAMP WITH TIMEZONE|
                     PLS_INTEGER|BOOLEAN|INTERVAL DAY TO SECOND});
   value2         OUT VARCHAR2);

パラメータ

表114-49 GET_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

name

オブジェクトの名前。

attribute

取得する属性。

value

属性の既存値。

value2

ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。value2引数は、この2つ目の値(オプション)に使用します。


使用上の注意

ジョブ・クラスについてGET_ATTRIBUTEを実行するには、そのクラスのMANAGE SCHEDULER権限、またはEXECUTE権限を持っている必要があります。スケジュール、ウィンドウまたはウィンドウ・グループの場合は、権限は必要ありません。前述の権限がない場合は、そのオブジェクトの所有者であるか、そのオブジェクトのALTER権限またはEXECUTE権限があるか、またはCREATE ANY JOB権限を持っている必要があります。


GET_FILEプロシージャ

このプロシージャは、指定したホストのオペレーティング・システムのファイル・システムからファイルを取得します。ファイルが任意の宛先にコピーされるか、またはその内容がプロシージャの出力パラメータに戻されます。

このプロシージャは、同等機能のUTL_FILEプロシージャとは異なり、資格証明を使用して、Schedulerエージェントのみがインストールされている(Oracle Databaseはインストールされていない)リモート・ホストからファイルを取得できます。

また、このプロシージャを使用して、資格証明に関連付けられている外部ジョブを実行するために標準出力またはエラー・テキストを取得できます。

構文

DBMS_SCHEDULER.GET_FILE (
   source_file                  IN VARCHAR2,
   source_host                  IN VARCHAR2,
   credential_name              IN VARCHAR2,
   file_contents                OUT {BLOB|CLOB});
DBMS_SCHEDULER.GET_FILE (
   source_file                  IN VARCHAR2,
   source_host                  IN VARCHAR2,
   credential_name              IN VARCHAR2,
   destination_file_name        IN VARCHAR2,
   destination_directory_object IN VARCHAR2,
   destination_permissions      IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-50 GET_FILEプロシージャのパラメータ

パラメータ 説明

source_file

オペレーティング・システムから取得するファイルの完全修飾パス名。ファイル名は、大/小文字が区別され、大文字には変換されません。ファイル名が疑問符('?')で始まっている場合、この疑問符は、ローカル・ホストからファイルを取得するときはOracleホームのパス、リモート・ホストからファイルを取得するときはSchedulerエージェント・ホームのパスに置き換えられます。

このパラメータの形式がexternal_log_id_stdoutの場合は、指定した外部ジョブ実行から標準出力が戻されます。 このパラメータの形式がexternal_log_id_stderrの場合は、指定した外部ジョブ実行からエラー・テキストが戻されます。 *_SCHEDULER_JOB_RUN_DETAILSビューのADDITIONAL_INFO列からexternal_log_idの値を取得します。 この列には名前/値ペアのセットが不確定な順序で含まれているため、external_log_id名前/値ペアのこの列を解析し、その値に_stdoutまたは_stderrを追加する必要があります。

外部ジョブには、資格証明が関連付けられている必要があります。 GET_FILEcredential_nameパラメータには、ジョブで使用される資格証明と同じ資格証明を指定する必要があります。また、source_hostパラメータは、ジョブのdestination属性と同じ値にする必要があります。

source_host

ファイルをリモート・ホストから取得する場合は、Schedulerエージェントのhost:portを指定する必要があります。 source_hostNULLまたは'localhost'に設定されている場合、ファイルはローカル・ホストのファイル・システムから取得されます。Schedulerエージェントのポート番号を確認するには、リモート・ホストのSchedulerエージェント・ホーム・ディレクトリにあるschagent.confファイルを参照します。

credential_name

ファイル・システムへのアクセスに使用する資格証明の名前。

file_contents

ファイルの内容は、この変数に戻されます。

destination_file_name

ファイルの内容は、指定したディレクトリ・オブジェクトのこのファイルに書き込まれます。

destination_directory_object

ファイルの内容は、このディレクトリ・オブジェクトで指定されたディレクトリに書き込まれます。コール元には、ディレクトリ・オブジェクトに対する権限が必要です。

destination_permissions

将来使用するために予約されています。


使用上の注意

コール元には、CREATE EXTERNAL JOBシステム権限および資格証明に対するEXECUTE権限が必要です。


GET_SCHEDULER_ATTRIBUTEプロシージャ

このプロシージャは、Scheduler属性の値を取得します。

構文

DBMS_SCHEDULER.GET_SCHEDULER_ATTRIBUTE (
   attribute      IN VARCHAR2,
   value          OUT VARCHAR2);

パラメータ

表114-51 GET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attribute

属性の名前。

value

属性の既存値。


使用上の注意

GET_SCHEDULER_ATTRIBUTEを実行するには、MANAGE SCHEDULER権限が必要です。

表114-52に、取得可能なScheduler属性を示します。 これらの属性の詳細は、表114-75および『Oracle Database管理者ガイド』のSchedulerの構成に関する項を参照してください。

表114-52 GET_SCHEDULER_ATTRIBUTEで取得可能なScheduler属性

Scheduler属性 説明

default_timezone

Schedulerで、反復間隔およびウィンドウに対して使用されるデフォルトのタイムゾーン。

log_history

ジョブおよびウィンドウのログの保存期間(日)。

max_job_slave_processes

Schedulerで開始可能なジョブ・スレーブ・プロセスの最大数。NULLの場合があります。

current_open_window

現在オープンしているウィンドウの名前。

event_expiry_time

Schedulerで生成され、Schedulerイベント・キューにエンキューされるイベントの有効期間(秒)。NULLの場合があります。



OPEN_WINDOWプロシージャ

このプロシージャは、スケジュールとは無関係にウィンドウをオープンします。ウィンドウがオープンすると、このウィンドウに関連付けられたリソース・プランがただちに有効になります。これは、指定した継続時間の間、または継続時間を指定していない場合はウィンドウの標準継続時間の間有効です。手動でオープンできるのは、使用可能なウィンドウのみです。

構文

DBMS_SCHEDULER.OPEN_WINDOW (
   window_name             IN VARCHAR2,
   duration                IN INTERVAL DAY TO SECOND,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表114-53 OPEN_WINDOWプロシージャのパラメータ

パラメータ 説明

window_name

ウィンドウの名前。

duration

ウィンドウの継続時間。日から秒までの時間隔型があります。NULLに設定すると、ウィンドウは、ウィンドウのメタデータで指定されている標準継続時間の間オープンします。

force

forceFALSEに設定した場合、すでにオープンしているウィンドウをオープンすると、エラーが発生します。

forceTRUEに設定すると、次のようになります。

すでにオープンしているウィンドウをオープンできます。 ウィンドウは、OPEN_WINDOWコマンドが発行されたときから、このコールで指定した継続期間中オープンします。これに関する例を示します。window1は4時間の継続時間で作成されています。すでに2時間の間オープンしています。 この時点で、OPEN_WINDOWコールを使用してwindow1を再オープンし、継続時間を指定しない場合、window1はさらにもう4時間オープンします。これは、このウィンドウがこの継続時間で作成されているためです。30分の継続時間を指定した場合は、ウィンドウは30分でクローズします。

Schedulerにより、その時点でオープンしているすべてのウィンドウが自動的にクローズされます(より優先順位の高いウィンドウもクローズされます)。この手動でオープンしたウィンドウの継続時間中は、Schedulerにより他のスケジュール・ウィンドウはオープンされません(より優先順位の高いウィンドウもオープンされません)。


使用上の注意

ウィンドウをオープンしたときに実行中のジョブがある場合、リソース・プランが切り替わることにより、それらのジョブに割り当てられたリソースが変更される可能性があります。

手動によるウィンドウのオープンは、通常のスケジュール・ウィンドウの実行には影響しません。ウィンドウの次のオープン時間は更新されず、通常のオープン・スケジュールによって決定されます。

手動でオープンしたウィンドウをクローズする場合で、クローズするときに他のウィンドウもある場合、どのウィンドウをオープンするかを決定するために、オーバーラップ・ウィンドウのルールが適用されます。

指定したリソース・プランが存在しないか、またはウィンドウによるリソース・プランの切替えが無効になっている(forceオプションが指定されたALTER SYSTEM文を使用している場合など)ため、ウィンドウによるリソース・プランの切替えに失敗した場合、その失敗はウィンドウ・ログに記録されます。

ウィンドウをオープンするには、MANAGE SCHEDULER権限が必要です。


PURGE_LOGプロシージャ

Schedulerはデフォルトでは、ジョブ・ログおよびウィンドウ・ログの30日前より古い行をすべて、自動的にパージします。 ジョブ・ログおよびウィンドウ・ログから余分な行をパージする場合は、PURGE_LOGプロシージャを使用します。

ジョブ・ログ表内の行でチェーンのステップに関連する行は、メインのチェーン・ジョブのエントリが(手動または自動で)パージされた場合にのみパージされます。

構文

DBMS_SCHEDULER.PURGE_LOG (
   log_history             IN PLS_INTEGER  DEFAULT 0,
   which_log               IN VARCHAR2     DEFAULT 'JOB_AND_WINDOW_LOG',
   job_name                IN VARCHAR2     DEFAULT NULL);

パラメータ

表114-54 PURGE_LOGプロシージャのパラメータ

パラメータ 説明

log_history

保持する履歴の日数を指定します。有効値の範囲は、0から999です。0に設定すると、履歴は保持されません。

which_log

ログのタイプを指定します。 which_logの有効な値は、job_logwindow_logおよびjob_and_window_logです。

job_name

ジョブ・ログからパージするジョブ固有のエントリを指定します。ジョブ名およびジョブ・クラスのカンマ区切りリストも使用できます。 job_nameNULL以外の値を設定した場合は必ず、which_log引数には暗黙的にジョブ・ログが含まれます。


使用上の注意

このプロシージャを実行するには、MANAGE SCHEDULER権限が必要です。

ジョブ・ログおよびウィンドウ・ログのすべての行を完全にパージします。

DBMS_SCHEDULER.PURGE_LOG();

5日前より古いウィンドウ・ログのすべての行をパージします。

DBMS_SCHEDULER.PURGE_LOG(5, 'window_log');

1日前より古いウィンドウ・ログのすべての行をパージし、さらにjobclass1のジョブに関連し、かつ1日前より古いジョブ・ログのすべての行をパージします。

DBMS_SCHEDULER.PURGE_LOG(1, 'job_and_window_log', 'sys.jobclass1');

PUT_FILEプロシージャ

このプロシージャは、指定したリモート・ホストまたはローカル・コンピュータのオペレーティング・システムのファイル・システムにファイルを保存します。 このプロシージャは、同等機能のUTL_FILEプロシージャとは異なり、資格証明を使用して、Schedulerエージェントのみがインストールされている(Oracle Databaseはインストールされていない)リモート・ホストにファイルを保存できます。

構文

DBMS_SCHEDULER.PUT_FILE (
   destination_file         IN VARCHAR2,
   destination_host         IN VARCHAR2,
   credential_name          IN VARCHAR2,
   file_contents            IN {BLOB|CLOB},
   destination_permissions  IN VARCHAR2 DEFAULT NULL);
DBMS_SCHEDULER.PUT_FILE (
   destination_file         IN VARCHAR2,
   destination_host         IN VARCHAR2,
   credential_name          IN VARCHAR2,
   source_file_name         IN VARCHAR2,
   source_directory_object  IN VARCHAR2,
   destination_permissions  IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-55 PUT_FILEプロシージャのパラメータ

パラメータ 説明

destination_file

オペレーティング・システムのファイル・システムに保存するファイルの完全修飾パス名。ファイル名は、大/小文字が区別されます。ファイル名が疑問符('?')で始まっている場合、この疑問符は、ローカル・ホストに保存するときはOracleホームのパス、リモート・ホストに保存するときはSchedulerエージェント・ホームへのパスに置き換えられます。

destination_host

NULLまたは'localhost'に設定されている場合、ファイルはローカル・コンピュータのファイル・システムに保存されます。リモート・ホストに保存する場合は、リモート・ホストのhost:portを含める必要があります。ここで、hostはリモート・ホストのホスト名またはIPアドレス、portはリモートのSchedulerエージェントがリスニングするポートです。リモートのSchedulerエージェントのポート番号を確認するには、リモート・ホストのSchedulerエージェント・ホーム・ディレクトリにあるschagent.confファイルを参照します。

credential_name

宛先ファイル・システムへのアクセスに使用する資格証明の名前。

file_contents

ファイルの内容は、この変数から読み取られます。

source_file_name

ファイルの内容は、このファイルから読み取られます。

source_directory_object

ソース・ファイルのパスを指定するディレクトリ・オブジェクト(source_file_nameが使用されている場合)。コール元には、ディレクトリ・オブジェクトに対する権限が必要です。

destination_permissions

将来使用するために予約されています。


使用上の注意

コール元には、CREATE EXTERNAL JOBシステム権限および資格証明に対するEXECUTE権限が必要です。


REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャ

このプロシージャは、Schedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEからユーザーをサブスクライブ解除します。

構文

DBMS_SCHEDULER.REMOVE_EVENT_QUEUE_SUBSCRIBER (
   subscriber_name         IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-56 REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ

パラメータ 説明

subscriber_name

サブスクリプションを削除するOracle Streams Advanced Queuing(AQ)エージェントの名前。NULLに設定すると、コール・ユーザーの名前が使用されます。


使用上の注意

エージェントは、サブスクライブ解除された後に削除されます。エージェントが存在しない場合、またはエージェントがSchedulerイベント・キューに現在サブスクライブされていない場合は、エラーが発生します。


REMOVE_WINDOW_GROUP_MEMBERプロシージャ

このプロシージャは、1つ以上のウィンドウを既存のウィンドウ・グループから削除します。

構文

DBMS_SCHEDULER.REMOVE_WINDOW_GROUP_MEMBER (
   group_name              IN VARCHAR2,
   window_list             IN VARCHAR2);

パラメータ

表114-57 REMOVE_WINDOW_GROUP_MEMBERプロシージャのパラメータ

パラメータ 説明

group_name

ウィンドウ・グループの名前。

window_list

ウィンドウの名前。


使用上の注意

指定したウィンドウのうち1つでも、無効なもの、存在しないもの、または指定グループのメンバーでないものがある場合、コールは失敗します。グループからウィンドウを削除するには、MANAGE SCHEDULER権限が必要です。

ウィンドウ・グループからオープン中のウィンドウを削除しても、このウィンドウがスケジュールとして設定されている実行中のジョブには影響しません。これは、ウィンドウがクローズする場合のみジョブが停止されるためです。


RESET_JOB_ARGUMENT_VALUEプロシージャ

このプロシージャは、以前にジョブの引数に設定された値をリセット(消去)します。

RESET_JOB_ARGUMENT_VALUEはオーバーロードされています。

構文

以前に設定したジョブの引数値を、引数の位置を使用して消去する場合:

DBMS_SCHEDULER.RESET_JOB_ARGUMENT_VALUE (
   job_name                IN VARCHAR2,
   argument_position       IN PLS_INTEGER);

以前に設定したジョブの引数値を、引数の名前を使用して消去する場合:

DBMS_SCHEDULER.RESET_JOB_ARGUMENT_VALUE (
   job_name                IN VARCHAR2,
   argument_name           IN VARCHAR2);

パラメータ

表114-58 RESET_JOB_ARGUMENT_VALUEプロシージャのパラメータ

パラメータ 説明

job_name

変更するジョブの名前。

argument_position

リセットするプログラム引数の位置。

argument_name

リセットするプログラム引数の名前。


使用上の注意

対応するプログラム引数にデフォルト値がない場合、このジョブは使用禁止になります。他のユーザーに所属するジョブのプログラム引数をリセットする場合は、そのジョブのALTER権限が必要です。引数は、位置または名前を使用して指定できます。

RESET_JOB_ARGUMENT_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数をリセットできます。


RUN_CHAINプロシージャ

このプロシージャは、1回のみ実行するジョブを、指定したジョブ名で作成して、ただちにチェーンまたはチェーンの一部を実行します。 job_nameが指定されていない場合は、RUN_CHAIN$_chainnameNの形式のジョブ名が生成されます(chainnameはチェーン名の最初の8文字、Nは整数です)。開始ステップのリストが指定されている場合は、それらのステップのみがチェーンの実行開始時に開始されます。リストにないステップ(通常は開始済のステップ)は、スキップされ、一時停止します(これは、それ以降のステップが実行されないようにするためです)。 start_stepsNULLに設定すると、通常どおりにチェーンが開始されます(初期評価が行われ、実行を開始するステップが確認されます)。

ステップの初期状態のリストが指定されている場合は、新しく作成されるチェーン・ジョブによって、リストされているすべてのステップが指定の状態に設定されてから、チェーン・ルールが評価され開始ステップが確認されます。(リスト内のステップは開始されません。)

構文

開始ステップのリストを使用してチェーンを実行する場合

DBMS_SCHEDULER.RUN_CHAIN (
   chain_name                IN VARCHAR2,
   start_steps               IN VARCHAR2,
   job_name                  IN VARCHAR2 DEFAULT NULL);

ステップの初期状態のリストを使用してチェーンを実行する場合

DBMS_SCHEDULER.RUN_CHAIN (
   chain_name               IN VARCHAR2,
   step_state_list          IN SYS.SCHEDULER$_STEP_TYPE_LIST,
   job_name                 IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-59 RUN_CHAINプロシージャのパラメータ

パラメータ 説明

chain_name

実行するチェーンの名前。

job_name

チェーンを実行するために作成するジョブの名前。

start_steps

チェーンの実行開始時に開始するステップのカンマ区切りリスト。

step_state_list

チェーン・ステップのリスト(各ステップに設定する初期状態(SUCCEEDEDまたはFAILED)付き)。

sys.scheduler$_step_typeの属性は次のように設定します。

step_name: ステップの名前。
step_type: 'SUCCEEDED'または'FAILED error_number'。

ここで、error_numberは、正または負の整数です。


使用上の注意

チェーンを実行するには、ユーザーのスキーマにジョブが作成される場合はCREATE JOB、それ以外の場合はCREATE ANY JOBが必要です。また、作成されるジョブの所有者には、チェーンの実行権限が必要です(チェーンの所有者であるか、チェーンに対するEXECUTE権限を持っているか、またはEXECUTE ANY PROGRAMシステム権限を持っている必要があります)。

次の例では、一部のチェーン・ステップの初期状態を指定して、チェーンを途中から開始する方法を示しています。

declare
  initial_step_states sys.scheduler$_step_type_list;
begin
  initial_step_states := sys.scheduler$_step_type_list(
    sys.scheduler$_step_type('step1', 'SUCCEEDED'),
    sys.scheduler$_step_type('step2', 'FAILED 27486'),
    sys.scheduler$_step_type('step3', 'SUCCEEDED'),
    sys.scheduler$_step_type('step5', 'SUCCEEDED'));
  dbms_scheduler.run_chain('my_chain', initial_step_states);
end;
/

RUN_JOBプロシージャ

このプロシージャは、ジョブをただちに実行します。

スケジュールに従ってジョブを実行する場合は、RUN_JOBをコールする必要はありません。 ジョブが使用可能である場合は、Schedulerにより自動的に実行されます。 通常のスケジュール以外でジョブを実行する場合に、RUN_JOBを使用します。

構文

DBMS_SCHEDULER.RUN_JOB (
   job_name                IN VARCHAR2,
   use_current_session     IN BOOLEAN DEFAULT TRUE);

パラメータ

表114-60 RUN_JOBプロシージャのパラメータ

パラメータ 説明

job_name

実行するジョブの名前。

use_current_session

プロシージャを起動した同じセッションで、ジョブを実行するかどうかを指定します。

use_current_sessionTRUEに設定した場合は、次のようになります。

  • ジョブは、RUN_JOBをコールしたユーザーとして実行されます。

  • コマンドラインでジョブをテストして、起こりうるエラーを確認できます。

  • run_countlast_start_datelast_run_durationおよびfailure_countは更新されません。

  • RUN_JOBは、通常のスケジュール・ジョブと並行して実行できます。

use_current_sessionFALSEに設定した場合は、次のようになります。

  • ジョブは、ジョブの所有者ユーザーとして実行されます。

  • エラー情報を確認するため、ジョブ・ログをチェックする必要があります。

  • run_countlast_start_datelast_run_durationおよびfailure_countは更新されます。

  • 通常のスケジュール・ジョブを実行中の場合、RUN_JOBを実行すると失敗します。


使用上の注意

ジョブが使用可能になっている必要はありません。ジョブが使用禁止になっている場合は、ジョブを実行する前に、次の妥当性チェックが行われます。

ジョブは2つの異なるモードで実行できます。1つは、現行のユーザーのセッションでの実行です。 この場合、このセッションでジョブが完了するまで、RUN_JOBへのコールはブロックされます。 ジョブの実行中に発生したエラーは、RUN_JOBプロシージャにエラーとして戻されます。もう一つは、ジョブを通常のジョブと同様にただちに実行することです。 この場合、RUN_JOBはすぐに戻り、ジョブはコーディネータに取得されて実行用のジョブ・スレーブに渡されます。ジョブの結果については、Schedulerのビューおよびログを参照する必要があります。

use_current_sessionTRUEに設定した場合、複数のユーザー・セッションで同時にRUN_JOBを使用できます。

チェーンを指定するジョブに対してRUN_JOBを使用する場合は、use_current_sessionFALSEに設定する必要があります。

RUN_JOBを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブを実行できます。


SET_AGENT_REGISTRATION_PASSプロシージャ

このプロシージャは、データベースのエージェント登録パスワードを設定します。データベースからエージェントにジョブを送信するには、Schedulerエージェントがデータベースに登録されている必要があります。エージェントは、登録時にこのパスワードを指定する必要があります。

構文

DBMS_SCHEDULER.SET_AGENT_REGISTRATION_PASS (
   registration_password   IN VARCHAR2,
   expiration_date         IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   max_uses                IN NUMBER DEFAULT NULL);

パラメータ

表114-61 SET_AGENT_REGISTRATION_PASSプロシージャのパラメータ

パラメータ 説明

registration_password

リモート・エージェントがデータベースに正常に登録するために指定する必要があるパスワード。NULLの場合、エージェントはデータベースに登録できなくなります。

expiration_date

NULL以外の値に設定した場合、この日付を過ぎると、registration_passwordは有効でなくなります。この日付を過ぎると、エージェントはデータベースに登録できなくなります。この値を過去の日付に設定することはできません。

max_uses

このパスワードで正常に実行できる登録の最大数。このパスワードで正常に実行された登録の数が最大数に達すると、エージェントはデータベースに登録できなくなります。この値を0または負の値に設定することはできません。NULLに設定すると、正常に実行された登録の数の制限はなくなります。


使用上の注意

悪用を防止するために、このパスワードは、指定した日付を過ぎたり、正常に実行された登録の数が最大数に達すると期限切れになるように設定できます。このプロシージャは、すでに設定されているパスワードを上書きします。このプロシージャを使用するには、MANAGE SCHEDULERシステム権限が必要です。

デフォルトでは、max_usesはNULLに設定されます。つまり、正常に実行された登録の数に制限はありません。

エージェントの登録ごとまたは既知のエージェントの登録ごとに、エージェント登録パスワードをリセットすることをお薦めします。また、新しいエージェントを登録しない場合は、このパスワードをNULLに設定することをお薦めします。


SET_ATTRIBUTEプロシージャ

このプロシージャは、オブジェクトの属性を変更します。 このプロシージャは、次のタイプの値を受け入れるためにオーバーロードされています(VARCHAR2TIMESTAMP WITH TIMEZONEBOOLEANPLS_INTEGER、およびINTERVAL DAY TO SECOND) 属性をNULLに設定するには、SET_ATTRIBUTE_NULLプロシージャを使用する必要があります。設定可能な属性は、変更するオブジェクトによって異なります。オブジェクト名以外のすべてのオブジェクトの属性を変更できます。

SET_ATTRIBUTEはオーバーロードされています。

構文

DBMS_SCHEDULER.SET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          IN {VARCHAR2|TIMESTAMP WITH TIMEZONE|
                      PLS_INTEGER|BOOLEAN|INTERVAL DAY TO SECOND});

DBMS_SCHEDULER.SET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          IN {VARCHAR2|TIMESTAMP WITH TIMEZONE|
                      PLS_INTEGER|BOOLEAN|INTERVAL DAY TO SECOND});
   value2         IN VARCHAR2 DEFAULT NULL);

パラメータ

表114-62 SET_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

name

オブジェクトの名前。

attribute

表114-63から表114-70までを参照してください。

value

属性に設定する新しい値。NULLは指定できません。 属性値をNULLに設定するには、SET_ATTRIBUTE_NULLプロシージャを使用します。

value2

ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。value2引数は、この2つ目の値(オプション)に使用します。


使用上の注意

オブジェクトが使用可能な場合にオブジェクトを変更するには、Schedulerはまずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。使用可能プロセスでエラーが発生した場合は、オブジェクトは使用可能に再設定されず、エラーが生成されます。

使用禁止の状態だったオブジェクトを変更した場合、そのオブジェクトは変更した後も使用禁止のままです。

ウィンドウ、ウィンドウ・グループまたはジョブ・クラスに対してSET_ATTRIBUTEを実行するには、MANAGE SCHEDULER権限が必要です。この権限のない場合は、変更対象のオブジェクトの所有者であるか、そのオブジェクトのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。

ジョブ

SET_ATTRIBUTEコールを行う際に実行中のジョブ・インスタンスがある場合、このインスタンスはこのコールによる影響は受けません。このプロシージャによる変更は、今後実行されるジョブに対してのみ反映されます。

ジョブの実行中にジョブのスケジュール属性が変更された場合、次のジョブを実行する時間は、新しいスケジュール属性を使用してスケジュールされます。 ジョブのスケジュール属性には、schedule_namestart_dateend_daterepeat_intervalなどがあります。

ジョブの実行中にジョブのプログラム属性を変更した場合、新しいプログラム属性は、次回ジョブを実行するときから有効になります。 ジョブのプログラム属性には、program_namejob_actionjob_typeおよびnumber_of_argumentsなどがあります。すでに設定されているジョブの引数値についても同様です。

ジョブに関するALTER権限をユーザーに付与すると、プログラム属性を除くそのジョブのすべての属性(program_namejob_typejob_actionprogram_actionおよびnumber_of_arguments)が変更可能になります。ただし、PL/SQL式を使用して、ジョブのスケジュールを指定することはできません。

データベースによって自動的に作成されたジョブは変更しないことをお薦めします。データベースによって作成されたジョブには、ジョブのビューでTRUEに設定された列SYSTEMがあります。

プログラム

プログラムを変更して、このプログラムを現在実行中のジョブで使用する場合は、変更前のプログラム定義を使用して実行が続行されます。新しいプログラム定義は、次回ジョブを実行するときから使用されます。

スケジュール

スケジュールを変更した場合、この変更は実行中のジョブおよびこのスケジュールを使用するオープン中のウィンドウには影響しません。この変更は、次回ジョブを実行するときまたはウィンドウをオープンするときからのみ有効になります。

ジョブ・クラス

デフォルトのジョブ・クラス以外のすべてのジョブ・クラスを変更できます。ジョブ・クラスを変更するには、MANAGE SCHEDULER権限が必要です。

ジョブ・クラスを変更した場合、そのクラスに属する実行中のジョブには影響しません。この変更は、今後実行されるジョブに対してのみ有効です。

ウィンドウ

ウィンドウを変更した場合、アクティブ・ウィンドウには影響しません。この変更は、次回ウィンドウをオープンするときからのみ有効になります。

リソース・プランを指定するウィンドウをオープンしたときに現行のリソース・プランがない場合、リソース・マネージャはその指定されたプランでアクティブになります。

ジョブの属性値

表114-63に、ジョブの属性値を示します。


注意:

この表に示す属性の詳細は、「CREATE_JOBプロシージャ」および「CREATE_JOBSプロシージャ」を参照してください。

表114-63 ジョブの属性値

名前 説明

auto_drop

この属性をTRUEに設定すると、ジョブは、完了するかまたは自動的に使用禁止になると自動的に削除されます。ジョブは、次の場合、完了したとみなされます。

  • ジョブの終了日(または終了予定日)を過ぎた場合。

  • max_runs回実行された場合。max_runsSET_ATTRIBUTEで設定されている必要があります。

  • 繰り返しジョブでないジョブが1回実行された場合。

ジョブは、max_failures回失敗すると、自動的に使用禁止になります。max_failuresSET_ATTRIBUTEで設定します。

この属性をFALSEに設定すると、ジョブは削除されず、ジョブのメタデータはDROP_JOBプロシージャで明示的に削除されるまで保持されます。

デフォルトでは、ジョブはauto_dropで作成され、TRUEに設定されます。

comments

コメント(オプション)。

credential_name

この属性は、外部ジョブの実行時に使用する資格証明を指定します。 destinationがNULLになっている場合にこの属性をNULL(デフォルト)に設定すると、優先(デフォルトの)資格証明が選択されます。 リモートの外部ジョブの場合、credential_nameにNULL以外の値を設定する必要があります。 ローカルの外部ジョブの優先資格証明の詳細は、『Oracle Database管理者ガイド』を参照してください。

database_role

この属性は、データベースがOracle Data Guard環境に組み込まれている場合に適用されます。この属性を'PRIMARY'に設定すると、データベースがプライマリ・データベースのロールに存在する場合にのみジョブが実行されます。'LOGICAL STANDBY'に設定すると、データベースがロジカル・スタンバイのロールに存在する場合にのみジョブが実行されます。デフォルトは、データベースがプライマリ・データベースの場合は'PRIMARY'、データベースがロジカル・スタンバイの場合は'LOGICAL STANDBY'です。

注意: 特定のホスト上のすべてのデータベース・ロールに対してジョブを実行する場合は、そのホストでそのジョブのコピーを2つ作成する必要があります。1つはdatabase_roleが'PRIMARY'のジョブ、もう1つはdatabase_roleが'LOGICAL STANDBY'のジョブです。

destination

この属性は、リモートの外部ジョブを実行するホストおよびポートを指定します。この属性の形式は、host:portになります。ここで、hostは宛先ホストのホスト名またはIPアドレス、portはそのホストでSchedulerエージェントがリスニングするポート番号です。デフォルトではNULLに設定されます。

end_date

ジョブの期限が切れる日時を指定します。この日時を過ぎると、ジョブは実行されなくなります。end_dateより後に、auto_dropTRUEの場合は、ジョブが削除されます。auto_dropFALSEの場合、ジョブは使用禁止になり、ジョブのSTATECOMPLETEDに設定されます。

end_dateに値が指定されていない場合、ジョブは無期限で繰り返されます。ただし、max_runsまたはmax_failuresが設定されている場合は、いずれかの値に達するとジョブは停止します。

end_dateの値は、start_dateの値よりも大きい必要があります。等しいか小さい場合、ジョブが使用可能になったときにエラーが発生します。

event_spec

この属性では2つの値を指定します。value引数にはイベント条件を指定し、value2引数にはキューの仕様を指定する必要があります。 これらの引数の指定方法の詳細は、CREATE_JOBプロシージャのevent_condition引数およびqueue_spec引数に関する説明を参照してください。

follow_default_timezone

TRUEの場合で、ジョブstart_dateがNULLのときは、default_timezone Scheduler属性を変更すると、このジョブが新しいタイムゾーンで実行されるように、Schedulerによってジョブの次の実行日時が再計算されます。たとえば、ジョブが古いタイムゾーンの午前2時に実行するように設定されていた場合は、新しいタイムゾーンの午前2時で実行されるようになります。(ジョブstart_dateがNULLでない場合、ジョブの実行日時のタイムゾーンは、常にstart_dateのタイムゾーンで指定されます。)FALSEの場合、default_timezone Scheduler属性が変更されても、ジョブの次の開始日時は再計算されません。古いタイムゾーンが新しいタイムゾーンより3時間早い場合、古いタイムゾーンの午前2時で実行されるようにスケジュールされているジョブは、新しいタイムゾーンの午前5時に実行されます。

(デフォルトのタイムゾーン名は、夏から冬への移行によっては変更されません。)

instance_id

Oracle Real Application Clusters環境でのみ有効。ジョブを実行するインスタンスを示します。

instance_stickiness

この属性は、Oracle Real Application Clusters(RAC)環境で稼働するデータベースにのみ使用します。デフォルトではTRUEに設定されます。 instance_stickinessTRUEに設定した場合、ジョブは最も軽い負荷でインスタンスの実行を開始し、この後Schedulerはジョブが最後に実行したインスタンスの実行を試みます。そのインスタンスがダウンしているか、オーバーロードされているため新しいジョブを長い間開始できない場合、別のインスタンスでそのジョブが実行されます。 実行間の間隔が長い場合は、instance_stickinessは無視され、ジョブはスティッキーでないジョブとして処理されます。

instance_stickinessFALSEに設定した場合、ジョブの各インスタンスは、最初に使用可能なインスタンスで実行されます。

RAC以外の環境ではインスタンスが1つしかないため、この属性は有用ではありません。

job_action

job_type属性に応じてジョブで実行されるアクション。 たとえば、job_typeが'STORED_PROCEDURE'の場合は、job_actionにストアド・プロシージャの名前を指定します。

job_class

このジョブに関連付けるクラス。

job_priority

この属性は、ジョブが属するクラス内におけるこのジョブの優先順位を指定します。1つのクラス内で複数のジョブが同時に実行されるスケジュールがされている場合、ジョブ・コーディネータがそのクラスからどのジョブを取得して実行するかは、ジョブの優先順位によって決定されます。この値の範囲は1から5で、1の場合は最初に実行するジョブとして取得されます。

ジョブの作成時にジョブの優先順位が指定されていない場合は、デフォルトの優先順位である3が割り当てられます。

job_type

このジョブのタイプ。 'PLSQL_BLOCK'、'STORED_PROCEDURE'、'EXECUTABLE'、'CHAIN'のいずれかを設定できます。

この値を設定する場合は、program_nameNULLに設定する必要があります。

job_weight

この属性は、経験豊かなユーザーがパラレル・テクノロジを使用する場合のみ使用します。ジョブでパラレル・テクノロジを使用する場合、この属性の値をジョブ内のSQLの並列度に設定できます。

job_weightの範囲は1から100で、デフォルトは1です。

logging_level

この属性は、ログ情報量を指定します。次のオプションから選択可能です。

DBMS_SCHEDULER.LOGGING_OFF

(デフォルト)このジョブに対してログは実行されません。 ただし、ジョブ・クラスのロギング・レベルが優先され、ジョブのログが実行される場合があります。

DBMS_SCHEDULER.LOGGING_FAILED_RUNS

Schedulerは、失敗したジョブに対してのみ失敗の理由とともにログを記録します。ジョブ・クラスのロギング・レベルの方が高い場合は、高い方のロギング・レベルが優先されます。

DBMS_SCHEDULER.LOGGING_RUNS

Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。ジョブ・クラスのロギング・レベルの方が高い場合は、高い方のロギング・レベルが優先されます。

DBMS_SCHEDULER.LOGGING_FULL

Schedulerは、ジョブの全実行記録に加えて、このジョブで実行されたすべての操作を記録します。これらの操作には、作成、使用可能化、使用禁止化、変更(SET_ATTRIBUTEを使用)、停止などが含まれます。

max_failures

この属性は、ジョブがスケジュール実行に連続何回失敗すると自動的に使用禁止になるかを指定します。 ジョブは一度使用禁止になると、その後は実行されず、*_SCHEDULER_JOBビューでSTATEBROKENに設定されます。

max_failuresの範囲は、1から1,000,000の整数です。デフォルトではNULLに設定されています。これは、ジョブの新しいインスタンスは、以前に失敗したインスタンス数に関係なく開始されることを意味します。

max_run_duration

この属性は、ジョブを実行できる最大許容時間を指定します。データ型は、INTERVAL DAY TO SECONDです。 この属性を0(ゼロ)以外およびNULL以外に設定した場合にジョブの継続時間がこの値を超えると、JOB_OVER_MAX_DURタイプのイベントが発生します。この場合、ジョブを続行するかどうかは、ユーザーのイベント・ハンドラで決定されます。

max_runs

この属性は、ジョブのスケジュール実行を行う最大連続回数を指定します。 max_runsに達すると、ジョブは使用禁止になり、STATEはCOMPLETEDに変更されます。

max_runsの範囲は、1から1,000,000の整数です。デフォルトではNULLに設定されています。これは、無期限に繰り返されるか、またはend_datemax_failuresに達するまで繰り返されることを意味します。

number_of_arguments

プログラムがインラインされている場合の引数の数。 この値を設定する場合は、program_nameNULLに設定する必要があります。

parallel_instances

これはブール属性です。この属性がTRUEに設定されている場合にイベントが発生すると、そのイベントを処理するために1回のみ実行する軽量ジョブが作成されます。このジョブは、完了後、削除されます。

この軽量ジョブは、いずれの*_SCHEDULER_JOBSビューにも表示されませんが、*_SCHEDULER_RUNNING_JOBSビューには表示されます。この軽量ジョブの名前は親ジョブと同じであり、親および兄弟と区別するためにサブ名が自動的に生成されます。

program_name

このジョブで使用するプログラム・オブジェクトの名前。 この名前を設定する場合は、job_actionjob_typeおよびnumber_of_argumentsNULLに設定する必要があります。

raise_events

この属性は、ジョブの実行中にイベントを発生させる必要がある段階をSchedulerに指示します。これはビットベクトルで、次のビットを0個以上セットできます。各ビットに、対応するパッケージ定数があります。

  • job_started CONSTANT PLS_INTEGER := 1

  • job_succeeded CONSTANT PLS_INTEGER := 2

  • job_failed CONSTANT PLS_INTEGER :=4

  • job_broken CONSTANT PLS_INTEGER :=8

  • job_completed CONSTANT PLS_INTEGER :=16

  • job_stopped CONSTANT PLS_INTEGER :=32

  • job_sch_lim_reached CONSTANT PLS_INTEGER :=64

  • job_disabled CONSTANT PLS_INTEGER :=128

  • job_chain_stalled CONSTANT PLS_INTEGER :=256

  • job_all_events CONSTANT PLS_INTEGER := 511

  • job_run_completed CONSTANT PLS_INTEGER := job_succeeded + job_failed + job_stopped

これらのイベント・タイプの詳細は、表114-64を参照してください。

repeat_interval

次に実行する日時を戻すPL/SQLファンクション、またはカレンダ構文式。この値を設定する場合は、schedule_nameNULLに設定する必要があります。詳細は、「カレンダ構文」を参照してください。

restartable

この属性は、ジョブが失敗したときに再実行できるかどうかを指定します。デフォルトでは、ジョブは再実行不可能でFALSEに設定されます。TRUEに設定されている場合は、実行中にジョブが失敗すると、ジョブは開始時点からもう一度実行されます。

チェーン・ジョブの場合、この属性をTRUEに設定すると、アプリケーションの失敗後、チェーンが最初から再開されます。この属性をFALSEに設定した場合またはデータベースでエラーが発生した場合、チェーンは、最後に実行中だったステップから再開されます。 この場合、そのステップのrestart_on_recovery属性によって、ステップが再開されるか、または停止のマークが付けられるかが決定されます。(停止のマークが付けられた場合、チェーンはルールを評価して続行されます。)

この属性をTRUEに設定すると、ジョブ内でデータがコミットされた場合など一部の状況で、データの不整合が発生する可能性があることに注意してください。

エラーによる再試行は、通常の実行としてカウントされません。ジョブが成功するか、6回再試行に失敗するまで、実行数または失敗数にはカウントされません。

Schedulerでは、restartable属性を使用して、通常のアプリケーション・エラーだけでなく、データベースに異常が発生した後についても、ジョブを再試行するかどうかを決定します。Schedulerではジョブを最大6回まで再試行します。1回目は1秒間待機し、その後はこの待機時間に対して試行回ごとに10を掛けた時間を待機します。

6回の再試行にすべて失敗すると、実行数および失敗数が1つずつ加算されます。ジョブがすぐに成功するか、または再試行時に成功すると、実行数が1つ加算されます。

Schedulerでは、次の場合にジョブの再試行を停止します。

  • ジョブの再試行時に成功した場合

  • 6回の再試行にすべて失敗した場合

  • 次回の通常のスケジュール・ジョブの実行後に、次回の再試行が発生する場合

次にスケジュールされた再試行が、繰返しジョブの次の通常のスケジュール実行時点を過ぎた後は、Schedulerはジョブを再試行しません。

schedule_limit

負荷の大きいシステムでは、ジョブはスケジュール時間どおりに開始しないことがあります。この属性を使用すると、ジョブ開始の遅延が指定した間隔よりも大きい場合は、Schedulerがジョブを開始しないように設定できます。この値の範囲は1分から99日です。たとえば、ジョブの開始が昼の12時に予定されていて、スケジュール限度が60分に設定されている場合、このジョブが午後1時までに実行されなかった場合はこのジョブは実行されません。

schedule_limitを指定しない場合は、実行するためのリソースが使用可能になり次第、ジョブは後から実行されます。デフォルトでは、この属性はNULLに設定されています。これは、ジョブがスケジュールされた時間の後ならいつでもジョブを実行できることを意味します。この属性によってスキップされたスケジュール・ジョブの実行は、ジョブの実行数および失敗数にはカウントされません。スキップされた実行を反映したジョブ・ログのエントリが作成されます。

schedule_name

このジョブのスケジュールとして使用する、スケジュール、ウィンドウまたはウィンドウ・グループの名前。 この値が設定されている場合、end_datestart_dateおよびrepeat_intervalはすべてNULLである必要があります。

start_date

このジョブが開始した元の日時、またはジョブの開始がスケジュールされている将来の日時。この値を設定する場合は、schedule_nameNULLに設定する必要があります。

stop_on_window_close

この属性は、ジョブのスケジュールがウィンドウまたはウィンドウ・グループである場合のみ使用されます。この属性をTRUEに設定した場合、関連付けられたウィンドウがクローズするとジョブが停止します。 ジョブは、forceをFALSEに設定したstop_jobプロシージャを使用して停止します。

デフォルトでは、stop_on_window_closeFALSEに設定されます。そのため、この属性を設定しない場合、ジョブはウィンドウがクローズした後も続行可能です。

ただし、ジョブは続行できますが、ウィンドウをクローズすると通常リソース・プランも変更されるため、ジョブのリソース割当ても変更される可能性があることに注意してください。


表114-64 Schedulerで発生するイベントのタイプ

イベント・タイプ 説明

job_all_events

イベントではなく、すべてのイベントを簡単に有効にするための定数です。

job_broken

ジョブ属性max_failuresで定義されている失敗回数を超えたため、ジョブは使用禁止になり、状態がBROKENに変更されました。

job_chain_stalled

チェーンを実行しているジョブの状態がCHAIN_STALLEDに変更されました。 実行中または実行がスケジュールされているステップがない場合にチェーンのevaluation_intervalNULLに設定すると、実行中のチェーンは停止状態になります。手動で操作を行わないかぎり、チェーンは続行されません。

job_completed

max_runsまたはend_dateに達したため、ジョブが終了しました。

job_disabled

SchedulerまたはSET_ATTRIBUTEへのコールによってジョブが使用禁止になりました。

job_failed

エラーを生成するか、または異常終了して、ジョブが失敗しました。

job_run_completed

ジョブの実行が、失敗、成功または停止しました。

job_sch_lim_reached

ジョブのスケジュール限度に達しました。 ジョブ開始の遅延時間がジョブ属性schedule_limitの値を超えたため、ジョブは開始されませんでした。

job_started

ジョブが開始しました。

job_stopped

STOP_JOBへのコールによって、ジョブが停止されました。

job_succeeded

ジョブが正常に完了しました。


プログラムの属性値

表114-65に、プログラムの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_PROGRAMプロシージャ」を参照してください。

表114-65 プログラムの属性値

名前 説明

comments

コメント(オプション)。プログラムの実行内容や、使用目的の詳細を説明します。

detached

TRUEの場合、プログラムは連結解除されたプログラムです。 連結解除されたジョブおよびプログラムの詳細は、『Oracle Database管理者ガイド』を参照してください。

number_of_arguments

プログラムによって起動されるストアド・プロシージャなどの実行可能ファイルに必要な引数の数。

program_action

program_type属性に応じてプログラムで実行されるアクション。 たとえば、program_typeが'STORED_PROCEDURE'の場合は、program_actionにストアド・プロシージャの名前を指定します。

program_type

プログラムのタイプ。 プログラム・タイプには'PLSQL_BLOCK'、'STORED_PROCEDURE'および'EXECUTABLE'がサポートされており、このいずれかを設定する必要があります。


ジョブ・クラスの属性値

表114-66に、ジョブ・クラスの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_JOB_CLASSプロシージャ」を参照してください。

表114-66 ジョブ・クラスの属性値

名前 説明

comments

クラスについてのコメントを指定します(オプション)。

log_history

この属性は、このクラスのジョブに対するジョブ・ログ・エントリが保持される日数を制御します。これにより、ジョブ・ログが無制限に大きくなることを避けることができます。

有効値の範囲は、0から999です。0に設定すると、履歴は保持されません。 NULLの場合、Scheduler属性のlog_historySET_SCHEDULER_ATTRIBUTEで設定可能)によって、保持する日数が設定されます。

logging_level

この属性は、ログ情報量を指定します。次のオプションから選択可能です。

  • DBMS_SCHEDULER.LOGGING_OFF

    このクラスのどのジョブに対してもログは実行されません。

  • DBMS_SCHEDULER.LOGGING_FAILED_RUNS

    Schedulerは、クラス内の失敗したジョブに対してのみ失敗した理由とともにログを記録します。

  • DBMS_SCHEDULER.LOGGING_RUNS

    Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。これがデフォルトです。

  • DBMS_SCHEDULER.LOGGING_FULL

    Schedulerは、ジョブの全実行記録に加えて、このクラスのすべてのジョブで実行されたすべての操作を記録します。 ジョブが作成、使用可能化、使用禁止化、変更(SET_ATTRIBUTEを使用)、停止されるたびに、ログにエントリが記録されます。

resource_consumer_group

クラスに関連付けるリソース・コンシューマ・グループ。クラス内のすべてのジョブがこのリソース・コンシューマ・グループの下で実行されます。 リソース・コンシューマ・グループおよびデータベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。

service

このジョブ・クラス内のジョブが親和性を持つデータベース・サービス。 サービスがリソース・コンシューマ・グループにマップされている場合にジョブ・クラスにresource_consumer_group属性とservice属性の両方を指定すると、resource_consumer_group属性の方が優先されます。


ウィンドウの属性値

表114-67に、ウィンドウの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_WINDOWプロシージャ」を参照してください。

表114-67 ウィンドウの属性値

名前 説明

comments

ウィンドウについてのコメント(オプション)。

duration

ウィンドウの継続時間。

end_date

ウィンドウを最後にオープンする日付。この値を設定する場合は、schedule_nameNULLに設定する必要があります。

repeat_interval

カレンダ構文を使用する文字列。PL/SQL日付ファンクションは使用できません。この値を設定する場合は、schedule_nameNULLに設定する必要があります。詳細は、「カレンダ構文」を参照してください。

resource_plan

ウィンドウに関連付けるリソース・プラン。ウィンドウがオープンすると、このリソース・プランに自動的に切り替わります。ウィンドウがクローズすると、元のリソース・プランがリストアされます。リソース・プランがforceオプションでアクティブに指定されている場合は、リソース・プランは切り替えられません。

1つのウィンドウに関連付けられるのは、1つのリソース・プランのみです。NULLまたは空文字列("")にも設定できます。NULLに設定すると、ウィンドウのオープン時に有効だったリソース・プランが、ウィンドウの継続時間中もそのまま有効になります。空文字列に設定すると、ウィンドウの継続時間中、リソース・マネージャは使用禁止になります。

schedule_name

このウィンドウで使用するスケジュールの名前。 この値が設定されている場合、start_dateend_dateおよびrepeat_intervalはすべてNULLである必要があります。

start_date

このウィンドウのオープンがスケジュールされている次の日時。この値を設定する場合は、schedule_nameNULLに設定する必要があります。

window_priority

ウィンドウの優先順位。'LOW'(デフォルト)または'HIGH'のいずれかである必要があります。


ウィンドウ・グループの属性値

表114-68に、ウィンドウ・グループの属性値の一覧を示します。

表114-68 ウィンドウ・グループの属性値

名前 説明

comments

ウィンドウ・グループについてのコメント(オプション)。


スケジュールの属性値

表114-69に、スケジュールの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_SCHEDULEプロシージャ」および「CREATE_CALENDAR_SCHEDULEプロシージャ」を参照してください。

表114-69 スケジュールの属性値

名前 説明

comments

コメント(オプション)。

end_date

スケジュールが指定される最終日時。

event_spec

この属性では2つの値を指定します。value引数にはイベント条件を指定し、value2引数にはキューの仕様を指定する必要があります。 これらの引数の指定方法の詳細は、CREATE_JOBプロシージャのevent_condition引数およびqueue_spec引数に関する説明を参照してください。

repeat_interval

カレンダ構文を使用する式。詳細は、「カレンダ構文」を参照してください。

source

データベースが実行されているホストの名前。リモート・エージェントでジョブ実行の詳細の送信先を認識するために使用されます。

start_date

カレンダ構文が使用する開始日時または参照日時。


チェーンの属性値

表114-70に、チェーンの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_CHAINプロシージャ」を参照してください。

表114-70 チェーンの属性値

名前 説明

comments

チェーンの目的を説明するコメント(オプション)。

evaluation_interval

NULL以外に設定すると、チェーンの評価が通常のタイミング(ジョブの開始時、ステップの終了時、またはイベント・ステップに関連付けられているイベントの着信時)のみでなく、この間隔でも定期的に行われます。

ほとんどのチェーンの場合は、通常の評価タイミングで十分です。大きいチェーンの評価ではCPUが集中的に使用されるため、この属性は、チェーンのルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合にのみ使用する必要があります。



SET_ATTRIBUTE_NULLプロシージャ

このプロシージャは、オブジェクトの属性をNULLに設定します。設定可能な属性は、変更するオブジェクトによって異なります。このオブジェクトが使用可能な場合は、まずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。オブジェクトを再度使用可能にできない場合、エラーが生成され、オブジェクトのステータスは使用禁止のままです。

構文

DBMS_SCHEDULER.SET_ATTRIBUTE_NULL (
   name              IN VARCHAR2,
   attribute         IN VARCHAR2);

パラメータ

表114-71 SET_ATTRIBUTE_NULLプロシージャのパラメータ

パラメータ 説明

name

オブジェクトの名前。

attribute

変更する属性。


使用上の注意

ウィンドウ、ウィンドウ・グループまたはジョブ・クラスに対してSET_ATTRIBUTE_NULLを実行するには、MANAGE SCHEDULER権限が必要です。この権限のない場合は、変更対象のオブジェクトの所有者であるか、そのオブジェクトのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。


SET_JOB_ANYDATA_VALUEプロシージャ

このプロシージャは、AnyDataオブジェクト内でカプセル化された、ジョブの関連プログラムの引数に値を設定します。この値は、プログラム引数に設定されたすべてのデフォルト値に優先されます。プログラム引数にはNULLを有効値として割り当てることができます。引数は、位置または名前を使用して指定できます。次の場合は、名前による指定のみが可能です。

Schedulerでは、引数のタイプ・チェックを一切行いません。

SET_JOB_ANYDATA_VALUEはオーバーロードされています。

構文

位置を使用してプログラム引数を設定する場合:

DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE (
   job_name                IN VARCHAR2,
   argument_position       IN PLS_INTEGER,
   argument_value          IN SYS.ANYDATA);

名前を使用してプログラム引数を設定する場合:

DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE (
   job_name                IN VARCHAR2,
   argument_name           IN VARCHAR2,
   argument_value          IN SYS.ANYDATA);

パラメータ

表114-72 SET_JOB_ANYDATA_VALUEプロシージャのパラメータ

パラメータ 説明

job_name

変更するジョブの名前。

argument_name

設定するプログラム引数の名前。

argument_position

設定するプログラム引数の位置。

argument_value

AnyDataオブジェクト内でカプセル化されたプログラム引数に割り当てられる新しい値。


使用上の注意

SET_JOB_ANYDATA_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数値を設定できます。

軽量ジョブではAnyData引数を取ることができないため、SET_JOB_ANYDATA_VALUEは軽量ジョブには適用されません。


SET_JOB_ARGUMENT_VALUEプロシージャ

このプロシージャは、ジョブの関連プログラムの引数に値を設定します。この値は、プログラム引数に設定されたすべてのデフォルト値に優先されます。プログラム引数にはNULLを有効値として割り当てることができます。引数は、位置または名前を使用して指定できます。次の場合は、名前による指定のみが可能です。

Schedulerでは、引数のタイプ・チェックを一切行いません。

SET_JOB_ARGUMENT_VALUEはオーバーロードされています。

構文

位置を使用して引数値を設定する場合:

DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
   job_name                IN VARCHAR2,
   argument_position       IN PLS_INTEGER,
   argument_value          IN VARCHAR2);

名前を使用して引数値を設定する場合:

DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
   job_name                IN VARCHAR2,
   argument_name           IN VARCHAR2,
   argument_value          IN VARCHAR2);

パラメータ

表114-73 SET_JOB_ARGUMENT_VALUEプロシージャのパラメータ

パラメータ 説明

job_name

変更するジョブの名前。

argument_name

設定するプログラム引数の名前。

argument_position

設定するプログラム引数の位置。

argument_value

プログラム引数に設定する新しい値。 VARCHAR以外の値を設定するには、SET_JOB_ANYDATA_ARGUMENT_VALUEプロシージャを使用します。


使用上の注意

SET_JOB_ARGUMENT_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数値を設定できます。

SET_JOB_ARGUMENT_VALUEは軽量ジョブの引数の設定に使用できます。ただし、その引数がVARCHAR2型の場合のみです。


SET_JOB_ATTRIBUTESプロシージャ

このプロシージャは、ジョブの属性を変更します。

構文

DBMS_SCHEDULER.SET_JOB_ATTRIBUTES (
   jobattr_array     IN JOBATTR_ARRAY,
   commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表114-74 SET_JOB_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

jobattr_array

ジョブ属性変更の配列。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

  • STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻されます。このエラーが発生する前に正常に実行された属性変更はディスクにコミットされます。これがデフォルトです。

  • TRANSACTIONAL: このプロシージャは最初にエラーが発生した時点で戻されます。このエラーが発生する前に実行されたすべての操作がロールバックされます。

  • ABSORB_ERRORS: このプロシージャは、エラーを吸収してリスト内の残りのジョブ属性変更を試行します。また、正常に実行されたすべての変更をコミットします。


使用上の注意

使用可能になっているジョブに対してSET_ATTRIBUTEをコールすると、ジョブが使用禁止となり、属性値が変更され、ジョブが再度使用可能になります。 SET_JOB_ATTRIBUTESは、1つのトランザクションのコンテキストで属性値を変更します。


SET_SCHEDULER_ATTRIBUTEプロシージャ

このプロシージャは、Scheduler属性の値を設定します。この設定はただちに有効になりますが、変更はすぐには表示されない場合があります。 設定可能な属性は、default_timezonemax_job_slave_processesおよびlog_historyです。

構文

DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE (
   attribute      IN VARCHAR2,
   value          IN VARCHAR2);

パラメータ

表114-75 SET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attribute

Scheduler属性の名前。有効な値は、次のとおりです。

  • default_timezone: この属性の設定は非常に重要です。 start_dateを設定せずにrepeat_intervalを指定する場合は必ず、反復間隔構文に適用する必要のあるタイムゾーンをSchedulerに知らせる必要があります。たとえば、反復間隔が次のように設定されている場合、

    "FREQ=DAILY;BYHOUR=22"
    

    ジョブは毎日午後10時に繰り返されますが、どのタイムゾーンの10時であるか不明です。 start_dateが指定されていないと、Schedulerはこのdefault_timezone属性からタイムゾーンを取得します。ジョブまたはウィンドウに夏時間調整を適用する場合、この属性に適切なリージョン名を設定する必要があります。たとえばデータベースがパリに存在する場合は、この属性を'Europe/Warsaw'に設定します。

    絶対オフセットを指定する場合は、夏時間調整は適用されません。たとえば、'-8:00'は、サンフランシスコでは半年のみ適用されます。この属性に値が指定されていない場合は、Schedulerではジョブまたはウィンドウが使用可能なときはsystimestampのタイムゾーンを使用します。これは常に絶対オフセットで、夏時間調整は適用されません。

  • log_history: この属性は、ジョブおよびウィンドウのログ・エントリが保持される日数を制御します。 これにより、ログが無制限に大きくなることを避けることができます。有効値の範囲は、0から999です。0に設定すると、履歴は保持されません。 デフォルトは30です。 この値は、ジョブ・クラスのlog_history属性に値を設定することで、ジョブ・クラス・レベルの値で上書きできます。

  • max_job_slave_processes: 特定のシステム構成およびロードに対するスレーブ・プロセスの最大数を設定できます。デフォルト値はNULLで、有効値の範囲は1から999です。

    Schedulerでは特定のシステム構成およびロードに対するスレーブ・プロセスの最適数を自動的に決定しますが、このとき最適数に一定の限度を設定する必要のある場合があります。その場合、この属性を設定します。

    max_job_slave_processesで設定した値が真の最大値ですが、Schedulerによってこの数のスレーブが開始されるわけではありません。たとえば、この属性を10に設定しても、Schedulerによって3つ以上のスレーブ・プロセスを開始すべきでないと判断される場合もあります。ただし、Schedulerでは15のプロセスを開始すると判断したが、この値が10に設定されている場合は、11以上のプロセスが開始されることはありません。

  • event_expiry_time: Schedulerによって生成されたイベント(SchedulerによってSchedulerイベント・キューにエンキューされたメッセージ)が期限切れになる(キューから自動的にパージされる)までの時間(秒)。NULLに設定すると、Schedulerで生成されたイベントは24時間後に期限切れになります。

value

属性の新しい値。


使用上の注意

SET_SCHEDULER_ATTRIBUTEを実行するには、MANAGE SCHEDULER権限が必要です。


STOP_JOBプロシージャ

このプロシージャは、現在実行中のジョブ、またはジョブ・クラス内のすべてのジョブを停止します。ジョブのすべてのインスタンスが停止します。ジョブの停止後、1回かぎりのジョブのSTATEはSTOPPEDに設定され、繰返しジョブのSTATEは、ジョブの次の実行がスケジュールされているかどうかによって、SCHEDULEDまたはCOMPLETEDに設定されます。

チェーンを指定しているジョブが停止すると、実行中のチェーンのすべてのステップが停止します。

外部ジョブの場合、STOP_JOBはジョブ・アクションによって直接起動された外部プロセスのみを停止します。外部ジョブの子プロセスは停止しません。

構文

DBMS_SCHEDULER.STOP_JOB (
   job_name         IN VARCHAR2
   force            IN BOOLEAN DEFAULT FALSE
   commit_semantics IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表114-76 STOP_JOBプロシージャのパラメータ

パラメータ 説明

job_name

ジョブまたはジョブ・クラスの名前。カンマ区切りリストを使用できます。ジョブ・クラスの場合は、SYSスキーマを指定する必要があります。

ジョブ・クラスの名前を指定すると、このジョブ・クラスに所属するジョブは停止されます。ジョブ・クラスは、このコールの影響を受けません。

force

forceFALSEに設定した場合、Schedulerは割込み機能を使用してジョブの停止を試みます。この方法では制御をスレーブ・プロセスに戻して、停止するジョブ・キュー内のジョブのステータスをこのプロセスで更新できます。更新に失敗した場合は、エラーが戻されます。

forceTRUEに設定した場合、Schedulerはただちにジョブ・スレーブを終了します。 Oracleでは、forceFALSEに設定したSTOP_JOBプロシージャに失敗した場合のみ、forceをTRUEに設定してSTOP_JOBプロシージャを使用することをお薦めします。

forceオプションを使用するには、MANAGE SCHEDULERシステム権限が必要です。

commit_semantics

コミット・セマンティクス。 次の2つのタイプがサポートされています。

  • STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻されます。このエラーが発生する前に正常に実行された停止操作はディスクにコミットされます。これがデフォルトです。

  • ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの停止を試行し、正常に実行されたすべての停止操作をコミットします。


使用上の注意

forceオプションを使用せずにSTOP_JOBを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限またはMANAGE SCHEDULER権限を持っている場合も、ジョブを停止できます。

forceオプションを使用してSTOP_JOBを使用するには、MANAGE SCHEDULER権限を持っている必要があります。