プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

140 DBMS_SCHEDULER

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


関連項目:

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

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

DBMS_SCHEDULERの使用方法

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

推奨されないサブプログラム

新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 12cリリース1(12.1)では、次のサブプログラムの使用は推奨されていません。

セキュリティ・モデル

DBMS_SCHEDULERパッケージでは、ロールを通じてジョブやチェーンなどのSchedulerオブジェクトに対して付与される権限は無視されます。オブジェクト権限は、ユーザーに直接付与する必要があります。

ルールおよび制限

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

  • SYSスキーマのオブジェクトに対しては、SYSのみがアクションを実行できます。

  • 一部のプロシージャでは、オブジェクト名のカンマ区切りリストを使用できます。オブジェクト名のリストを提供する場合、Schedulerは、エラーを戻した最初のオブジェクトの位置でリストの実行を停止します。そのため、Schedulerは、リストの残りのオブジェクトに必要とされるタスクを実行しません。

    たとえば、DBMS_SCHEDULER.STOP_JOB ('job1, job2, job3, sys.jobclass1, sys.jobclass2, sys.jobclass3');という文があるとします。

    job3を停止できない場合、その後に続くジョブのjobclass1jobclass2およびjobclass3も停止できません。job3に先行するジョブのjob1およびjob2は、停止します。

  • 存在しないオブジェクト上でアクションを実行すると、オブジェクトが存在しないことを示すPL/SQLの例外を返します。

使用上の注意

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]
 
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 = month ( "," month)*
   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"
BYTIME clause:  BYTIME=[hour_minute_second_list|minute_second_list]
   hour_minute_second_list: hh24mmss, .., hh24mmss
   minute_second_list: mmss, .. mmss
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 = "-"

combined_schedule = schedule_list

表140-1 repeat_intervalの値

名前 説明

FREQ

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

INTERVAL

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

BYMONTH

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

BYWEEKNO

ある年における週を番号で指定します。ISO-8601に準拠して、1週間は月曜から日曜までとし、1年の最初の週を第1週とします(この大部分がその年のグレゴリオ暦年の範囲内です)。第1週は、次の2つの変数、すなわち、グレゴリオ年の最初の木曜日が含まれる週および1月4日が含まれる週に相当します。

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から366です。たとえば、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が偶数の場合は、1つ大きい奇数に調整されます。

OFFSETは、n日間(週間)を加算または減算して指定日を調整します。BYDATE=0205-OFFSET:2Wは、BYDATE=0205-14D (OFFSET: キーワードはオプション)と同じで、これは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句を指定してではなく、その月のすべての就業日のリストを評価するカレンダ式を記述した後、そのリストの最後の項目のみを選択する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プロシージャで定義済である必要があります。

この句は1日単位でのみ使用できます。したがって、BYHOURBYMINおよびBYSECONDとともに使用できません。

EXCLUDE

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

この句は1日単位でのみ使用できます。したがって、BYHOURBYMINおよびBYSECONDとともに使用できません。

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の項は各月の末日を示します。

この句は1日単位でのみ使用できます。したがって、BYHOURBYMINおよびBYSECONDとともに使用できません。

PERIODS

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

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

BYPERIOD

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


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

  • 組み合せたスケジュール式(個々のスケジュールのリスト)を使用する方法

    たとえば、会社のすべての休業日のスケジュールを作成するには、個々のスケジュールのリストを指定します(このリスト内のスケジュールごとに1つの休業日が定義されます)。Schedulerは、各スケジュールを個々に評価し、各スケジュールから戻されたタイムスタンプの論理和を戻します。

  • includeexcludeおよびintersect句を使用して、メイン・スケジュールに他のスケジュールを埋め込む方法

    この方法の場合、埋め込まれたスケジュールは、メイン・スケジュールから特定の属性を継承します。

    • INCLUDE句によって生成されたタイムスタンプは、メイン・スケジュールでスキップされる期間内の場合は無視されます。これは、freq=monthlyに対するINTERVAL句、BYPERIOD句またはBYMONTH句によって、メイン・スケジュールで期間がスキップされるような場合です。

    • INCLUDE句によって追加される日は、メイン・スケジュールの実行パターン(毎時、毎分、毎秒)に従います。

    • INCLUDE句が存在する場合、日付固有のデフォルト値は開始日から取得できません(ただし時間固有のデフォルト値は取得可能です)。(この項の後半の「開始日および反復間隔」を参照。)たとえばrepeat_intervalFREQ=MONTHLY;INCLUDE=HOLIDAYの場合は、開始日から取得されるデフォルトの月/日ではなく、休日にのみ実行されます。

    次に例を示します。

    BEGIN
    dbms_scheduler.create_schedule('embed_sched', repeat_interval =>
      'FREQ=YEARLY;BYDATE=0130,0220,0725');
    dbms_scheduler.create_schedule('main_sched', repeat_interval =>
      'FREQ=MONTHLY;INTERVAL=2;BYMONTHDAY=15;BYHOUR=9,17;INCLUDE=embed_sched');
    END;
    /
    

    この例では、1/30、2/20および7/25という日付がメイン・スケジュールに追加されます。ただしSchedulerには、INTERVAL句でスキップされる月の日付は含まれません。メイン・スケジュールの開始日が2005年1月1日の場合、2月20日は追加されません。埋め込まれたスケジュールは、追加された日付に、メイン・スケジュールの実行パターンに従います(すなわちジョブは、1月30日と7月25日の午前9時と午後5時に実行されます)。埋め込まれたスケジュール自体に開始日がない場合は、メイン・スケジュールの開始日が継承されます。

ユーザー定義の頻度 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のデフォルト値が存在する場合は、それらの値が開始日から取得され、これらの句が指定されていない場合に使用されます。INCLUDEEXCLUDEまたはINTERSECT句が存在する場合、日付に関連するデフォルト値は開始日から取得されませんが、時間に関連するデフォルト値は取得されます。次にいくつかの例を示します。

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

内部的に次に拡張されます。

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などのように実行されます。

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

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

内部的に次に拡張されます。

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などのように実行されます。

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

  • (組み合せたスケジュールではなく)通常のスケジュールの場合、カレンダ文字列は、freq句で始まる必要があります。その他のすべての句はオプション指定で、どの順序でも挿入できます。

  • すべての句をセミコロンで区切ります。それぞれの句は、include句、exclude句およびintersect句を除き、1回のみ使用できます。

  • 構文要素間には空白を入れることができます。文字列は大/小文字が区別されません。

  • 特定のBY句の値リストを順番に並べる必要はありません。

  • 次の日付を決定するために必要なBY句が存在しない場合、この情報は開始日から取得されます。たとえば、開始日が2003年2月15日の"FREQ=YEARLY""FREQ=YEARLY;BYMONTH=FEB; BYMONTHDAY=15"になり、これは、毎年2月15日を示します。

    開始日が01/21/2003の"FREQ=YEARLY;BYMONTH=JAN,JUL""FREQ=YEARLY;BYMONTH=JAN,JUL;BYMONTHDAY=21"になります。これは、毎年1月21日および7月21日を示します。

  • byweekno句は、頻度がYEARLYの場合のみ使用できます。他の頻度には使用できません。これが存在する場合、その週の番号のすべての日付が戻されます。その週内の特定の日に限定する場合は、BYDAY句を追加する必要があります。たとえば、開始日01/01/2003の"FREQ=YEARLY;BYWEEKNO=2"の場合、次の日付が戻されます。

    01/06/2003, 01/07/2003, 01/08/2003, 01/09/2003, 01/10/2003, 01/11/2003, 01/12/2003, 01/05/2004, 01/06/2004, 01/07/2004, .... and so on.
    

    byweekno句を使用した場合、当年以外の年の日付が戻される場合があることに注意してください。たとえば、2004年およびカレンダ文字列の戻り日付が、2004年の指定週番号として"FREQ=YEARLY;BYWEEKNO=1,53"である場合、次の日付が戻されます。

    12/29/03, 12/30/03, 12/31/03, 01/01/04, 01/02/04, 01/03/04, 01/04/04, 12/27/04, 12/28/04, 12/29/04, 12/30/04, 12/31/04, 01/01/05, 01/02/05
    
  • 一定の値範囲を持たないBY句の場合、数値の前に「-」を入れると逆にカウントできます。たとえばBYMONTHDAY=31と指定した場合、1か月は必ずしも31日でないため、毎月の最後の日付を取得できるわけではありません。かわりにBYMONTHDAY=-1と指定すると、月の最後の日付を取得できます。

    この機能は、サイズが固定されているBY句についてはサポートされません。すなわち、BYMONTHBYHOURBYMINUTEおよびBYSECONDではサポートされません。

  • BYDAY句の基本値は曜日です。頻度がYEARLYまたはMONTHLYの場合、各曜日の前に正または負の数を指定できます。YEARLY, BYDAY=40MONの場合、その年の40番目の月曜日を示します。MONTHLY, BYDAY=-2SATの場合、その月の最後から2番目の土曜日を示します。

    他の頻度では、曜日の前に正または負の数を入れるやり方はサポートされていないことに注意してください。また、頻度がYEARLYの場合は数の範囲は-53から-1、1から53ですが、MONTHLYの場合は-5から-1、1から5に限定されることにも注意してください。

    曜日の前に番号が示されていない場合は、指定した頻度でその曜日が繰り返し取得されます。

  • 週の最初の曜日は月曜日になります。

  • 繰返しの頻度が1日より短いジョブは、夏時間調整があった場合でも、その頻度に正確に従います。たとえば、3時間ごとに繰り返すようにスケジュールされているジョブがあり、時計が午前1時から午前2時に進められ、最後のジョブ実行時刻は午前0時であったとします。この場合、次のスケジュールされた時間は午前4時になります。したがって、後続のジョブの実行間隔は3時間に保たれます。時計が遅らされた場合も同じく適用されます。この動作は、頻度が1日以上の繰返しジョブには適用されません。たとえば、繰返しジョブが毎日午前0時に実行されることになっている場合に、時計を進めるか、または遅らせても、このジョブは午前0時に実行されます。このような毎日実行するジョブ(または実行頻度が1日より長いジョブ)の実行時間が時計を進めたウィンドウに偶然含まれた場合は、そのウィンドウの終了時刻にジョブが実行されます。

  • カレンダ構文ではタイムゾーンを指定できません。かわりに、Schedulerはstart_date引数からタイムゾーンを取得します。ジョブが夏時間調整を行う必要のある場合は、start_dateのタイムゾーンでリージョン名を指定する必要があります。start_dateのタイムゾーンをニューヨークの'US/Eastern'として指定すると、その夏時間調整が常に自動的に適用されます。かわりにstart_dateのタイムゾーンが'-5:00'などの絶対オフセットに設定されていると、夏時間調整は適用されず、半年間ジョブの実行が1時間遅くなります。

  • start_dateNULLの場合、Schedulerは次のように反復間隔のタイムゾーンを決定します。

    1. セッション・タイムゾーンがリージョン名かどうかをチェックします。セッション・タイムゾーンは、次のいずれかで設定できます。

      • ALTER SESSION文の発行。例:

        SQL> ALTER SESSION SET time_zone = 'Asia/Shanghai';
        
      • ORA_SDTZ環境変数の設定。

    2. セッション・タイムゾーンがリージョン名ではなく絶対オフセットの場合、SchedulerはDEFAULT_TIMEZONE Scheduler属性の値を使用します。詳細は、「SET_SCHEDULER_ATTRIBUTEプロシージャ」を参照してください。

    3. DEFAULT_TIMEZONE属性がNULLの場合、Schedulerでは、ジョブまたはウィンドウが使用可能であれば、systimestampのタイムゾーンを使用します。

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

  • BYSETPOS句は、最後に評価される句です。これは、他のすべてのBY句、INCLUDEEXCLUDEおよびINTERSECT句が評価された後で、処理されます。

  • INTERVAL句では、BYSETPOS句が適用される期間のサイズは変更されません。たとえば、頻度が毎月に設定され、間隔が3に設定されている場合、BYSETPOSが適用されるタイムスタンプのリストは、四半期ではなく月から生成されます。INTERVAL句の影響は、月がスキップされることのみです。ただし、このような場合でも、四半期の最終日の1日前の就業日を次のようにして選択できます。

    FREQ=MONTHLY;INTERVAL=3;BYDAY=MON,TUE,WED,THU,FRI;BYSETPOS=-2
    

    これは、開始日を正しい月に設定していることを前提としています。この例では、月の最後の就業日の1日前の就業日が戻され、同じ処理が四半期に1度繰り返されます。

  • 一貫した結果を取得するために、BYSETPOSが適用されるセットは、評価が行われるタイミングとは無関係に、頻度期間の最初から決定されています。Schedulerで次の内容が評価される場合を考えます。

    FREQ=MONTHLY;BYDAY=MON,TUE,FRI;BYSETPOS=1,3
    

    2004年1月1日または2004年1月15日のいずれの日に評価された場合でも、この式の評価結果は2004年1月2日金曜日および2004年1月6日火曜日になります。式が2004年1月15日に評価された場合は、検出されたタイムスタンプが過去のものであるため、1月に一致するものはないと判断され、次の月である2月で一致するものが検索される点のみが異なります。

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

  • BYDATE句の日付に年の構成要素(オプション)がない場合、ジョブは毎年それらの日に実行されます。

  • 指定日のジョブの実行時間は、カレンダ式のBY句から導出されます。たとえば、repeat_intervalが次のように定義されているとします。

    freq=daily;byhour=8,13,18;byminute=0;bysecond=0;bydate=0502,0922
    

    この場合、5月2日および9月22日の実行時間は、午前8時0分、午後1時0分および午後6時0分です。

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;
/

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

例140-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パッケージは、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));

属性

表140-2 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;

パラメータ

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

パラメータ 説明

arg_position

引数の位置。

arg_value

引数の値。

arg_reset

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

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


JOBARG_ARRAY表タイプ

構文

TYPE jobarg_array IS TABLE OF jobarg;

JOB_DEFINITIONオブジェクト・タイプ

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

構文

TYPE job_definition IS OBJECT (
  job_name                       VARCHAR2(100),
  job_class                      VARCHAR2(32),
  job_style                      VARCHAR2(11),
  program_name                   VARCHAR2(100),
  job_action                     VARCHAR2(4000),
  job_type                       VARCHAR2(20),
  schedule_name                  VARCHAR2(65),
  repeat_interval                VARCHAR2(4000),
  schedule_limit                 INTERVAL DAY TO SECOND,
  start_date                     TIMESTAMP WITH TIME ZONE,
  end_date                       TIMESTAMP WITH TIME ZONE,
  event_condition                VARCHAR2(4000),
  queue_spec                     VARCHAR2(100),
  number_of_arguments            NUMBER,
  arguments                      SYS.JOBARG_ARRAY,
  job_priority                   NUMBER,
  job_weight                     NUMBER,
  max_run_duration               INTERVAL DAY TO SECOND,
  max_runs                       NUMBER,
  max_failures                   NUMBER,
  logging_level                  NUMBER,
  restartable                    VARCHAR2(5),
  stop_on_window_close           VARCHAR2(5),
  raise_events                   NUMBER,
  comments                       VARCHAR2(240),
  auto_drop                      VARCHAR2(5),
  enabled                        VARCHAR2(5),
  follow_default_timezone        VARCHAR2(5),
  parallel_instances             VARCHAR2(5),
  aq_job                         VARCHAR2(5),
  instance_id                    NUMBER,
  credential_name                VARCHAR2(65),
  destination                    VARCHAR2(4000),
  database_role                  VARCHAR2(20),
  allow_runs_in_restricted_mode  VARCHAR2(5);
  restart_on_recovery            BOOLEAN;
  restart_on_failure             BOOLEAN;)

オブジェクト属性

表140-4は、JOB_DEFINITIONオブジェクト・タイプの属性の概要を示しています。これらの属性の詳細は、「CREATE_JOBプロシージャ」および「SET_ATTRIBUTEプロシージャ」を参照してください。

表140-4 JOB_DEFINITIONオブジェクト・タイプ

属性 説明

job_name

ジョブの名前。

job_class

ジョブ・クラスの名前。

job_style

ジョブのスタイル:

  • REGULAR

  • LIGHTWEIGHT

program_name

ジョブにより実行されるプログラムの名前。

job_action

ジョブのインライン・アクション。これは、無名PL/SQLブロックのコードまたはストアド・プロシージャの名前(外部実行可能またはチェーン)です。

job_type

ジョブ・アクションのタイプ('PLSQL_BLOCK'、'STORED_PROCEDURE'、'EXECUTABLE'、'CHAIN'、'EXTERNAL_SCRIPT'、'SQL_SCRIPT'および'BACKUP_SCRIPT')。

schedule_name

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

repeat_interval

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

schedule_limit

ジョブの実行が取り消される前の、スケジュール・ジョブと実際のジョブの最大遅延時間。

start_date

ジョブの開始日時。

end_date

ジョブの終了日時。

event_condition

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

queue_spec

File Watcher名またはイベント・ベースのジョブのキューの仕様。

number_of_arguments

ジョブ引数の数。

arguments

ジョブ引数の配列。

job priority

ジョブの優先順位。

job_weight

*** Oracle Database 11gリリース2では非推奨となっています。この属性の値をデフォルトの1から変更しないでください。

パラレル実行のジョブの重み。

max_run_duration

ジョブの最大実行時間。

max_runs

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

max_failures

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

logging_level

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

restartable

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

stop_on_window_close

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

raise_events

イベントを発生させる状態変更。

comments

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

auto_drop

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

enabled

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

follow_default_timezone

TRUEの場合で、ジョブstart_dateがNULLのときは、default_timezone Scheduler属性を変更すると、このジョブが新しいタイムゾーンで実行されるように、Schedulerによってジョブの次の実行日時が再計算されます。

parallel_instances

イベント・ベースのジョブ専用。

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

FALSEの場合、イベントを処理するジョブの実行中にそのイベントが発生すると、イベントは廃棄されます。

aq_job

内部使用専用。

instance_id

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

credential_name

単一の宛先に使用する資格証明または宛先グループに対するデフォルトの資格証明。

destination

単一の外部接続先またはデータベース接続先の名前、あるいは外部接続先タイプまたはデータベース接続先のグループ名。

database_role

Oracle Data Guard環境では、ジョブが実行されるデータベース・ロール('PRIMARY'または'LOGICAL STANDBY')。

allow_runs_in_restricted_mode

TRUEの場合、このモード中にジョブの所有者がログインを許可されれば、データベースが制限モードのときに、ジョブの実行が許可されます。

restart_on_recovery

ジョブに対してTRUEに設定し、そのジョブがデータベースのシャットダウンによって停止した場合、ジョブはデータベースのリカバリ時に再開されます。

FALSEに設定されており、ジョブがデータベースのシャットダウンによって停止した場合は、データベースのリカバリ時にそのジョブに停止のマークが付けられます。

restart_on_failure

ジョブに対してTRUEに設定し、そのジョブがアプリケーション・エラーのために失敗した場合、ジョブは通常のScheduler再試行メカニズムを使用して再試行されます(1秒後、10秒後、100秒後など最高6回まで)。6回の再試行がすべて失敗した場合(約30時間後)、ジョブはFAILEDとマークされます。

FALSEに設定されると(デフォルト)、失敗したジョブはただちにFAILEDとマークされます。


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

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

構文

constructor function job_definition (
    job_name                IN     VARCHAR2,
    job_style               IN     VARCHAR2 DEFAULT 'REGULAR',
    program_name            IN     VARCHAR2 DEFAULT NULL,
    job_action              IN     VARCHAR2 DEFAULT NULL,
    job_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_arguments     IN     NATURAL DEFAULT NULL,
    arguments               IN     SYS.JOBARG_ARRAY DEFAULT NULL,
    job_class               IN     VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
    schedule_limit          IN     INTERVAL DAY TO SECOND DEFAULT NULL,
    job_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_close    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_timezone IN     BOOLEAN DEFAULT FALSE,
    parallel_instances      IN     BOOLEAN DEFAULT FALSE,
    aq_job                  IN     BOOLEAN DEFAULT FALSE,
    instance_id             IN     NATURAL DEFAULT NULL,
    credential_name         IN     VARCHAR2 DEFAULT NULL,
    destination             IN     VARCHAR2 DEFAULT NULL,
    database_role           IN     VARCHAR2 DEFAULT NULL,
    allow_runs_in_restricted_mode IN BOOLEAN DEFAULT FALSE)
    RETURN SELF AS RESULT;

JOB_DEFINITION_ARRAY表タイプ

構文

TYPE job_definition_array IS TABLE OF job_definition;

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));

属性

表140-5 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;

パラメータ

表140-6 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));

属性

表140-7 SCHEDULER$_STEP_TYPEオブジェクト・タイプの属性

属性 説明

step_name

ステップの名前。

step_type

ステップの状態。


SCHEDULER$_STEP_TYPE_LIST表タイプ

構文

TYPE scheduler$_step_type_list IS TABLE OF scheduler$_step_type;

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

これは、Schedulerによって発生するジョブの状態イベントをアプリケーションがコンシュームする、Schedulerのイベント・キューSYS.SCHEDULER$_EVENT_QUEUEのデータ・タイプです。これは、SYS所有の保護キューです。

構文

TYPE SCHEDULER$_EVENT_INFO IS OBJECT (
  event_type         VARCHAR2(4000),
  object_owner       VARCHAR2(4000),
  object_name        VARCHAR2(4000),
  event_timestamp    TIMESTAMP WITH TIME ZONE,
  error_code         NUMBER,
  error_msg          VARCHAR2(4000),
  event_status       NUMBER,
  log_id             NUMBER,
  run_count          NUMBER,
  failure_count      NUMBER,
  retry_count        NUMBER,
  spare1             NUMBER,
  spare2             NUMBER,
  spare3             VARCHAR2(4000),
  spare4             VARCHAR2(4000),
  spare5             TIMESTAMP WITH TIME ZONE,
  spare6             TIMESTAMP WITH TIME ZONE,
  spare7             RAW(2000),
  spare8             RAW(2000));

属性

表140-8 SCHEDULER_EVENT_INFOオブジェクト・タイプの属性

属性 説明

event_type

"JOB_STARTED"、"JOB_SUCCEEDED"、"JOB_FAILED"、"JOB_BROKEN"、"JOB_COMPLETED"、"JOB_STOPPED"、"JOB_SCH_LIM_REACHED"、"JOB_DISABLED"、"JOB_CHAIN_STALLED"、"JOB_OVER_MAX_DUR"のいずれか。

これらのイベント・タイプについては、表140-78「Schedulerで発生するイベントのタイプ」を参照してください。

object_owner

イベントを発生させたジョブの所有者。

object_name

イベントを発生させたジョブの名前。

event_timestamp

イベントが発生した時刻。

error_code

ジョブの実行中にエラーがスローされたときのみ適用されます。トップ・レベルのエラー・コードが含まれます。

error_msg

ジョブの実行中にエラーがスローされたときのみ適用されます。エラー・スタック全体が含まれます。

event_status

イベント・タイプにさらに修飾を追加します。event_typeが"JOB_STARTED"の場合、ステータス1は通常の開始であることを示し、ステータス2は再試行であることを示しています。

event_typeが"JOB_FAILED"の場合、ステータス4はジョブの実行中にスローされたエラーのため失敗したことを示し、ステータス8はなんらかの種類の異常終了であることを示しています。

event_typeが"JOB_STOPPED"の場合、ステータス16は通常の停止であることを示し、ステータス32はFORCEオプションがTRUEに設定された停止であることを示しています。

log_id

追加情報が得られるスケジューラ・ジョブ・ログのIDを示します。イベントに対応するログ・エントリは常には必要ないことに注意してください。この場合、log_idNULLです。

run_count

イベントが発生したときのジョブの実行数。

failure_count

イベントが発生したときのジョブの失敗数。

retry_count

イベントが発生したときのジョブの再試行数。

spare1spare8

現在は使用されていません。


SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプ

これは、ファイル到着イベント・メッセージのデータ・タイプです。イベント・ベースのジョブのパラメータ(またはイベント・ベースのジョブが参照するプログラムのパラメータ)としてイベント・メッセージにアクセスします。メッセージには、ローカルまたはリモート・システムに到着するファイルを検索し処理するために必要な情報が含まれています。

構文

TYPE scheduler_filewatcher_result IS OBJECT (
  destination         VARCHAR2(4000),
  directory_path      VARCHAR2(4000),
  actual_file_name    VARCHAR2(4000),
  file_size           NUMBER,
  file_timestamp      TIMESTAMP WITH TIME ZONE,
  ts_ms_from_epoch    NUMBER,
  matching_requests   SYS.SCHEDULER_FILEWATCHER_REQ_LIST);

属性

表140-9 SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプの属性

属性 説明

destination

ファイルが見つかった宛先。ホスト名またはIPアドレスとして表されます。

directory_path

ファイルが見つかったディレクトリの絶対パス。

actual_file_name

見つかったファイルの実際の名前。File Watcherで指定したファイル名にワイルドカードが含まれていなかった場合、File Watcherで指定した名前と同じです。

file_size

見つかったファイルのサイズ(バイト単位)。

file_timestamp

File Watcherがファイルを見つけたとみなしたときに、最小ファイル・サイズおよび安定した状態の期間属性に基づいて、ファイルに割り当てられるタイムスタンプ。

ts_ms_from_epoch

内部使用専用。

matching_requests

一致要求のリスト。これは、SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプのTABLEです。各一致要求は、destination属性、directory_path属性およびfile_name属性が到着したファイルと一致したFile Watcherに対応します。「SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプ」を参照してください。


SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプ

このタイプは、SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプmatching_requests属性で戻されます。この属性は、File Watcherの属性と類似しています。

構文

TYPE scheduler_filewatcher_request IS OBJECT (
  owner                 VARCHAR2(4000),
  name                  VARCHAR2(4000),
  requested_path_name   VARCHAR2(4000),
  requested_file_name   VARCHAR2(4000),
  credential_owner      VARCHAR2(4000),
  credential_name       VARCHAR2(4000),
  min_file_size         NUMBER,
  steady_state_dur      NUMBER);

属性

表140-10 SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプの属性

属性 説明

owner

一致したFile Watcherの所有者。

name

一致したFile Watcherの名前。

requested_path_name

一致したFile Watcherのdirectory_path属性の値。

requested_file_name

一致したFile Watcherのfile_name属性の値。

credential_owner

一致したFile Watcherにより参照される資格証明の所有者。

credential_name

一致したFile Watcherにより参照される資格証明の名前。

min_file_size

一致したFile Watcherのmin_file_size属性の値。

steady_state_dur

一致したFile Watcherのsteady_state_duration属性の値。


DBMS_SCHEDULERサブプログラムの要約

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

サブプログラム 説明

ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ


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

ADD_GROUP_MEMBERプロシージャ


既存のグループに1つ以上のメンバーを追加します。

ADD_JOB_EMAIL_NOTIFICATIONプロシージャ


受信者リストおよびジョブの状態イベントのリストに電子メール通知を追加します。

ALTER_CHAINプロシージャ


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

ALTER_RUNNING_CHAINプロシージャ


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

CLOSE_WINDOWプロシージャ


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

COPY_JOBプロシージャ


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

CREATE_CHAINプロシージャ


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

CREATE_CREDENTIALプロシージャ


資格証明を作成します。

CREATE_DATABASE_DESTINATIONプロシージャ


リモート・データベース・ジョブと使用するデータベース接続先を作成します。

CREATE_EVENT_SCHEDULEプロシージャ


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

CREATE_FILE_WATCHERプロシージャ


File Watcherを作成します。File Watcherは、システムに到着すると、Schedulerがジョブを開始する原因となるファイルの場所、名前およびその他のプロパティを定義するSchedulerオブジェクトです。

CREATE_GROUPプロシージャ


グループを作成します。

CREATE_JOBプロシージャ


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

CREATE_JOB_CLASSプロシージャ


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

CREATE_JOBSプロシージャ


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

CREATE_PROGRAMプロシージャ


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

CREATE_SCHEDULEプロシージャ


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

CREATE_WINDOWプロシージャ


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

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プロシージャ


プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcher、グループまたは非互換性を使用禁止にします。

DROP_AGENT_DESTINATIONプロシージャ


1つ以上の外部接続先を削除します。外部接続先を削除する優先的な方法(データベースでのSchedulerエージェントの登録解除)が失敗した場合にのみ使用します。

DROP_CHAINプロシージャ


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

DROP_CHAIN_RULEプロシージャ


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

DROP_CHAIN_STEPプロシージャ


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

DROP_CREDENTIALプロシージャ


資格証明を削除します。

DROP_DATABASE_DESTINATIONプロシージャ


1つ以上のデータベース接続先を削除します。

DROP_FILE_WATCHERプロシージャ


1つ以上のFile Watcherを削除します。

DROP_GROUPプロシージャ


1つ以上のグループを削除します。

DROP_JOBプロシージャ


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

DROP_JOB_CLASSプロシージャ


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

DROP_PROGRAMプロシージャ


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

DROP_PROGRAM_ARGUMENTプロシージャ


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

DROP_SCHEDULEプロシージャ


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

DROP_WINDOWプロシージャ


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

ENABLEプロシージャ


プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcherまたはグループを使用可能にします。

END_DETACHED_JOB_RUNプロシージャ


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

EVALUATE_CALENDAR_STRINGプロシージャ


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

EVALUATE_RUNNING_CHAINプロシージャ


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

GENERATE_JOB_NAMEファンクション


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

GET_AGENT_INFOファンクション


選択された属性に応じて、実行中のジョブ数などのエージェント固有のジョブ情報を戻します。

GET_AGENT_VERSIONファンクション


データベースに登録されており、現在実行中のSchedulerエージェントのバージョン文字列を戻します。

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_GROUP_MEMBERプロシージャ


グループから1つ以上のメンバーを削除します。

REMOVE_JOB_EMAIL_NOTIFICATIONプロシージャ


ジョブの電子メール通知を削除します。

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_RESOURCE_CONSTRAINTプロシージャ


ジョブによって使用されるリソースを指定します。

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);

パラメータ

表140-12 ADD_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ

パラメータ 説明

subscriber_name

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


使用上の注意

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

ADD_GROUP_MEMBERプロシージャ

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

構文

DBMS_SCHEDULER.ADD_GROUP_MEMBER (
   group_name              IN VARCHAR2,
   member                  IN VARCHAR2);

パラメータ

表140-13 ADD_GROUP_MEMBERプロシージャのパラメータ

パラメータ 説明

group_name

グループの名前。

member

グループに追加するメンバーのカンマ区切りリスト。メンバーはグループ・タイプと一致する必要があります。同じタイプのグループがメンバーになることができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。

いずれかのメンバーが存在しない場合は、エラーが戻されます。すでにグループに存在するメンバーはスキップされ、エラーは発生しません。

キーワードLOCALは、データベース接続先グループまたは外部接続先グループのメンバーとして含めることができます。このキーワードの詳細は、「CREATE_GROUPプロシージャ」を参照してください。


使用上の注意

次のユーザーはグループにメンバーを追加できます。

  • グループ所有者。

  • グループでALTERオブジェクト権限を付与されたユーザー。

  • CREATE ANY JOBシステム権限があるユーザー。

タイプWINDOWのグループにメンバーを追加するには、MANAGE SCHEDULER権限が必要です。

ADD_JOB_EMAIL_NOTIFICATIONプロシージャ

このプロシージャは、ジョブの電子メール通知を追加します。指定したジョブの状態イベントが発生した場合は、指定した受信者のリストに必ず電子メールが送信されます。

構文

DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
    job_name             IN VARCHAR2,
    recipients           IN VARCHAR2,
    sender               IN VARCHAR2 DEFAULT NULL,
    subject              IN VARCHAR2 DEFAULT DBMS_SCHEDULER.DEFAULT_NOTIFICATION_SUBJECT,
    body                 IN VARCHAR2 DEFAULT DBMS_SCHEDULER.DEFAULT_NOTIFICATION_BODY,
    events               IN VARCHAR2 DEFAULT 'JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,
                             JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR',
    filter_condition     IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-14 ADD_JOB_EMAIL_NOTIFICATIONプロシージャのパラメータ

パラメータ 説明

job_name

電子メール通知を追加するジョブの名前。NULL以外にしてください。

recipients

通知を送信する電子メール・アドレスのカンマ区切りリスト。リストされているすべてのイベントに対する電子メール通知は、すべての受信者に送信されます。NULL以外にしてください。

sender

電子メール・ヘッダーで送信者のアドレス(送信者: アドレス)に使用する電子メール・アドレス。NULLまたは省略した場合、Scheduler属性email_senderで指定した電子メール・アドレスが使用されます。Scheduler属性の詳細は、『Oracle Database管理者ガイド』を参照してください。

subject

電子メール・ヘッダーに使用する件名。表140-15は、このパラメータに含められる変数を説明しています。Schedulerは、通知を送信する前にこれらの変数に値を割り当てます。subjectが省略された場合は、デフォルトの件名が使用されます。デフォルトの件名は次のテキストで、'%'文字で囲まれたテキストが変数を表します。

'Oracle Scheduler Job Notification - %job_owner%.%job_name%.%job_subname% %event_type%'

body

電子メール・メッセージの本文。表140-15は、このパラメータに含められる変数を説明しています。Schedulerは、通知を送信する前にこれらの変数に値を割り当てます。bodyが省略された場合は、デフォルトの本文が使用されます。デフォルトの本文は次のテキストで、'%'文字で囲まれたテキストが変数を表します。

'Job: %job_owner%.%job_name%.%job_subname%
Event: %event_type%
Date: %event_timestamp%
Log id: %log_id%
Job class: %job_class_name%
Run count: %run_count%
Failure count: %failure_count%
Retry count: %retry_count%
Error code: %error_code%
Error message: %error_message%'

events

電子メール通知を送信するジョブの状態イベントのカンマ区切りリスト。NULL以外にしてください。リストされているイベントが発生した場合、通知はすべての受信者に送信されます。表140-78に、このパラメータの有効なイベントを示します。eventsが省略された場合は、次のデフォルトのイベントに対して通知が送信されます。

JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR

filter_condition

電子メール通知を送信するイベントをフィルタするために使用されます。NULLの場合、指定したイベントが発生すると毎回電子メール通知が送信されます。filter_conditionは、:eventバインド変数を参照できるブールSQL WHERE句である必要があります。このバインド変数は、発生したイベントを表すタイプSCHEDULER$_EVENT_INFOのオブジェクトに自動的にバインドされます。

たとえば、イベントのエラー番号が600または700の場合にのみ電子メール通知を送信するには、次のfilter_conditionを使用します。

:event.error_code=600 or :event.error_code=700

「SCHEDULER$_EVENT_INFOオブジェクト・タイプ」を参照してください。


表140-15は、件名と本文の引数で使用できる変数を示しています。

表140-15 SUBJECTおよびBODYパラメータで使用する変数

変数 コメント

%job_owner%

ジョブが作成されたスキーマ。

%job_name%

電子メール通知を追加するジョブの名前。

%job_subname%

parallel_instances属性セットがあるイベント・ベースのジョブおよびチェーン・ステップのために存在します。

%event_type%

値は表140-78のとおりです。

%event_timestamp%

イベントが発生した時刻。

%log_id%

ビュー*_SCHEDULER_JOB_LOGおよびビュー*_SCHEDULER_JOB_RUN_DETAILSLOG_ID列を参照します。

%error_code%

エラー・コードの番号。

%error_message%

エラー・メッセージのテキスト。

%run_count%

イベントが発生したときのジョブの実行数。

%failure_count%

イベントが発生したときのジョブの失敗数。

%retry_count%

イベントが発生したときのジョブの再試行数。


使用上の注意

特定のジョブに設定する様々な通知セットそれぞれに対してADD_JOB_EMAIL_NOTIFICATIONを一度コールできます。たとえば、JOB_FAILEDJOB_BROKENJOB_SCH_LIM_REACHEDおよびJOB_CHAIN_STALLEDイベントの通知をプリンシパルDBAおよびすべての上位DBAに送信し、JOB_OVER_MAX_DURイベントの通知をプリンシパルDBAにのみ送信することができます。

このプロシージャは、Scheduler属性email_serverが有効なSMTPサーバーに設定されている場合のみ成功します。詳細は、『Oracle Database管理者ガイド』を参照してください。

このプロシージャをコールするには、ジョブ所有者になるか、CREATE ANY JOBシステム権限を持つか、ジョブでALTERオブジェクト権限を持つ必要があります。

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);

パラメータ

表140-16 ALTER_CHAINプロシージャのパラメータ

パラメータ 説明

chain_name

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

step_name

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

attribute

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

  • 'PAUSE'

    ステップに対してTRUEに設定すると、ステップの実行が終了したときにその状態はPAUSEDになります(completed属性はFALSEのままです)。

    一時停止したチェーン・ステップのPAUSE属性を、(ALTER_RUNNING_CHAINを使用して)FALSEに再設定すると、ステップの状態は完了状態(SUCCEEDEDFAILEDまたはSTOPPED)になり、completed属性がTRUEに設定されます。

    PAUSEに設定すると、実行済のステップには影響しません。これによって、特定ステップの実行後に、チェーンの実行を一時停止できます。

  • 'PAUSED_BEFORE'

    ステップに対してTRUEが設定されており、そのステップを開始するルール条件のいずれかに当てはまる場合、状態はPAUSEDに変更され、ステップは実行されません。

    開始前に一時停止したチェーン・ステップで(ALTER_RUNNING_CHAINを使用して)PAUSE_BEFOREFALSEにリセットされた場合、ステップを開始するルール条件のいずれかに当てはまると、ステップの実行が開始されます。

    PAUSE_BEFOREに設定すると、実行中または実行済のステップには影響しません。これによって、特定ステップの実行前に、チェーンの実行を一時停止できます。

  • 'SKIP'

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

  • 'RESTART_ON_FAILURE'

    ステップに対してTRUEに設定し、そのステップがアプリケーション・エラーのために失敗した場合、ステップは通常のScheduler再試行メカニズムを使用して再試行されます(1秒後、10秒後、100秒後など最高6回まで)。6回の再試行がすべて失敗した場合(約30時間後)、チェーン・ステップはFAILEDとマークされます。

    FALSEに設定されると(デフォルト)、失敗したチェーン・ステップはただちにFAILEDとマークされます。

  • 'RESTART_ON_RECOVERY'

    ステップに対してTRUEに設定し、そのステップがデータベースのシャットダウンよって停止した場合、ステップはデータベースのリカバリ時に再開されます。

    FALSEに設定されており、ステップがデータベースのシャットダウンよって停止した場合は、データベースのリカバリ時にそのステップに停止のマークが付けられ、チェーンは続行されます。

  • 'DESTINATION_NAME'

    既存のデータベース接続先または外部接続先の名前。外部接続先名は、ビューALL_SCHEDULER_EXTERNAL_DESTSで表示でき、データベース接続先名はビュー*_SCHEDULER_DB_DESTSで表示できます。この属性に接続先グループは指定できません。このパラメータはデフォルトでは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});

パラメータ

表140-17 ALTER_RUNNING_CHAINプロシージャのパラメータ

パラメータ 説明

job_name

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

step_name

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

attribute

変更するステップの属性。有効な値は、次のとおりです。

  • 'PAUSE'

    ステップのPAUSE属性をTRUEに設定すると、ステップの実行後にその状態はPAUSEDになります(completed属性はFALSEのままです)。

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

  • 'PAUSE_BEFORE'

    まだ実行されていないステップに対してTRUEが設定されており、そのステップを開始するルール条件のいずれかに当てはまる場合、状態はPAUSEDに変更され、ステップは実行されません。

    開始前に一時停止したチェーン・ステップでPAUSE_BEFOREFALSEにリセットされた場合、ステップを開始するルール条件のいずれかに当てはまると、ステップの実行が開始されます。

    PAUSE_BEFOREに設定すると、実行中または実行済のステップには影響しません。これによって、特定ステップの実行前に、チェーンの実行を一時停止できます。

    step_nameNULLに設定した場合は、この実行中のチェーンのすべてのステップのPAUSE_BEFOREが指定値に設定されます。

attribute CONTINUED

  • 'SKIP'

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

    step_nameNULLに設定した場合は、この実行中のチェーンのすべてのステップのSKIPTRUEに設定されます。PAUSEが設定されているステップのSKIPTRUEに設定すると、ステップ条件が満たされた場合、そのステップの状態は即時PAUSEDになります。

  • 'RESTART_ON_FAILURE'

    ステップに対してTRUEに設定し、そのステップがアプリケーション・エラーのために失敗した場合、ステップは通常のScheduler再試行メカニズムを使用して再試行されます(1秒後、10秒後、100秒後など最高6回まで)。6回の再試行がすべて失敗した場合(約30時間後)、チェーン・ステップはFAILEDとマークされます。

    FALSEに設定されると(デフォルト)、失敗したチェーン・ステップはただちにFAILEDとマークされます。

  • '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);

パラメータ

表140-18 CLOSE_WINDOWプロシージャのパラメータ

パラメータ 説明

window_name

ウィンドウの名前。


使用上の注意

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

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

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

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

COPY_JOBプロシージャ

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

構文

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

パラメータ

表140-19 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);

パラメータ

表140-20 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プロシージャ


注意:

Oracle Database 12cリリース1(12.1)では、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、かわりにDBMS_CREDENTIALパッケージで提供される拡張機能、具体的にはCREATE_CREDENTIALプロシージャを使用することをお薦めします。

このプロシージャは、ユーザー名/パスワードのペアを作成して保存します。資格証明は、ローカルまたはリモートのホスト・オペレーティング・システムあるいはリモートOracle Databaseで認証できるようにジョブに割り当てられます。

構文

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);

パラメータ

表140-21 CREATE_CREDENTIALプロシージャのパラメータ

パラメータ 説明

credential_name

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

username

ホスト・オペレーティング・システムまたはリモートOracle Databaseにログインするためのユーザー名。これはNULLには設定できず、大/小文字が区別されます。二重引用符または空白を含むことはできません。最大長は64です。

password

ユーザー名のパスワード。これはNULLには設定できず、大文字と小文字が区別されます。このパスワードは難読化された状態で格納され、Schedulerのディクショナリ・ビューには表示されません。最大長は128です。

database_role

database_role属性の値は、リモート・データベース・ジョブを実行するために、リモート・データベースへのログインに対するシステム権限として使用されます。

有効な値はSYSDBAおよびSYSOPERです。

windows_domain

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

comments

資格証明の説明に使用可能なテキスト文字列。Schedulerではこのパラメータは使用されません。最大長は240です。


使用上の注意

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

CREATE_DATABASE_DESTINATIONプロシージャ

このプロシージャは、データベース接続先を作成します。データベース接続先は、リモート・データベース・ジョブが実行されるOracle Databaseを表します。

リモート・データベースが存在するホストには、このプロシージャがコールされたデータベースに登録された実行中のSchedulerエージェントが必要です。

構文

DBMS_SCHEDULER.CREATE_DATABASE_DESTINATION (
   destination_name        IN VARCHAR2,
   agent                   IN VARCHAR2,
   tns_name                IN VARCHAR2,
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-22 CREATE_DATABASE_DESTINATIONプロシージャのパラメータ

パラメータ 説明

destination_name

データベース接続先に割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。NULL以外にしてください。二重引用符で囲まれていない場合は、大文字に変換されます。

agent

Schedulerエージェントが接続する外部接続先の名前。エージェント名と同じです。

この外部接続先は、すでに存在している必要があります。エージェントを表す外部接続先は、エージェントがインスタンスに登録されるときに自動的にデータベース・インスタンスで作成されます。

エージェントの名前はエージェント設定ファイルで指定されます。指定されない場合、存在するホストの名前の最初の部分(最初のピリオドの前)がデフォルトで設定されます。

tns_name

接続先のOracle Databaseインスタンスに解決される、Oracle Net接続識別子。正確な構文はOracle Net構成に依存します。接続識別子は、完全なOracle Net接続記述子(ネットワーク・アドレスまたはデータベース・サービス名)あるいは接続記述子の別名であるネット・サービス名になります。別名は、ローカル・コンピュータのtnsnames.oraファイルで解決される必要があります。tns_nameの最大サイズは2000文字です。

tns_nameNULLの場合、エージェントはホストにあるデフォルトのOracle Databaseに接続します。デフォルトのデータベースは、エージェント・ホーム・ディレクトリにあるエージェント構成ファイル(schagent.conf)のORACLE_HOMEパラメータおよびORACLE_SIDパラメータに値を割り当てることにより指定します。

接続識別子の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

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 DEFAULT NULL,
   queue_spec              IN VARCHAR2,
   end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-23 CREATE_EVENT_SCHEDULEのパラメータ

パラメータ 説明

schedule_name

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

start_date

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

event_condition

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

queue_spec

この引数は、File Watcher名または特定のジョブを開始するイベントがエンキューされるキュー(ソース・キュー)を指定します。ソース・キューが保護キューの場合、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_FILE_WATCHERプロシージャ

このプロシージャでFile Watcherを作成します(これはSchedulerオブジェクトで、システムへの到着時にSchedulerにジョブを開始させるファイルの場所、名前およびその他のプロパティを定義します)。File Watcherを作成した後、イベント・ベースのジョブまたはイベント・スケジュールで参照します。

構文

DBMS_SCHEDULER.CREATE_FILE_WATCHER (
   file_watcher_name            IN VARCHAR2,
   directory_path               IN VARCHAR2,
   file_name                    IN VARCHAR2,
   credential_name              IN VARCHAR2,
   destination                  IN VARCHAR2  DEFAULT NULL,
   min_file_size                IN PLS_INTEGER DEFAULT 0,
   steady_state_duration        IN INTERVAL DAY TO SECOND DEFAULT NULL,
   comments                     IN VARCHAR2 DEFAULT NULL,
   enabled                      IN BOOLEAN DEFAULT TRUE);

パラメータ

表140-24 CREATE_FILE_WATCHERのパラメータ

パラメータ 説明

file_watcher_name

File Watcherに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、File Watcherはスキーマの表と同じ名前を持つことができません。オプションで、スキーマ名を接頭辞として付加できます。NULL以外にしてください。

directory_path

ファイルの到着が指定されているディレクトリ。パスの先頭にある単一のワイルドカード'?'は、Oracleホームのパスを示します。たとえば、'?/rdbms/log'は、Oracleホーム・ディレクトリのrdbms/logサブディレクトリを示します。

file_name

検索するファイル名。2つのワイルドカードがファイル名の任意の場所で許可され、'?'は任意の1文字を示し、'*'はゼロ以上の文字を示します。この属性にNULLは指定できません。

credential_name

有効な資格証明オブジェクトの名前。

File Watcherでは、ホスト・オペレーティング・システムに対する認証を行い監視対象ファイルにアクセスするために、資格証明が使用されます。File Watcherの所有者は、資格証明でEXECUTE権限を持つ必要があります。NULL以外にしてください。

destination

外部接続先の名前。リモートSchedulerエージェントをデータベースに登録して、外部接続先を作成します。有効な外部接続先名については、ビューALL_SCHEDULER_EXTERNAL_DESTSを参照してください。このパラメータがNULLの場合、File Watcherはローカル・ホストに作成されます。

min_file_size

File Watcherがファイルを見つけたとみなす前にファイルが達する必要がある最小サイズ(バイト単位)。デフォルトは0(ゼロ)です。

steady_state_duration

File Watcherがファイルを見つけたとみなす前にファイルが変化せずに留まっている必要がある最小間隔。1時間を超えることはできません。NULLに設定すると、内部の値が使用されます。最小値は10秒です。File Watcherジョブの操作を効率化するために、すべてのFile Watcherで類似したsteady_state_durationの値を使用することをお薦めします。また、File Watcherスケジュールの反復間隔は、steady_state_durationの値以上である必要があります。

comments

オプションのコメント。

enabled

TRUE(デフォルト)の場合、File Watcherは有効です。


使用上の注意

スキーマにFile Watcherを作成するには、CREATE JOBシステム権限が必要です。自分のスキーマと異なるスキーマ(許可されないSYSスキーマ以外)にFile Watcherを作成するには、CREATE ANY JOBシステム権限が必要です。

CREATE_GROUPプロシージャ

このプロシージャは、グループを作成します。グループにはメンバーが含まれ、メンバーはグループ作成時または後で指定できます。グループには、ウィンドウ・グループ、データベース接続先グループ、外部接続先グループの3つのタイプがあります。

他のDBMS_SCHEDULERパッケージのプロシージャでグループ名を使用して、オブジェクトのリストを指定できます。たとえば、リモート・データベース・ジョブに複数の接続先を指定するには、ジョブのDESTINATION_NAMEパラメータにグループ名を入力します。

構文

DBMS_SCHEDULER.CREATE_GROUP (
   group_name           IN VARCHAR2,
   group_type           IN VARCHAR2,
   member               IN VARCHAR2 DEFAULT NULL,
   comments             IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-25 CREATE_GROUPプロシージャのパラメータ

パラメータ 説明

group_name

グループに割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。これはNULLにはできません。二重引用符で囲まれていない場合は、大文字に変換されます。

group_type

グループにあるメンバーのタイプ。すべてのメンバーは同じタイプである必要があります。有効なタイプは、次のとおりです。

  • 'DB_DEST'

    (データベース接続先)メンバーは、リモート・データベース・ジョブを実行するためのデータベース接続先です。

  • 'EXTERNAL_DEST

    (外部接続先)メンバーは、リモート外部ジョブを実行するための外部接続先です。

  • 'WINDOW'

    メンバーはSchedulerウィンドウです。このタイプのグループを作成するには、MANAGE SCHEDULER権限が必要です。

データベース接続先および外部接続先グループのメンバーは次の形式になります。

[[schema.]credential@][schema.]destination

各項目の意味は、次のとおりです。

  • credentialは、既存の資格証明の名前です。

  • destinationは、既存のデータベース接続先または外部接続先の名前です。

接続先メンバーの資格証明部分はオプションです。省略すると、この接続先メンバーを使用するジョブはデフォルトの資格証明を使用します。

ウィンドウ・グループのメンバーはウィンドウの名前です。すべてのSchedulerウィンドウはSYSスキーマに存在するため、ウィンドウのスキーマ名は指定しません。

member

グループ・メンバーのカンマ区切りリスト(オプション)。デフォルトはNULLです。NULLの場合、ADD_GROUP_MEMBERプロシージャを使用してメンバーを追加します。ADD_GROUP_MEMBERを使用して、後でメンバーを追加することもできます。

キーワードLOCALは、データベース接続先グループまたは外部接続先グループでメンバーとして使用することができます。

  • データベース接続先グループでは、LOCALはジョブが作成されるソース・データベースを表します。資格証明を前に付けることはできません。

  • 外部接続先グループでは、LOCALはソース・データベースが存在するホストを表します。オプションで、資格証明名を前に付けることができます。資格証明が入力されない場合、接続先としてこのグループを使用するジョブにはデフォルトの資格証明が必要です。

comments

グループを説明するテキスト文字列。Schedulerではこの引数は使用されません。


使用上の注意

グループは特定のスキーマに存在し、CREATE JOBシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマにグループを作成するには、CREATE ANY JOB権限が必要です。グループ名は、すべてのSchedulerオブジェクト内で一意である必要があります。

ジョブまたはスケジュールを作成するときに他のユーザーがグループを参照できるように、グループに対するSELECTまたはREAD権限を付与することができます。他のユーザーがグループを変更できるようにするには、グループに対するALTER権限を付与することができます。

各グループメンバーは、グループ内で一意である必要があります。接続先グループでは、資格証明/接続先名のペアがグループ内で一意である必要があります。いずれのグループ・メンバーも存在しない場合は、エラーが発生します。接続先グループでは、メンバーの資格証明と接続先の両方の部分が存在する必要があります。

同じタイプの別のグループは、グループ・メンバーになることができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。

グループは使用可能で作成されますが、使用禁止にできます。

次のPL/SQLブロックはproduction_dest1という名前のグループを作成します。このグループのメンバーは、本番データベースのコレクションに使用するデータベース接続先です。

BEGIN
  DBMS_SCHEDULER.CREATE_GROUP(
    GROUP_NAME    => 'production_dest1',
    GROUP_TYPE    => 'DB_DEST',
    MEMBER        => 'LOCAL, oracle_cred@prodhost1, prodhost2',
    COMMENTS      => 'All sector1 production machines');
END;

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,
   credential_name      IN VARCHAR2                 DEFAULT NULL,
   destination_name     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',
   credential_name         IN VARCHAR2              DEFAULT NULL,
   destination_name        IN VARCHAR2              DEFAULT NULL);

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

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',
   credential_name      IN VARCHAR2                 DEFAULT NULL,
   destination_name     IN VARCHAR2                 DEFAULT NULL);

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

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,
   credential_name         IN VARCHAR2          DEFAULT NULL,
   destination_name        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 DEFAULT NULL,
   event_condition         IN VARCHAR2          DEFAULT NULL,
   queue_spec              IN VARCHAR2,
   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,
   credential_name         IN VARCHAR2          DEFAULT NULL,
   destination_name        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',
   credential_name         IN VARCHAR2          DEFAULT NULL,
   destination_name        IN VARCHAR2          DEFAULT NULL);

パラメータ

表140-26 CREATE_JOBプロシージャのパラメータ

パラメータ 説明

job_name

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

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

job_type

この属性は、作成するジョブのタイプを指定します。これを指定しない場合、エラーが発生します。関連情報については、次の行のjob_actionを参照してください。

サポートされる値は、次のとおりです。

  • 'PLSQL_BLOCK'

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

  • 'STORED_PROCEDURE'

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

  • 'EXECUTABLE'

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

  • 'CHAIN'

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


  • 'EXTERNAL_SCRIPT'

    ジョブが、そのジョブを実行するコンピュータのコマンド・シェルを使用する外部スクリプトであることを示します。これは、Windowsの場合はcmd.exe、UNIXベースのシステムの場合はshシェルになります。ただし、スクリプトの最初の行で接頭辞#!を使用して異なるインタプリタが指定されている場合は除きます。


  • 'SQL_SCRIPT'

    ジョブがSQL*Plusスクリプトであることを示します。

    ジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指している必要があります。SQL*Plusスクリプトは、SQL*Plus実行可能ファイルで実行します。ジョブは、データベース資格証明を含む接続資格証明を指している場合があります。その場合、SQL*Plusスクリプトを実行する前に、この資格証明を使用してデータベースに接続します。

    接続資格証明の使用を選択した場合、set_attributeを使用してConnect_Credential_Name属性を指定する必要があります。接続資格証明がない場合、明示的なSQL*Plus接続文で有効なデータベースのユーザーIDおよびパスワードを指定する必要があります。

    ジョブ所有者は、CREATE EXTERNAL JOBシステム権限を持っている必要があります。


  • 'BACKUP_SCRIPT'

    ジョブがRMANバックアップ・スクリプトであることを示します。

    スクリプトは、ターゲット・コマンドを実行する前に、パスワードまたはOS認証を使用するCONNECT文を実行します。ジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指します。RMANセッションは、このオペレーティング・システム・ユーザーが実行します。

    Schedulerは、現在のOracleホームのRMAN実行可能ファイルを使用してスクリプトを実行し、そのファイルがない場合はエラーをスローします。

    ジョブ所有者は、CREATE EXTERNAL JOBシステム権限を持っている必要があります。

job_action

この属性は、ジョブのアクションを指定します。インライン・プログラムに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によって値が割り当てられます。

    使用可能なメタデータ属性の詳細は、表140-37を参照してください。

  • ストアド・プロシージャの場合:

    このアクションはストアド・プロシージャの名前です。ジョブとは別のスキーマにプロシージャが存在する場合は、そのスキーマを指定する必要があります。大/小文字の区別が必要な場合は、スキーマ名およびストア・プロシージャ名を二重引用符で囲みます。たとえば、job_action_action=>'"Schema"."Procedure"'のように指定します。

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

  • 実行可能ファイルの場合:

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

    注意: シェル・スクリプトの構文はサポートされていません。実行可能ファイルの名前とパスからなる構文のみがサポートされています。

  • チェーンの場合:

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


  • 外部スクリプトの場合:

    job_actionは、オペレーティング・システム・スクリプトまたはインライン・オペレーティング・システム・スクリプトへのパスである必要があります。job_actionがスクリプトへのパスである場合、ジョブを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。job_actionには、SQL*PlusまたはRMAN実行可能ファイルへのコールが直接含まれている場合があります。ジョブを実行するすべてのコンピュータのデフォルトの場所にそれらの実行可能ファイルが格納されている場合、ファイルのフルパスを指定する必要はありません。

    ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。ジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指している必要があります。

  • SQLスクリプトの場合:

    job_actionは、SQL*PlusスクリプトまたはインラインSQL*Plusスクリプトへのパスである必要があります。job_actionがスクリプトへのパスである場合、ジョブを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。

    ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。引数に名前が付いている場合、それらの引数はSQL*Plusセッションの名前付き変数にもバインドされます。

  • バックアップ・スクリプトの場合:

    job_actionは、RMANスクリプトまたはインラインRMANスクリプトへのパスである必要があります。program_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という形式の値ペアです。保護されていない場合は、キュー名のみ指定する必要があります。指定したキュー名が完全修飾名でない場合、キューは、ジョブの所有者のスキーマ内にあるとみなされます。保護キューの場合、指定するエージェント名は、キューに現在サブスクライブされている有効なエージェントの名前である必要があります。

  • File Watcher名。このオプションの詳細は、『Oracle Database管理者ガイド』を参照してください。

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

credential_name

ジョブと使用するデフォルトの資格証明。リモート・データベース・ジョブ、リモート外部ジョブ、ローカル外部ジョブ、スクリプト・ジョブおよびファイル到着イベントを処理するイベント・ベースのジョブにのみ適用されます。資格証明が存在している必要があります。

ローカル・データベース・ジョブでは、NULLに設定してください。

ローカル外部ジョブのみでは、この属性がNULL(デフォルト)になっている場合、優先(デフォルトの)資格証明が選択されます。ローカルの外部ジョブの優先資格証明の詳細は、『Oracle Database管理者ガイド』を参照してください。

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

destination_name

ジョブのデータベース接続先または外部接続先。リモート・データベース・ジョブおよびリモート外部ジョブのみに使用します。ローカル・データベースで実行されているジョブまたはローカル外部ジョブ(実行可能)では、NULLに設定してください。

この属性は、単一の接続先名またはタイプ'EXTERNAL_DEST'または'DB_DEST'のグループの名前にできます。単一の接続先またはグループは、すでに存在している必要があります。

この属性には、次の事項が適用されます。

  • データベース接続先の場合、CREATE_DATABASE_DESTINATIONプロシージャで作成されている必要があります。

  • 外部接続先の場合、リモートSchedulerエージェントをローカル・データベースに登録して、暗黙的に作成されている必要があります。

  • グループの場合、グループの各メンバーが存在し、グループで指定されたすべての接続先でジョブが実行される必要があります。「CREATE_GROUPプロシージャ」を参照してください。

destination_nameは、次の場合に接続先グループを参照できません。

  • ジョブ・タイプが'CHAIN'の場合。

  • ジョブのスタイルが'LIGHTWEIGHT'の場合。

CREATE_JOBcredential_name引数がNULLである場合、各接続先には次の形式で資格証明を前に付ける必要があります。

credential.destination

資格証明はすでに存在している必要があります。credential_name引数が指定されている場合、資格証明が前に付いていないすべての接続先でデフォルトの資格証明として機能します。

既存の接続先については、ビュー*_SCHEDULER_DB_DESTSおよびALL_SCHEDULER_EXTERNAL DESTSを問い合せ、既存のグループおよびそのメンバーについては、*_SCHEDULER_GROUP_MEMBERSを問い合せることができます。

*** destinationジョブ属性はOracle Database 11gR2で非推奨になり、destination_nameと置き換わります。

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に設定されます。


使用上の注意

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

JOB_QUEUE_PROCESSES初期化パラメータは、ジョブの実行に対して作成できる処理の最大数を指定します。Oracle Database 11gリリース2以降、JOB_QUEUE_PROCESSESDBMS_SCHEDULERジョブに適用されます。このパラメータを0に設定すると、DBMS_SCHEDULERジョブが無効になります。

ユーザー各自のスキーマでジョブを作成するには、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は、ジョブのイベント条件に一致するイベントが発生するたびに、イベント・ベースのジョブを実行します。ただし、ジョブがすでに実行されている間に発生したイベントは無視され、イベントはコンシュームされますが別のジョブの実行がトリガーされることはありません。

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);

パラメータ

表140-27 CREATE_JOB_CLASSプロシージャのパラメータ

パラメータ 説明

job_class_name

ジョブ・クラスに割り当てる名前。ジョブ・クラスは、SYSスキーマ内にのみ作成できます。

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

resource_consumer_group

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

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

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

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

service

このクラス内のジョブが親和性を持つデータベース・サービスを指定します。つまりOracle 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から1000000です。0に設定すると、履歴は保持されません。NULL(デフォルト)の場合、Scheduler属性のlog_history(SET_SCHEDULER_ATTRIBUTEで設定可能)によって、保持する日数が設定されます。

comments

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


使用上の注意

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

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

CREATE_JOBSプロシージャ

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

構文

DBMS_SCHEDULER.CREATE_JOBS (
   jobdef_array      IN SYS.JOB_DEFINITION_ARRAY,
   commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-28 CREATE_JOBSプロシージャのパラメータ

パラメータ 説明

jobdef_array

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

commit_semantics

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

  • STOP_ON_FIRST_ERRORは、最初にエラーが発生した時点で戻されます。以前に正常に作成されたジョブはディスクにコミットされます。これがデフォルトです。

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

  • ABSORB_ERRORSは、エラーを吸収してリスト内の残りのジョブの作成を試行します。正常に作成されたすべてのジョブをコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。


使用上の注意

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

このプロシージャを使用して、複数の接続先ジョブを作成することはできません。つまり、job_definitionオブジェクトのdestination属性は、接続先グループを参照できません。

『Oracle Database管理者ガイド』を参照してください。

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);

パラメータ

表140-29 CREATE_PROGRAMプロシージャのパラメータ

パラメータ 説明

program_name

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

program_type

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

  • 'PLSQL_BLOCK'

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

  • 'STORED_PROCEDURE'

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

  • 'EXECUTABLE'

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

  • 'EXTERNAL_SCRIPT'

    ジョブが、そのジョブを実行するコンピュータのコマンド・シェルを使用する外部スクリプトであることを示します。これは、Windowsの場合はcmd.exe、UNIXベースのシステムの場合はshシェルになります。ただし、スクリプトの最初の行で接頭辞#!を使用して異なるインタプリタが指定されている場合は除きます。

  • 'SQL_SCRIPT'

    プログラムがSQL*Plusスクリプトであることを示します。

    このプログラムを使用するジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指している必要があります。SQL*Plusスクリプトは、SQL*Plus実行可能ファイルで実行します。このプログラムを使用するジョブは、データベース資格証明を含む接続資格証明を指している場合があります。その場合、SQL*Plusスクリプトを実行する前に、この資格証明を使用してデータベースに接続します。

    接続資格証明の使用を選択した場合、set_attributeを使用してConnect_Credential_Name属性を指定する必要があります。接続資格証明がない場合、明示的なSQL*Plus接続文で有効なデータベースのユーザーIDおよびパスワードを指定する必要があります。


  • 'BACKUP_SCRIPT'

プログラムがRMANバックアップ・スクリプトであることを示します。

スクリプトは、ターゲット・コマンドを実行する前に、パスワードまたはOS認証を使用するCONNECT文を実行します。Schedulerは、現在のOracleホームのRMAN実行可能ファイルを使用してスクリプトを実行し、そのファイルがない場合はエラーをスローします。

program_action

この属性は、プログラムのアクションを指定します。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によって値が割り当てられます。使用可能なメタデータ属性の詳細は、表140-37を参照してください。

    無名ブロックの場合は、変数名のjob_namejob_ownerjob_startwindow_startwindow_endを使用して、特別なSchedulerのメタデータにアクセスできます。これらの詳細は、「DEFINE_METADATA_ARGUMENTプロシージャ」を参照してください。


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

    大/小文字の区別が必要な場合は、スキーマ名およびストア・プロシージャ名を二重引用符で囲みます。たとえば、program_action=>'"Schema"."Procedure"'のように指定します。

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


  • 外部スクリプトの場合、このアクションは、オペレーティング・システム・スクリプトまたはインライン・オペレーティング・システム・スクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。program_actionには、SQL*PlusまたはRMAN実行可能ファイルへの直接コールが含まれる場合があります。ジョブを実行するすべてのコンピュータのデフォルトの場所にそれらの実行可能ファイルが格納されている場合、ファイルのフルパスを指定する必要はありません。

    ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。プログラムは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指します。

  • SQLスクリプトの場合、このアクションは、SQL*PlusスクリプトまたはインラインSQL*Plusスクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。

    ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。引数に名前が付いている場合、それらの引数はSQL*Plusセッションの名前付き変数にもバインドされます。

  • バックアップ・スクリプトの場合、このアクションは、RMANスクリプトまたはインラインRMANスクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。

    ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。

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);

パラメータ

表140-30 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_dateおよびrepeat_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);

パラメータ

表140-31 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プロシージャ」を参照してください。

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);

パラメータ

表140-32 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);

パラメータ

表140-33 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システム権限を持っているユーザーである必要があります)。

チェーン・ステップのベースをFile Watcherにすることもできます。これを行うには、File Watcher名を直接queue_specパラメータに入力するか、event_schedule_nameパラメータでFile Watcherスケジュールを使用します。

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);

パラメータ

表140-34 DEFINE_CHAIN_RULEプロシージャのパラメータ

パラメータ 説明

chain_name

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

condition

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

  • Schedulerチェーン条件構文

    詳細は、「Schedulerチェーン条件構文」を参照してください。

  • SQLのWHERE句構文

    条件を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'に設定されます。

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チェーン条件構文

Schedulerチェーン条件構文を使用すると、現行のチェーン内のステップの状態およびエラー・コードを使用して条件を簡単に作成できます。

チェーン条件構文

次に、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つのみのプログラムまたはチェーンを実行できます。

このプロシージャでは、すべてのステップ属性を設定することはできません。credential_namedestination_nameなど、追加のチェーン・ステップ属性を設定するには、ALTER_CHAINプロシージャを使用します。

構文

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

パラメータ

表140-35 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);

パラメータ

表140-36 DEFINE_METADATA_ARGUMENTプロシージャのパラメータ

パラメータ 説明

program_name

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

metadata_attribute

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

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

argument_position

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

argument_name

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


表140-37 メタデータ属性

メタデータ属性 データ・タイプ 説明

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列のタイプと同じタイプになります。ファイル到着イベントの場合、event_messageSYS.SCHEDULER_FILEWATCHER_RESULTのタイプとなります。「SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプ」を参照してください。


使用上の注意

プログラム引数を定義するには、プログラムの所有者であるか、プログラムの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);

パラメータ

表140-38 DEFINE_PROGRAM_ARGUMENTプロシージャのパラメータ

パラメータ 説明

program_name

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

argument_position

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

argument_name

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

argument_type

定義する引数のデータ・タイプ。この属性は、Schedulerによって検証または使用されません。引数に割り当てる値を決定する際に、プログラムのユーザーによってargument_typeが使用されます。任意の有効なSQLデータ・タイプを使用できます。

default_value

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

out_argument

このパラメータは、将来の使用に備えて確保されています。これは、FALSEに設定する必要があります。


使用上の注意

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

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

DEFINE_PROGRAM_ARGUMENTでは、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。

DISABLEプロシージャ

このプロシージャは、プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcherまたはグループを使用禁止にします。オブジェクトが使用禁止である場合、enabled属性はFALSEに設定されています。

構文

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

パラメータ

表140-39 DISABLEプロシージャのパラメータ

パラメータ 説明

name

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

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

グループ名を指定すると、グループが使用禁止になりますが、グループ・メンバーの使用可能な状態に影響はありません。

force

TRUEの場合、オブジェクトは他のオブジェクトによって依存されている場合でも使用禁止になります。詳細は、「使用上の注意」を参照してください。

commit_semantics

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

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

    これがデフォルトです。

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

    このタイプは、ジョブまたは一連のジョブを使用禁止にする場合にのみサポートされます。また、forceTRUEに設定した場合、このタイプはサポートされません。

  • ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの使用禁止化を試行し、正常に実行されたすべての使用禁止化操作をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

    このタイプは、ジョブまたは一連のジョブを使用禁止にする場合にのみサポートされます。


使用上の注意

ウィンドウには前にSYSを付ける必要があります。

すでに使用禁止になっているオブジェクトを使用禁止にしても、エラーは発生しません。

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

ウィンドウまたはタイプWINDOWのグループでDISABLEを実行するには、MANAGE SCHEDULER権限が必要です。

DISABLEは、SYSスキーマ以外の任意のスキーマで使用できます。

ジョブ

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

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

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

複数の接続先があるジョブでは、特定の接続先で子ジョブを使用禁止にすることはできません。ただし、接続先を使用禁止にすることは可能です。

プログラム

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

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

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

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

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

File Watcher

forceFALSEに設定した場合、File Watcherがどのジョブからも参照されないようにする必要があり、参照された場合にはエラーが発生します。File Watcherの使用禁止を強制すると、File Watcherに依存するジョブは使用禁止になります。

ウィンドウ

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

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

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

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

ウィンドウ・グループ

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

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

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

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

  • ウィンドウ・グループは使用禁止となりますが、オープン中のウィンドウはクローズされないか、または使用禁止になりません。これは、最後まで継続できます。

  • ウィンドウ・グループは使用禁止になりますが、このウィンドウ・グループがスケジュールとして設定されているジョブは使用禁止になりません。

ジョブのチェーン

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

データベース接続先

データベース接続先を使用禁止にすると、次のような影響があります。

  • 複数の接続先ジョブが実行されると、接続先がスキップされます。

  • ジョブに対してすべての接続先を使用禁止にした場合、Schedulerがジョブを実行しようとするとエラーが発生します。

  • *_SCHEDULER_JOB_DESTSREFS_ENABLED列は、データベース接続先を参照するすべてのジョブに対してFALSEに設定されます。

外部接続先

外部接続先を使用禁止にすると、次のような影響があります。

  • 依存しているデータベース接続先は使用可能な状態を保持しますが、Schedulerが外部接続先に依存するデータベース接続先でジョブを実行しようとするとエラーが発生します。

  • *_SCHEDULER_JOB_DESTSREFS_ENABLED列は、外部接続先を参照するすべての外部ジョブおよび外部接続先に依存するデータベース接続先を持つすべてのデータベース・ジョブに対してFALSEに設定されます。

グループ

外部接続先グループまたはデータベース接続先グループを使用禁止にした場合、Schedulerが外部接続先にグループを指定するジョブを実行しようとするとエラーが発生します。

DROP_AGENT_DESTINATIONプロシージャ

このプロシージャは、1つ以上の外部接続先(エージェント接続先とも呼ばれます)を削除します。外部接続先を削除する優先的な方法(schagentユーティリティを使用してデータベースでのSchedulerエージェントの登録を解除)が失敗したために使用できない場合にのみ使用します。

このプロシージャは、SYSユーザーまたはMANAGE SCHEDULER権限を持つユーザーのみがコールできます。


注意:

外部接続先は、データベースにエージェントを登録することで、暗黙的にのみソース・データベースで作成されます。ユーザーがコール可能なCREATE_AGENT_DESTINATIONプロシージャはありません。

構文

DBMS_SCHEDULER.DROP_AGENT_DESTINATION (
   destination_name        IN VARCHAR2);

パラメータ

表140-40 DROP_AGENT_DESTINATIONプロシージャのパラメータ

パラメータ 説明

destination_name

削除する外部接続先のカンマ区切りリスト。ユーザーSYSがすべての外部接続先を所有しているため、接頭辞としてスキーマ名を付加しないでください。

存在しない外部接続先が発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべての外部接続先が削除されます。

NULL以外にしてください。


使用上の注意

外部接続先が削除されると、次のような影響があります。

  • 外部接続先を参照するすべてのデータベース接続先が使用禁止になり、そのagent属性がNULLに設定されます。

  • 該当する接続先を参照する外部接続先グループのメンバーがグループから削除されます。

  • 該当する外部接続先を参照する*_SCHEDULER_JOB_DESTSビューにあるすべてのジョブ・インスタンスも削除されます。

  • 該当する接続先に対して実行されているジョブは停止します。

DROP_CHAINプロシージャ

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

構文

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

パラメータ

表140-41 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);

パラメータ

表140-42 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);

パラメータ

表140-43 DROP_CHAIN_STEPプロシージャのパラメータ

パラメータ 説明

chain_name

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

step_name

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

force

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


使用上の注意

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

DROP_CREDENTIALプロシージャ


注意:

Oracle Database 12cリリース1(12.1)では、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、かわりにDBMS_CREDENTIALパッケージで提供される拡張機能、具体的にはDROP_CREDENTIALプロシージャを使用することをお薦めします。

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

構文

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

パラメータ

表140-44 DROP_CREDENTIALプロシージャのパラメータ

パラメータ 説明

credential_name

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

force

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


使用上の注意

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

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

DROP_DATABASE_DESTINATIONプロシージャ

このプロシージャは、1つ以上のデータベース接続先を削除します。

構文

DBMS_SCHEDULER.DROP_DATABASE_DESTINATION (
   destination_name        IN VARCHAR2);

パラメータ

表140-45 DROP_DATABASE_DESTINATIONプロシージャのパラメータ

パラメータ 説明

destination_name

削除する接続先の名前。削除するデータベース接続先のカンマ区切りリストを使用できます。各データベース接続先は、オプションでスキーマ名を接頭辞として付加できます。

存在しないデータベース接続先が発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべてのデータベース接続先が削除されます。

NULL以外にしてください。


使用上の注意

所有者またはCREATE ANY JOBシステム権限を持つユーザーのみがデータベース接続先を削除できます。

データベース接続先が削除されると、次のような影響があります。

  • 該当するデータベース接続先を参照する*_SCHEDULER_JOB_DESTSビューにあるすべてのジョブ・インスタンスも削除されます。

  • 該当する接続先に対して実行されているジョブは停止します。

  • 該当する接続先を参照するデータベース接続先グループのメンバーがグループから削除されます。

DROP_FILE_WATCHERプロシージャ

このプロシージャは、1つ以上のFile Watcherを削除します。

構文

DBMS_SCHEDULER.DROP_FILE_WATCHER (
   file_watcher_name       IN VARCHAR2,
   force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-46 DROP_FILE_WATCHERプロシージャのパラメータ

パラメータ 説明

file_watcher_name

削除するFile Watcher。File Watcherのカンマ区切りリストを使用できます。各File Watcher名は、オプションでスキーマ名を接頭辞として付加できます。

NULL以外にしてください。

force

FALSEに設定した場合、File Watcherがどのジョブからも参照されないようにする必要があり、参照された場合はエラーが発生します。TRUEに設定した場合、File Watcherは、ジョブから参照されているかどうかに関係なく削除されます。この場合、削除されたFile Watcherを参照するジョブは使用禁止になります。


使用上の注意

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

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

DROP_GROUPプロシージャ

このプロシージャは、1つ以上のグループを削除します。

構文

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

パラメータ

表140-47 DROP_GROUPプロシージャのパラメータ

パラメータ 説明

group_name

削除するグループ。グループ名のカンマ区切りリストを使用できます。各グループ名は、オプションでスキーマ名を接頭辞として付加できます。

存在しないグループが発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべてのグループは削除されます。

NULL以外にしてください。

force

FALSEに設定した場合、グループがどのジョブからも参照されないようにする必要があり、参照された場合にはエラーが発生します。TRUEに設定した場合、グループは、ジョブから参照されているかどうかに関係なく削除されます。この場合、グループを参照しているすべてのジョブは使用禁止になり、グループを参照するすべてのジョブ・インスタンスは*_SCHEDULER_JOB_DESTSビューから削除されます。


使用上の注意

所有者またはCREATE ANY JOBシステム権限を持つユーザーのみがグループを削除できます。タイプWINDOWのグループを削除するには、MANAGE SCHEDULER権限が必要です。

DROP_JOBプロシージャ

このプロシージャは、1つ以上のジョブ・クラスにある1つ以上のジョブまたはすべてのジョブを削除します。ジョブを削除すると、そのジョブに設定されたすべての引数値も削除されます。

構文

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

パラメータ

表140-48 DROP_JOBプロシージャのパラメータ

パラメータ 説明

job_name

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

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

force

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

defer

deferTRUEに設定した場合、Schedulerは現在実行中のジョブの完了を許可した後、ジョブを削除します。

commit_semantics

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

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

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

  • ABSORB_ERRORS: エラーを吸収して残りのジョブの削除を試行し、正常に実行されたすべての削除操作をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

job_nameリストにジョブ・クラスが含まれる場合、STOP_ON_FIRST_ERRORのみが許可されます。


使用上の注意

forceおよびdeferFALSEに設定した場合で、コール時にジョブを実行中の場合、このジョブを削除する試行は失敗します。commit_semanticsの設定により、DROP_JOBのコール全体が失敗する場合があります。

forcedeferの両方をTRUEに設定すると、エラーが発生します。

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

DROP_JOB_CLASSプロシージャ

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

構文

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

パラメータ

表140-49 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);

パラメータ

表140-50 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);

パラメータ

表140-51 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);

パラメータ

表140-52 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);

パラメータ

表140-53 DROP_WINDOWプロシージャのパラメータ

パラメータ 説明

window_name

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

force

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

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

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


使用上の注意

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

ENABLEプロシージャ

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

使用禁止になっていたジョブを使用可能にすると、Schedulerによりスケジュールに従ってジョブが自動的に実行されるようになります。また、使用禁止になっていたジョブを使用可能にすると、*_SCHEDULER_JOBSデータ・ディクショナリ・ビューのジョブRUN_COUNT列、FAILURE_COUNT列およびRETRY_COUNT列のリセットも行われます。

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

構文

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

パラメータ

表140-54 ENABLEプロシージャのパラメータ

パラメータ 説明

name

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

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

グループ名を指定すると、グループが使用可能になりますが、グループ・メンバーの使用可能な状態に影響はありません。

commit_semantics

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

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

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

    このタイプは、ジョブまたは一連のジョブを使用可能にする場合にのみサポートされます。

  • ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの使用可能化を試行します。正常に実行されたすべての使用可能化操作をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

    このタイプは、ジョブまたは一連のジョブを使用可能にする場合にのみサポートされます。


使用上の注意

ウィンドウ名には前にSYSを付ける必要があります。

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

File Watcherを使用可能にするには、File Watcherの所有者は、指定した資格証明でEXECUTE権限を持つ必要があります。

ENABLEは、SYSスキーマ以外の任意のスキーマで使用できます。

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);

パラメータ

表140-55 END_DETACHED_JOB_RUNプロシージャのパラメータ

パラメータ 説明

job_name

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

error_number

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

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);

パラメータ

表140-56 EVALUATE_CALENDAR_STRINGプロシージャのパラメータ

パラメータ 説明

calendar_string

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

start_date

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

return_date_after

return_date_after引数は、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);

パラメータ

表140-57 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;

パラメータ

表140-58 GENERATE_JOB_NAMEファンクションのパラメータ

パラメータ 説明

prefix

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


使用上の注意

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

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

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

GET_AGENT_INFOファンクション

このファンクションは、選択された属性に応じて、実行中のジョブ数などのエージェント固有のジョブ情報を戻します。

構文

DBMS_SCHEDULER.GET_AGENT_INFO (
   agent_name        IN VARCHAR2,
   attribute         IN VARCHAR2) RETURN VARCHAR2;

パラメータ

表140-59 GET_AGENT_INFOファンクションのパラメータ

パラメータ 説明

agent_name

エージェントが実行される外部接続先の名前

attribute

設定可能な属性値

  • VERSION:.エージェントのバージョン番号を戻します。CREATE JOBシステム権限が必要です。

  • UPTIME: エージェントが起動しており実行中である時間を戻します。CREATE JOBシステム権限が必要です。

  • NUMBER_OF_RUNNING_JOBS: エージェントが現在実行中のジョブ数を戻します。CREATE JOBシステム権限が必要です。

  • TOTAL_JOBS_RUN: エージェントが起動された後に、エージェントによって実行されたジョブ数を戻します。CREATE JOBシステム権限が必要です。

  • RUNNING_JOBS: 現在実行中のジョブ名のカンマ区切りリストを戻します。MANAGE SCHEDULERシステム権限が必要です。

  • ALL: 前のオプションによって戻されたすべての情報を戻します。MANAGE SCHEDULERシステム権限が必要です。


使用上の注意

このファンクションは、schagentユーティリティのstatusオプションと同じ情報を戻します。『Oracle Database管理者ガイド』を参照してください。

GET_AGENT_VERSIONファンクション

このファンクションでは、データベースに登録されており、現在実行中のSchedulerエージェントのバージョン文字列が戻されます。GET_AGENT_VERSIONは、エージェントがデータベースに登録されていない場合、またはエージェントが現在実行中でない場合にエラーをスローします。

構文

DBMS_SCHEDULER.GET_AGENT_VERSION (
   agent_host        IN VARCHAR2) RETURN VARCHAR2;
   

パラメータ

表140-60 GET_AGENT_VERSIONファンクションのパラメータ

パラメータ 説明

agent_host

エージェントが実行されているホスト名またはポートのいずれかをhostname:portの形式で指定するか、データベースに登録されているすべてのSchedulerエージェントを示すALL_SCHEDULER_EXTERNAL_DESTSビューのdestination_name列に示されているエージェント名を指定します。


使用上の注意

このファンクションには、CREATE EXTERNAL JOBシステム権限が必要です。

GET_ATTRIBUTEプロシージャ

このプロシージャは、Schedulerオブジェクトの属性値を取得します。様々なタイプの値を取得するために、オーバーロードされています。

構文

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

DBMS_SCHEDULER.GET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          OUT VARCHAR2,
   value2         OUT VARCHAR2);

パラメータ

表140-61 GET_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

name

オブジェクトの名前。

attribute

取得する属性。属性値の表は、「SET_ATTRIBUTEプロシージャ」を参照してください。

value

属性の既存値。

value2

value2引数は、2つ目の値(オプション)に使用します。

ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。


使用上の注意

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

様々なSchedulerオブジェクト・タイプに取得できる属性値の表は、「SET_ATTRIBUTEプロシージャ」を参照してください。

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                IN OUT NOCOPY {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);

パラメータ

表140-62 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エージェントをデータベースに登録すると、外部接続先が作成されます。外部接続先の名前はビュー*_SCHEDULER_EXTERNAL_DESTSに表示できます。)

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

credential_name

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

file_contents

ファイルの内容の読み取り先変数。

destination_file_name

ファイルの内容の書き込み先ファイル。

destination_directory_object

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

destination_permissions

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


使用上の注意

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

GET_SCHEDULER_ATTRIBUTEプロシージャ

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

構文

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

パラメータ

表140-63 GET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attribute

属性の名前。

value

属性の既存値。


使用上の注意

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

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

表140-64 GET_SCHEDULER_ATTRIBUTEで取得可能なScheduler属性

Scheduler属性 説明

current_open_window

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

default_timezone

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

email_sender

ジョブの状態を電子メール通知するための送信者のデフォルト電子メール・アドレス。

email_server

ジョブの状態イベントの電子メール通知を送信するためにSchedulerが使用するSMTPサーバー・アドレス。この属性がNULLの場合、電子メール通知は送信できません。

event_expiry_time

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

log_history

ジョブおよびウィンドウのログの保存期間(日)。有効値の範囲は、0から1000000です。

max_job_slave_processes

このScheduler属性は使用されません。


OPEN_WINDOWプロシージャ

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

構文

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

パラメータ

表140-65 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);

パラメータ

表140-66 PURGE_LOGプロシージャのパラメータ

パラメータ 説明

log_history

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

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);

パラメータ

表140-67 PUT_FILEプロシージャのパラメータ

パラメータ 説明

destination_file

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

destination_host

NULLまたは'localhost'に設定されている場合、ファイルはローカル・コンピュータのファイル・システムに保存されます。

リモート・ホストに保存する場合、このパラメータは有効な外部接続先の名前である必要があります。(リモートSchedulerエージェントをデータベースに登録すると、外部接続先が作成されます。外部接続先の名前はビュー*_SCHEDULER_EXTERNAL_DESTSに表示できます。)

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);

パラメータ

表140-68 REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ

パラメータ 説明

subscriber_name

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


使用上の注意

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

REMOVE_GROUP_MEMBERプロシージャ

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

構文

DBMS_SCHEDULER.REMOVE_GROUP_MEMBER (
   group_name              IN VARCHAR2,
   member                  IN VARCHAR2);

パラメータ

表140-69 REMOVE_GROUP_MEMBERプロシージャのパラメータ

パラメータ 説明

group_name

グループの名前。

member_name

グループから削除するメンバーの名前。削除するメンバーのカンマ区切りリスト。いずれかのメンバーがグループの一部でない場合は、エラーが戻されます。

同じタイプのグループはメンバーに指定することができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。

メンバーが接続先の場合、この接続先で実行されるすべてのジョブ・インスタンスは*_SCHEDULER_JOB_DESTSビューから削除されます。


使用上の注意

次のユーザーはグループからメンバーを削除できます。

  • グループ所有者。

  • グループでALTERオブジェクト権限を付与されたユーザー。

  • CREATE ANY JOBシステム権限があるユーザー。

タイプWINDOWのグループからメンバーを削除するには、MANAGE SCHEDULER権限が必要です。

REMOVE_JOB_EMAIL_NOTIFICATIONプロシージャ

このプロシージャは、ジョブの電子メール通知を削除します。すべての電子メール通知を削除することも、特定の受信者または特定のイベントのみの通知を削除することもできます。

構文

DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION (
    job_name             IN VARCHAR2,
    recipients           IN VARCHAR2 DEFAULT NULL,
    events               IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-70 ADD_JOB_EMAIL_NOTIFICATIONプロシージャのパラメータ

パラメータ 説明

job_name

電子メール通知を削除するジョブの名前。NULL以外にしてください。

recipients

電子メール通知を削除する電子メール・アドレス。電子メール・アドレスのカンマ区切りリスト。

events

電子メール通知を削除するジョブの状態イベント。ジョブの状態イベントのカンマ区切りリスト。


使用上の注意

複数の受信者および複数のイベントを指定すると、指定したそれぞれのイベントに対する通知は指定したそれぞれ受信者から削除されます。このプロシージャは、指定されても以前に追加されていない受信者またはイベントを無視します。

recipientsNULLの場合、既存のすべての受信者で、指定したイベントに対する電子メール通知が削除されます。eventsNULLの場合、指定した受信者で、すべてのイベントに対する通知が削除されます。recipientseventsの両方がNULLの場合、ジョブですべての電子メール通知が削除されます。

たとえば、recipientsが'jsmith@example.com,rjones@example.com'でありeventsが'JOB_FAILED,JOB_BROKEN'である場合、jsmithとrjonesの両方で、JOB_FAILEDイベントとJOB_BROKENイベントの両方に対する通知が削除されます。recipientsNULLの場合、jsmith、rjonesおよびこれらのイベントに以前に定義された受信者で、JOB_FAILEDイベントとJOB_BROKENイベントの両方に対する通知が削除されます。

このプロシージャをコールするには、ジョブ所有者になるか、CREATE ANY JOBシステム権限またはジョブに対するALTERオブジェクト権限を持つユーザーである必要があります。

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);

パラメータ

表140-71 RESET_JOB_ARGUMENT_VALUEプロシージャのパラメータ

パラメータ 説明

job_name

変更するジョブの名前。

argument_position

リセットするプログラム引数の位置。

argument_name

リセットするプログラム引数の名前。


使用上の注意

対応するプログラム引数にデフォルト値がない場合、このジョブは使用禁止になります。他のユーザーに所属するジョブのプログラム引数をリセットする場合は、そのジョブのALTER権限が必要です。引数は、位置または名前を使用して指定できます。

RESET_JOB_ARGUMENT_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数をリセットできます。

RESET_JOB_ARGUMENT_VALUEでは、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。

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);

パラメータ

表140-72 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プロシージャ

このプロシージャは、ジョブをただちに実行します。

ジョブが使用可能である場合は、Schedulerによって自動的に実行されます。スケジュールに従ってジョブを実行する場合は、RUN_JOBをコールする必要はありません。通常のスケジュール以外でジョブを実行する場合に、RUN_JOBを使用します。

構文

DBMS_SCHEDULER.RUN_JOB (
   job_name                IN VARCHAR2,
   use_current_session     IN BOOLEAN DEFAULT TRUE);

パラメータ

表140-73 RUN_JOBプロシージャのパラメータ

パラメータ 説明

job_name

ジョブ名またはエントリのカンマ区切りリスト(それぞれが既存のジョブの名前であり、オプションでスキーマ名およびドット区切りを接頭辞として付加できます)。

複数の接続先ジョブを指定すると、ジョブはすべての接続先で実行されます。この場合、use_current_session引数はFALSEである必要があります。

use_current_session

実行されたジョブが、プロシージャの呼出し元である同じセッションで生じるかどうかを指定します。ジョブ所有者のスキーマでは、ジョブは常にジョブ所有者として実行され、資格証明が指定されていない場合、ジョブは資格証明で指定されるユーザーを使用して実行されます。

use_current_sessionTRUEに設定した場合は、次のようになります。

  • コマンドラインでジョブをテストして、起こりうるエラーを確認できます。

  • *_scheduler_jobsstate, run_countlast_start_datelast_run_durationおよびfailure_countは更新されません。

  • RUN_JOBは、通常のスケジュール・ジョブと並行して実行できます。

use_current_sessionFALSEに設定した場合は、次のようになります。

  • エラー情報を確認するため、ジョブ・ログをチェックする必要があります。

  • *_scheduler_jobsの関連フィールドはすべて更新されます。

  • 通常のスケジュール・ジョブを実行中の場合、RUN_JOBを実行すると失敗します。

指定した接続先または接続先グループを持つジョブの場合、またはdetached属性がTRUEに設定されているチェーンまたはプログラムを指すジョブの場合、use_current_sessionFALSEである必要があります。


使用上の注意

ジョブが使用可能になっている必要はありません。ジョブが使用禁止になっている場合は、ジョブを実行する前に、次の妥当性チェックが行われます。

  • ジョブが有効なジョブ・クラスを指している。

  • ジョブ所有者が、ジョブ・クラスに対するEXECUTE権限を持っている。

  • プログラムまたはチェーンが参照される場合、そのプログラムまたはチェーンが存在する。

  • プログラムまたはチェーンが参照される場合、ジョブ所有者がそのプログラムまたはチェーンの実行権限を持っている。

  • すべての引数値が設定されている(またはデフォルト値を持っている)。

  • 外部ジョブの場合、ジョブ所有者がCREATE EXTERNAL JOB権限を持っている。

次のタイプのジョブでは、use_current_sessionの値としてTRUEは許可されません。

  • destination_name属性で接続先または接続先グループを指定するジョブ。

  • チェーンを指すジョブ(チェーン・ジョブ)。

  • 連結解除されたプログラム(連結解除されたジョブ)を使用するジョブ。

use_current_sessionTRUEの場合、RUN_JOBへのコールはジョブが完了するまでブロックされます。ジョブの実行中に発生したエラーは、RUN_JOBプロシージャにエラーとして戻されます。

RUN_JOBuse_current_session=TRUEで使用する場合、ジョブ状態は更新されず、ジョブは*_SCHEDULER_RUNNING_JOBSビューに表示されません。

use_current_sessionFALSEの場合、RUN_JOBはすぐに戻り、ジョブはジョブ・コーディネータに取得されて実行用のジョブ・スレーブに渡されます。ジョブの結果については、Schedulerのビューおよびログを参照する必要があります。

use_current_sessionTRUEに設定した場合、複数のユーザー・セッションで同時にRUN_JOBを使用できます。

RUN_JOBを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブを実行できます。

次にRUN_JOBの使用例を示します。

BEGIN
  DBMS_SCHEDULER.RUN_JOB(
    JOB_NAME            => 'EODJOB, DSS.ETLJOB',
    USE_CURRENT_SESSION => FALSE);
END;

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);

パラメータ

表140-74 SET_AGENT_REGISTRATION_PASSプロシージャのパラメータ

パラメータ 説明

registration_password

リモート・エージェントがデータベースに正常に登録するために指定する必要があるパスワード。NULLの場合、エージェントはデータベースに登録できなくなります。

expiration_date

NULL以外の値に設定した場合、この日付を過ぎると、registration_passwordは有効でなくなります。この日付を過ぎると、エージェントはデータベースに登録できなくなります。この値を過去の日付に設定することはできません。

max_uses

このパスワードで正常に実行できる登録の最大数。このパスワードで正常に実行された登録の数が最大数に達すると、エージェントはデータベースに登録できなくなります。この値を0または負の値に設定することはできません。NULLに設定すると、正常に実行された登録の数の制限はなくなります。


使用上の注意

悪用を防止するために、このパスワードは、指定した日付を過ぎたり、正常に実行された登録の数が最大数に達すると期限切れになるように設定できます。このプロシージャは、すでに設定されているパスワードを上書きします。このプロシージャを使用するには、MANAGE SCHEDULERシステム権限が必要です。

デフォルトでは、max_usesNULLに設定されており、正常に実行された登録の数に制限がないことを意味します。

エージェントの登録ごとまたは既知のエージェントの登録ごとに、エージェント登録パスワードをリセットすることをお薦めします。また、新しいエージェントを登録しない場合は、このパスワードをNULLに設定することをお薦めします。

SET_ATTRIBUTEプロシージャ

このプロシージャは、Schedulerオブジェクトの属性を修正します。様々なタイプの値を受け入れるために、オーバーロードされています。属性をNULLに設定するには、SET_ATTRIBUTE_NULLプロシージャを使用します。設定可能な属性は、変更するオブジェクトによって異なります。オブジェクト名以外のすべてのオブジェクトの属性を、変更できます。

構文

DBMS_SCHEDULER.SET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          IN {BOOLEAN|DATE|TIMESTAMP|
                        TIMESTAMP WITH TIME ZONE|TIMESTAMP WITH LOCAL TIME ZONE|
                        INTERVAL DAY TO SECOND});

DBMS_SCHEDULER.SET_ATTRIBUTE (
   name           IN VARCHAR2,
   attribute      IN VARCHAR2,
   value          IN VARCHAR2,
   value2         IN VARCHAR2 DEFAULT NULL);
   

パラメータ

表140-75 SET_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

name

オブジェクトの名前。

attribute

表140-77から表140-87を参照してください。

value

属性に設定する新しい値。NULLは指定できません。属性値をNULLに設定するには、SET_ATTRIBUTE_NULLプロシージャを使用します。

value2

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


表140-76は、Schedulerオブジェクト・タイプのディレクトリおよびオブジェクト・タイプ属性の表です。

これらのオブジェクト・タイプは、『Oracle Database管理者ガイド』に示されているSchedulerデータ・ディクショナリ・ビューを使用して表示できます。

表140-76 Schedulerオブジェクト・タイプの属性表

Schedulerオブジェクト・タイプ 属性の表

ジョブ

表140-77


プログラム

表140-79


スケジュール

表140-80


File Watcher

表140-81


ジョブ・クラス

表140-82


ウィンドウ

表140-83


チェーン

表140-84


データベース接続先

表140-85


外部接続先

表140-86


グループ

表140-87


資格証明

表140-88



使用上の注意

オブジェクトが使用可能な場合にオブジェクトを変更するには、Schedulerはまずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。使用可能プロセスでエラーが発生した場合は、オブジェクトは使用可能に再設定されず、エラーが生成されます。

使用禁止の状態だったオブジェクトを変更した場合、そのオブジェクトは変更した後も使用禁止のままです。

ウィンドウ、タイプWINDOWのグループまたはジョブ・クラスで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があります。

プログラム

プログラムを変更して、このプログラムを現在実行中のジョブで使用する場合は、変更前のプログラム定義を使用して実行が続行されます。新しいプログラム定義は、次回ジョブを実行するときから使用されます。

スケジュール

スケジュールを変更した場合、この変更は実行中のジョブおよびこのスケジュールを使用するオープン中のウィンドウには影響しません。この変更は、次回ジョブを実行するときまたはウィンドウをオープンするときからのみ有効になります。

File Watcher

File Watcherが変更されても、ファイル到着イベントにより開始された、現在実行中のイベント・ベースのジョブは影響を受けません。ローカル・システムでは、新しいFile Watcher属性は、File Watcherが次にファイルの到着をチェックするとき(デフォルトでは、10分ごと)に有効になります。リモート・システムでは、新しいFile Watcher属性が有効になるまでに追加の遅延がある場合があります。

ジョブ・クラス

デフォルトのジョブ・クラス以外のすべてのジョブ・クラスを変更できます。ジョブ・クラスを変更するには、MANAGE SCHEDULER権限が必要です。

ジョブ・クラスを変更した場合、そのクラスに属する実行中のジョブには影響しません。この変更は、今後実行されるジョブに対してのみ有効です。

ウィンドウ

ウィンドウを変更した場合、アクティブ・ウィンドウには影響しません。この変更は、次回ウィンドウをオープンするときからのみ有効になります。

リソース・プランが指定されているウィンドウをオープンしたときに現行のリソース・プランがない場合、リソース・マネージャはその指定された計画でアクティブになります。

ジョブの属性値

表140-77に、ジョブの属性値を示します。


注意:

この表に示す属性の詳細は、「CREATE_JOBプロシージャ」および「CREATE_JOBSプロシージャ」を参照してください。

表140-77 ジョブの属性値

名前 説明

allow_runs_in_restricted_mode

TRUEの場合、このモード中にジョブの所有者がログインを許可されれば、データベースが制限モードのときに、ジョブの実行が許可されます。デフォルトはFALSEです。

auto_drop

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

  • ジョブの終了日(またはスケジュールの終了日)を過ぎた場合。

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

  • 繰返しジョブではなく、1回実行された場合。

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

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

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

comments

コメント(オプション)。

connect_credential_name

この属性は、データベース資格証明を指すように設定されている場合があります。SQL*Plusまたはバックアップ・スクリプト・ジョブの場合、資格証明は、スクリプトを実行する前にデータベースに接続されます。その他のジョブ・タイプの場合は無視されます。ジョブ所有者は、資格証明の実行権限を持っている必要があります。持っていない場合、ジョブは失敗します。

connect_credential_nameを使用することをお薦めします。これを使用すると、パスワードをジョブ、プログラム・アクションまたはスクリプトでそのまま表示せずに、データベース内の資格証明に安全に格納できます。

credential_name

この属性は、リモート・データベース・ジョブ、リモート外部ジョブ、ローカル外部ジョブまたはファイル到着イベントを処理するイベント・ベース・ジョブに使用する資格証明オブジェクト(資格証明)の名前を指定します。ローカル外部ジョブのみでは、この属性がNULL(デフォルト)になっている場合、優先(デフォルトの)資格証明が選択されます。ローカルの外部ジョブの優先資格証明の詳細は、『Oracle Database管理者ガイド』を参照してください。

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

database_role

この属性は、データベースがOracle Data Guard環境に組み込まれている場合に適用されます。この属性を'PRIMARY'に設定すると、データベースがプライマリ・データベースのロールに存在する場合にのみジョブが実行されます。'LOGICAL STANDBY'に設定すると、データベースがロジカル・スタンバイのロールに存在する場合にのみジョブが実行されます。デフォルトは、データベースがプライマリ・データベースの場合は'PRIMARY'、データベースがロジカル・スタンバイの場合は'LOGICAL STANDBY'です。

注意: 特定のホスト上のすべてのデータベース・ロールに対してジョブを実行する場合は、そのホストでそのジョブのコピーを2つ作成する必要があります。1つはdatabase_roleが'PRIMARY'のジョブ、もう1つはdatabase_roleが'LOGICAL STANDBY'のジョブです。

destination

*** Oracle Database 11gリリース2では非推奨となっています。かわりにdestination_nameを使用します

この属性は、リモートの外部ジョブを実行するホストを指定します。接続先ホストのホスト名、またはIPアドレスに設定する必要があります。オプションとして、次の形式でポート番号を続けることができます。

hostname:port

デフォルトではNULLに設定されます。

destination_name

ジョブのデータベース接続先または外部接続先。リモート・データベース・ジョブおよびリモート外部ジョブのみに使用します。ローカル・データベースで実行されているジョブまたはローカル外部ジョブ(実行可能)では、NULLに設定してください。

この属性の詳細は、表140-26を参照してください。

end_date

ジョブの期限が切れる日時を指定します(この日時を過ぎると、ジョブは実行されなくなります)。end_dateよりも後でTRUEの場合、このジョブは削除されます。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(Oracle RAC)環境で稼働するデータベースにのみ使用します。デフォルトではTRUEに設定されます。instance_stickinessTRUEに設定した場合、ジョブは最も軽い負荷でインスタンスの実行を開始し、この後Schedulerはジョブが最後に実行したインスタンスの実行を試みます。そのインスタンスがダウンしているか、オーバーロードされているため新しいジョブを長い間開始できない場合、別のインスタンスでそのジョブが実行されます。実行間の間隔が長い場合は、instance_stickinessは無視され、ジョブはスティッキーでないジョブとして処理されます。

instance_stickinessFALSEに設定した場合、ジョブの各インスタンスは、最初に使用可能なインスタンスで実行されます。

Oracle RAC以外の環境ではインスタンスが1つしかないため、この属性は有用ではありません。

job_action

job_type属性に応じてジョブで実行されるアクション。たとえば、job_typeが'STORED_PROCEDURE'の場合は、job_actionにストアド・プロシージャの名前を指定します。

job_class

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

job_priority

この属性は、このジョブと同じクラス内の他のジョブと比較して、このジョブの優先順位を指定します。1つのクラス内の複数のジョブが同時に実行されるようにスケジュールした場合、ジョブ・コーディネータがそのクラスから実行用に選択するジョブの順序はこのジョブの優先度に従って決定されます。値は1から5の範囲で、1はジョブの実行用に1番目に選択されることを表します。

ジョブの作成時にジョブの優先順位が指定されていない場合は、デフォルトの優先順位である3が割り当てられます。

job_type

このジョブのタイプ。有効な値は、'PLSQL_BLOCK'、'STORED_PROCEDURE'、'EXECUTABLE'、CHAIN'、'EXTERNAL_SCRIPT'、'SQL_SCRIPT'および'BACKUP_SCRIPT'です。

この値を設定する場合は、program_nameNULLに設定する必要があります。

job_weight

*** Oracle Database 11gリリース2では非推奨となっています。この属性の値をデフォルトの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です。この属性をゼロ以外およびNULL以外の値に設定してジョブの継続時間がこの値を超えると、Schedulerでは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

これは、イベント・ベースのジョブにのみ設定できるブール属性です。

FALSE(デフォルト)の場合に、イベントが発生し、そのイベントを処理するイベント・ベースのジョブがすでに実行中であると、新しいイベントは無視されます。

TRUEの場合、ジョブのインスタンスがイベントのすべてのインスタンスに対して開始され、各ジョブ・インスタンスは軽量ジョブであるため、同じイベント・ベースのジョブの複数のインスタンスをパラレルで実行できます。各軽量ジョブは、イベント・ベースのジョブ(その親ジョブ)の定義から属性(アクション、最大実行時間など)を取得します。軽量ジョブは、完了後に削除されます。イベントの複数のインスタンスを処理するために、同時に実行できる軽量ジョブの数に明示的な制限はありません。ただし、利用可能なシステム・リソースによって制限が課される場合があります。

軽量ジョブは、いずれの*_SCHEDULER_JOBSビューにも表示されません。ただし、*_SCHEDULER_RUNNING_JOBSビューには表示されます。各軽量ジョブの名前は親ジョブと同じであり、各軽量ジョブを親および兄弟と区別するためにサブ名が自動的に生成されます。

program_name

このジョブで使用するプログラム・オブジェクトの名前。この名前を設定する場合は、job_actionjob_typeおよびnumber_of_argumentsNULLに設定する必要があります。

raise_events

この属性は、ジョブの実行中にイベントを発生させる段階をSchedulerに指示します。これはビットベクトルで、次のビットをゼロ個以上セットできます。各ビットに、対応するパッケージ定数があります。

  • 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

これらのイベント・タイプの詳細は、表140-78を参照してください。

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

このジョブのスケジュールとして使用する、スケジュール、ウィンドウまたはタイプWINDOWのグループの名前。この値が設定されている場合、end_datestart_dateおよびrepeat_intervalはすべてNULLである必要があります。

start_date

このジョブが開始した元の日時、またはジョブの開始がスケジュールされている将来の日時。この値を設定する場合は、schedule_nameNULLに設定する必要があります。

stop_on_window_close

この属性は、ジョブのスケジュールがウィンドウまたはウィンドウ・グループである場合のみ使用されます。この属性をTRUEに設定した場合、関連付けられたウィンドウがクローズするとジョブが停止します。ジョブは、forceをFALSEに設定したstop_jobプロシージャを使用して停止します。

デフォルトでは、stop_on_window_closeFALSEに設定されます。そのため、この属性を設定しない場合、ジョブはウィンドウがクローズした後も続行されます。

ただし、ジョブは続行できますが、ウィンドウをクローズすると通常リソース・プランも変更されるため、ジョブのリソース割当ても変更される可能性があることに注意してください。

store_output

ブール属性です。TRUEに設定された場合、ログに記録される実行ジョブについて、すべてのジョブ出力とエラー・メッセージが*_JOB_RUN_DETAILSビューに格納されます。FALSEに設定された場合、出力とメッセージは格納されません。新しいジョブについては、デフォルトでTRUEに設定されます。


次のイベント・タイプは、表140-77「ジョブの属性値」raise_events属性に有効な値です。

表140-78 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_over_max_dur

ジョブは、max_run_duration属性で指定した最大実行時間を超えました。(注意: このイベントをraise_eventsジョブ属性で有効にする必要はありません。常に有効になっています)。

job_run_completed

ジョブの実行が、失敗、成功または停止しました。

job_sch_lim_reached

ジョブのスケジュール限度に達しました。ジョブ開始の遅延時間がジョブ属性schedule_limitの値を超えたため、ジョブは開始されませんでした。

job_started

ジョブが開始しました。

job_stopped

STOP_JOBへのコールによって、ジョブが停止されました。

job_succeeded

ジョブが正常に完了しました。


プログラムの属性値

表140-79に、プログラムの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_PROGRAMプロシージャ」を参照してください。

表140-79 プログラムの属性値

名前 説明

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'がサポートされており、このいずれかを設定する必要があります。


スケジュールの属性値

表140-80に、スケジュールの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_SCHEDULEプロシージャ」を参照してください。

表140-80 スケジュールの属性値

名前 説明

comments

コメント(オプション)。

end_date

スケジュールが指定される最終日時。

event_spec

この属性では2つの値を指定します(value引数はイベント条件を指定し、value2引数はキューの仕様を指定します)。詳細は、「CREATE_JOBプロシージャ」へのevent_condition引数およびqueue_spec引数に関する説明を参照してください。

repeat_interval

カレンダ構文を使用して、スケジュールを繰り返す間隔を指定する属性。詳細は、「カレンダ構文」を参照してください。

start_date

カレンダ構文が使用する開始日時または参照日時。


File Watcherの属性値

表140-81に、File Watcherの属性値の一覧を示します。

表140-81 File Watcherの属性値

パラメータ 説明

destination

ファイルの到着が想定されるリモート・ホスト名またはIPアドレス。NULLの場合、接続先はローカル・ホストです。

directory_path

ファイルの到着が指定されているディレクトリ。パスの先頭にある単一のワイルドカード'?'は、Oracleホームのパスを示します。たとえば、'?/rdbms/log'は、Oracleホーム・ディレクトリのrdbms/logサブディレクトリを示します。

file_name

検索するファイル名。2つのワイルドカードがファイル名の任意の場所で許可され、'?'は任意の1文字を示し、'*'はゼロ以上の文字を示します。この属性にNULLは指定できません。

credential_name

有効な資格証明オブジェクトの名前。File Watcherでは、ホスト・オペレーティング・システムに対する認証を行い監視対象ファイルにアクセスするために、資格証明が使用されます。File Watcherの所有者は、資格証明でEXECUTE権限を持つ必要があります。NULL以外にしてください。

min_file_size

File Watcherがファイルを見つけたとみなす前のファイルの最小サイズ(バイト単位)。デフォルトは0(ゼロ)です。

steady_state_duration

File Watcherがファイルを見つけたとみなす前にファイルが変化せずに留まっている必要がある最小間隔。NULLに設定すると、内部の値が使用されます。この属性の下限値は10秒です。

comments

オプションのコメント。


ジョブ・クラスの属性値

表140-82に、ジョブ・クラスの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_JOB_CLASSプロシージャ」を参照してください。

表140-82 ジョブ・クラスの属性値

名前 説明

comments

クラスについてのコメントを指定します(オプション)。

log_history

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

有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。NULLの場合、Scheduler属性のlog_history(SET_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属性の方が優先されます。


ウィンドウの属性値

表140-83に、ウィンドウの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_WINDOWプロシージャ」を参照してください。

表140-83 ウィンドウの属性値

名前 説明

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'のいずれかである必要があります。


チェーンの属性値

表140-84に、チェーンの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_CHAINプロシージャ」を参照してください。

表140-84 チェーンの属性値

名前 説明

comments

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

evaluation_interval

NULL以外に設定すると、チェーンの評価が通常のタイミング(ジョブの開始時、ステップの終了時、またはイベント・ステップに関連付けられているイベントの着信時)に加えて、この間隔でも行われます。

追加の間隔ではCPUが集中的に使用されるため、この属性は、チェーンのルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合にのみ使用する必要があります。ほとんどのチェーンの場合は、通常の評価タイミングで十分です。

rule_set_name

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

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

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


データベース接続先の属性値

表140-85に、データベース接続先の属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_DATABASE_DESTINATIONプロシージャ」を参照してください。

表140-85 データベース接続先の属性値

名前 説明

agent

リモート・データベースに接続するために使用される外部接続先(エージェント接続先とも呼ばれる)の名前。

有効な外部接続先の名前はビューALL_SCHEDULER_EXTERNAL_DESTSから取得できます。

connect_info

接続先のリモート・データベースを識別するTNS接続記述子、または接続記述子に解決されるtnsnames.oraのネット・サービス名(別名)。

注意: これは、CREATE_DATABASE_DESTINATIONtns_name引数に対応します。

enabled

TRUEの場合、データベース接続先が有効です。

comments

データベース接続先についてのコメント(オプション)。


外部接続先の属性値

表140-86に、外部接続先の属性値の一覧を示します。


注意:

外部接続先は、リモートSchedulerエージェントをローカル・データベースに登録することにより、暗黙的にのみ作成されます。

表140-86 外部接続先の属性値

名前 説明

hostname

(GET_ATTRIBUTEのみ)完全修飾されたホスト名(ドメインを含む)またはSchedulerエージェントが存在するコンピュータのIPアドレス。

port

(GET_ATTRIBUTEのみ)エージェントがリスニングするTCPポート番号。

ip_address

(GET_ATTRIBUTEのみ)エージェントが存在するホストのIPアドレス。

enabled

TRUEの場合、外部接続先が有効です。

comments

外部接続先についてのコメント(オプション)。


グループの属性値

表140-87に、グループの属性値の一覧を示します。


注意:

この表に示す属性の詳細は、「CREATE_GROUPプロシージャ」を参照してください。

表140-87 グループの属性値

名前 説明

group_type

(GET_ATTRIBUTEのみ)グループ・タイプ(WINDOWDB_DESTまたはEXTERNAL_DEST)。

member_name

メンバーのカンマ区切りリスト。既存のメンバーのリストに置き換えます。既存のリストに1つ以上のメンバーを追加するには、ADD_GROUP_MEMBERを使用します。

注意: この属性は、CREATE_GROUPmember引数に対応します。

enabled

TRUEの場合、グループが有効です。

comments

グループについてのコメント(オプション)。

number_of_members

(GET_ATTRIBUTEのみ)グループ内のメンバーの数。


資格証明の属性値

表140-88に、資格証明の属性値の一覧を示します。


注意:

SET_ATTRIBUTEおよびGET_ATTRIBUTEプロシージャの資格証明属性値は、Oracle Databaseリリース12cリリース1 (12.1)では推奨されていません。このパッケージでは、下位互換性を維持する目的で、これらの属性値を使用できますが、かわりにDBMS_CREDENTIALパッケージで提供される拡張機能、具体的にはUPDATE_CREDENTIALプロシージャのattributeパラメータを使用することをお薦めします。

表140-88 資格証明の属性値

名前 説明

username

ホスト・オペレーティング・システムまたはリモートOracle Databaseにログインするためのユーザー名。最大長は64です。

password

ユーザー名のパスワード。最大長は128です。

comments

資格証明の説明。最大長は240です。

windows_domain

Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。最大長は64です。

database_role

database_role属性の値は、リモート・データベース・ジョブを実行するために、リモート・データベースへのログインに対するシステム権限として使用されます。

有効な値はSYSDBAおよびSYSOPERです。


SET_ATTRIBUTE_NULLプロシージャ

このプロシージャは、オブジェクトの属性をNULLに設定します。設定可能な属性は、変更するオブジェクトによって異なります。このオブジェクトが使用可能な場合は、まずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。オブジェクトを再度使用可能にできない場合、エラーが生成され、オブジェクトのステータスは使用禁止のままです。

構文

DBMS_SCHEDULER.SET_ATTRIBUTE_NULL (
   name              IN VARCHAR2,
   attribute         IN VARCHAR2);

パラメータ

表140-89 SET_ATTRIBUTE_NULLプロシージャのパラメータ

パラメータ 説明

name

オブジェクトの名前。

attribute

変更する属性。


使用上の注意

ウィンドウ、タイプWINDOWのグループまたはジョブ・クラスで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);

パラメータ

表140-90 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プロシージャ

このプロシージャは、ジョブの引数に値を設定します。

対応するプログラムまたはストアド・プロシージャ引数に設定されたデフォルト値よりも優先されます。引数は、位置または名前によって指定できます。次の場合は、名前による指定のみが可能です。

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);

パラメータ

表140-91 SET_JOB_ARGUMENT_VALUEプロシージャのパラメータ

パラメータ 説明

job_name

変更するジョブの名前。

argument_name

設定するプログラム引数の名前。

argument_position

設定するプログラム引数の位置。

argument_value

プログラム引数に設定する新しい値。VARCHAR以外の値を設定するには、SET_JOB_ANYDATA_VALUEプロシージャを使用します。


使用上の注意

SET_JOB_ARGUMENT_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数値を設定できます。

SET_JOB_ARGUMENT_VALUEでは、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。

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');

パラメータ

表140-92 SET_JOB_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

jobattr_array

ジョブ属性変更の配列。

commit_semantics

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

  • STOP_ON_FIRST_ERROR: 最初にエラーが発生した時点で戻され、このエラーが発生する前に正常に実行された属性変更をディスクにコミットします。これがデフォルトです。

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

  • ABSORB_ERRORSは、エラーを吸収してリスト内のジョブの属性変更の残りを完了することを試行します。正常に実行されたすべての変更をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。


使用上の注意

使用可能になっているジョブに対してSET_ATTRIBUTEをコールすると、ジョブが使用禁止となり、属性値が変更され、ジョブが再度使用可能になります。SET_JOB_ATTRIBUTESは、1つのトランザクションのコンテキストで属性値を変更します。

SET_RESOURCE_CONSTRAINTプロシージャ

このプロシージャを使用すると、ユーザーはジョブによって使用されるリソースを指定できます。

構文

DBMS_SCHEDULER.SET_RESOURCE_CONSTRAINT (
   object_name       IN VARCHAR2,
   resource_name     IN VARCHAR2,
   units             IN NUMBER DEFAULT 1);

パラメータ

表140-93 SET_RESOURCE_CONSTRAINTプロシージャのパラメータ

パラメータ 説明

object_name

プログラムやジョブの名前、またはこれらのオブジェクトのカンマ区切りリスト。

resource_name

リソースの名前。

units

ジョブやプログラムが使用する、このリソースのユニット数。


使用上の注意

units0に設定された場合、プログラムやジョブはこのリソースを使用しなくなり、結果として生じる制約が削除されます。以前に制約がなかったリソースのunits0に設定すると、エラーが発生します。

同一のリソースに複数の制約を定義する場合、オブジェクト・タイプが一致している必要があります。リソースに適用される1つ以上の既存の制約がジョブに基づいており、プログラムに基づく新しい制約が同一のリソースに追加される場合(またはその逆の場合)、エラーが発生します。

SET_SCHEDULER_ATTRIBUTEプロシージャ

このプロシージャは、Scheduler属性の値を設定します。これはすぐに有効になりますが、影響を受ける属性によっては、結果として生じる変更をすぐに確認できない場合があります。

SET_SCHEDULER_ATTRIBUTEプロシージャの短い属性の説明は、表140-94に記載されています。詳細は、『Oracle Database管理者ガイド』のSchedulerのプリファレンスの設定に関する項を参照してください。

構文

DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE (
   attribute      IN VARCHAR2,
   value          IN VARCHAR2);

パラメータ

表140-94 SET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attribute

Scheduler属性の名前。有効な値は、次のとおりです。

  • 'default_timezone': start_dateが指定されていない場合、カレンダ構文式を使用する繰返しジョブおよびウィンドウはこの属性からタイム・ゾーンを取得します。詳細は、「カレンダ構文」を参照してください。

  • 'email_server': ジョブの状態イベントの電子メール通知を送信するためにSchedulerが使用するSMTPサーバー・アドレス。この属性がNULLの場合、電子メール通知は送信できません。

  • 'email_sender': ジョブの状態を電子メール通知する送信者のデフォルト電子メール・アドレス。

  • 'email_server_credential': SYSが実行オブジェクト権限を持っている既存の資格証明オブジェクトのスキーマおよび名前。デフォルトはNULLです。この資格証明に格納されているユーザー名およびパスワードを使用して、電子メール通知の送信時に電子メール・サーバーの認証を受けることができます。

  • 'email_server_encryption': この属性は、この電子メール・サーバー接続で暗号化を有効にするかどうかを示し、有効にする場合、暗号化を開始するポイントと使用するプロトコルも示します。値は次のとおりです。

    • NONE: デフォルト値で、暗号化を使用しないことを示します。

    • SSL_TLS: 接続の最初からSSLまたはTLSを使用することを示します。

    • STARTTLS: 暗号化を使用せずに接続を開始しますが、電子メール・サーバーにコマンドSTARTTLSを送信して暗号化を開始することを示します。

  • 'event_expiry_time': Schedulerで生成されたジョブの状態イベントがSchedulerイベント・キューで有効期間が終了するまでの時間(秒)。NULLに設定すると、ジョブの状態イベントは24時間後に期限切れになります。

  • 'log_history': ジョブ・ログとウィンドウ・ログの両方のログ・エントリが保持される日数。デフォルトは30で、有効値の範囲は、0から1000000です。

  • 'max_job_slave_processes': このScheduler属性は使用されません。

value

属性の新しい値。


使用上の注意

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


関連項目:

Scheduler属性の詳細は、『Oracle Database管理者ガイド』を参照してください。

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');

パラメータ

表140-95 STOP_JOBプロシージャのパラメータ

パラメータ 説明

job_name

停止するジョブの名前。ジョブのカンマ区切りリストを使用でき、各エントリは次のいずれかになります。

  • ジョブ名: 既存のジョブの名前で、オプションでスキーマ名およびドット区切りが接頭辞として付加されます。

  • ジョブ接続先ID: ジョブ、資格証明および接続先の一意の組合せを表す*_SCHEDULER_JOB_DESTSビューのJOB_DEST_ID列から取得する番号。

  • ジョブ・クラス: ジョブ・クラスの名前。SYSスキーマ名およびドット区切りを接頭辞として付加する必要があります。

ジョブ・クラスを指定すると、このジョブ・クラスに所属するすべてのジョブは停止されます。接続先グループをdestination_name属性として作成されたジョブを指定すると、すべての接続先のすべてのジョブ・インスタンスが停止します。

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: このプロシージャは、エラーを吸収して残りのジョブの停止を試行し、正常に実行されたすべての停止操作をコミットします。このタイプは、job_nameリストでジョブ・クラスが指定されない場合のみ使用できます。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。


使用上の注意

forceオプションを使用せずにSTOP_JOBを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限またはMANAGE SCHEDULER権限を持っている場合も、ジョブを停止できます。

forceオプションを使用してSTOP_JOBを使用するには、MANAGE SCHEDULER権限を持っている必要があります。

次にSTOP_JOBの使用例を示します。

BEGIN
  DBMS_SCHEDULER.STOP_JOB('DSS.ETLJOB, 984, 1223, SYS.ETL_JOBCLASS');
END;