162 DBMS_SCHEDULER
DBMS_SCHEDULER
パッケージは、任意のPL/SQLプログラムからコールできるスケジューリング用のファンクションおよびプロシージャのコレクションを提供します。
この章のトピックは、次のとおりです:
参照:
DBMS_SCHEDULER
の使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。
162.1 DBMS_SCHEDULERの推奨されないサブプログラム
新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
Oracle Database 12cリリース1(12.1)では、次のサブプログラムの使用は推奨されていません。
162.2 DBMS_SCHEDULERのセキュリティ・モデル
DBMS_SCHEDULER
パッケージでは、ロールを通じてジョブやチェーンなどのSchedulerオブジェクトに対して付与される権限は無視されます。オブジェクト権限は、ユーザーに直接付与する必要があります。
162.3 DBMS_SCHEDULERのルールおよび制限
DBMS_SCHEDULER
パッケージの使用時には、次のルールが適用されます。
-
SYS
スキーマのオブジェクトに対しては、SYS
のみがアクションを実行できます。 -
一部のプロシージャでは、オブジェクト名のカンマ区切りリストを使用できます。オブジェクト名のリストを提供する場合、Schedulerは、エラーを戻した最初のオブジェクトの位置でリストの実行を停止します。そのため、Schedulerは、リストの残りのオブジェクトに必要とされるタスクを実行しません。
たとえば、
DBMS_SCHEDULER.STOP_JOB ('job1, job2, job3, sys.jobclass1, sys.jobclass2, sys.jobclass3');
という文があるとします。job3
を停止できない場合、その後に続くジョブのjobclass1
、jobclass2
およびjobclass3
も停止できません。job3
に先行するジョブのjob1
およびjob2
は、停止します。 -
存在しないオブジェクト上でアクションを実行すると、オブジェクトが存在しないことを示すPL/SQLの例外を返します。
162.4 DBMS_SCHEDULERの操作上のノート
Schedulerでは、高度なカレンダ構文を使用して、「毎週木曜日と金曜日の午後4時」、「毎月第2水曜日」などの繰返しスケジュールを定義できます。このカレンダ構文は、多くのパッケージ・サブプログラムのrepeat_interval
引数のカレンダ式で使用されます。カレンダ式を評価すると、一連の個別タイムスタンプが戻されます。
カレンダ構文の例は、『Oracle Database管理者ガイド』を参照してください。
カレンダ構文
この項の先頭は、カレンダ構文です。この後に、構文の様々な部分の説明が続きます。
カレンダ構文では、*は0またはそれ以上を意味します。
repeat_interval = regular_schedule | combined_schedule regular_schedule = frequency_clause [";" interval_clause] [";" bymonth_clause] [";" byweekno_clause] [";" byyearday_clause] [";" bydate_clause] [";" bymonthday_clause] [";" byday_clause] [";" byhour_clause] [";" byminute_clause] [";" bysecond_clause] [";" bysetpos_clause] [";" include_clause] [";" exclude_clause] [";" intersect_clause][";" periods_clause] [";" byperiod_clause]
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
表162-1 repeat_intervalの値
名前 | 説明 |
---|---|
|
繰返しのタイプを指定します。指定する必要があります。頻度の値には、事前定義済のYEARLY、MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELYおよびSECONDLYを設定できます。また、既存のスケジュールを指定して、ユーザー定義の頻度として使用することもできます。 |
|
繰返しの実行頻度を正の整数で指定します。デフォルトは1で、秒単位では毎秒、日単位では毎日を意味します。最大値は99です。 |
|
ジョブを実行する月を指定します。数字(1月の場合は1、3月の場合は3など)を入力するか、または3文字の略語(2月の場合はFEB、7月の場合はJULなど)を入力できます。 |
|
ある年における週を番号で指定します。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になります。
無効な指定の例は、 |
|
ある年における日付を、番号で指定します。有効な値は1から366です。たとえば、69は3月10日(1月は31、2月は28、3月は10)です。69はうるう年以外では3月10日、うるう年の場合は3月9日になります。うるう年かどうかにかかわらず、-2は常に12月30日になります。 |
|
日付のリストを指定します(それぞれの日付を、
次に示す
OFFSETは、 |
|
月における日付を、番号で指定します。有効な値は1から31です。たとえば、10は選択した月の10日を意味します。マイナス記号(-)を使用して、最後の日から逆に数えることができ、したがってたとえば |
|
この句では、月曜から日曜までの曜日をMON、TUEなどの書式で指定します。数字を使用して、その年の26番目の金曜日を指定したり(頻度にYEARLYを使用している場合)、その月の4番目の木曜日を指定できます(頻度にMONTHLYを使用している場合)。マイナス記号を使用すると、その月の最後から2番目の金曜日を指定できます。たとえば |
|
ジョブを実行する時間を指定します。有効な値は0から23です。たとえば、10は午前10時を示します。 |
|
ジョブを起動する分を指定します。有効な値は0から59です。たとえば、45は選択した時間(時)の45分過ぎを示します。 |
|
ジョブを実行する秒を指定します。有効な値は0から59です。たとえば、30は選択した分の30秒過ぎを示します。 |
|
カレンダ式全体を評価して生じたタイムスタンプのリスト内の位置によって、1つ以上の項目を選択します。この句は、月の最後の平日にジョブを実行するなどの要件がある場合に役立ちます。他の FREQ=MONTHLY; BYDAY=MON,TUE,WED,THU,FRI; BYSETPOS=-1 有効な値は1から9999です。負の数値の場合はリストの末尾からアイテムが選択され(-1が最後のアイテム、-2が最後から2番目のアイテムとなります)、正の数値の場合はリストの先頭からアイテムが選択されます。
|
|
1つ以上の名前付きスケジュールをカレンダ式に含めます。つまり、含める各名前付きスケジュールで定義されているタイムスタンプ・セットが、カレンダ式の評価結果に追加されます。含めるスケジュールとカレンダ式の両方で同じタイムスタンプが生成される場合、そのタイムスタンプは、タイムスタンプの結果セットに1回のみ含められます。名前付きスケジュールは、 この句は1日単位でのみ使用できます。したがって、 |
|
1つ以上の名前付きスケジュールをカレンダ式から除外します。つまり、除外する各名前付きスケジュールで定義されているタイムスタンプ・セットが、カレンダ式の評価結果から削除されます。名前付きスケジュールは、 この句は1日単位でのみ使用できます。したがって、 |
|
カレンダ式の結果と、1つ以上の名前付きスケジュールで定義されているタイムスタンプ・セットの共通部分を指定します。タイムスタンプの結果セットには、カレンダ式と、いずれかの名前付きスケジュールの両方に表示されるタイムスタンプのみが含まれます。 たとえば、名前付きスケジュール 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 この例では、 この句は1日単位でのみ使用できます。したがって、 |
|
ユーザー定義の頻度の1サイクルを構成する、期間の数を指定します。これは、ユーザー定義の頻度を定義するスケジュールの FREQ=YEARLY;BYDATE=0301,0601,0901,1201;PERIODS=4 |
|
ユーザー定義の頻度から期間を選択します。たとえば、前述の例の会計年度の四半期を定義するユーザー定義の頻度スケジュールをメイン・スケジュールで指定した場合、そのメイン・スケジュールに |
スケジュールの組合せ
スケジュールの組合せには、次の2つの方法があります。
-
組み合せたスケジュール式(個々のスケジュールのリスト)を使用する方法
たとえば、会社のすべての休業日のスケジュールを作成するには、個々のスケジュールのリストを指定します(このリスト内のスケジュールごとに1つの休業日が定義されます)。Schedulerは、各スケジュールを個々に評価し、各スケジュールから戻されたタイムスタンプの論理和を戻します。
-
include
、exclude
およびintersect
句を使用して、メイン・スケジュールに他のスケジュールを埋め込む方法この方法の場合、埋め込まれたスケジュールは、メイン・スケジュールから特定の属性を継承します。
-
INCLUDE
句によって生成されたタイムスタンプは、メイン・スケジュールでスキップされる期間内の場合は無視されます。これは、freq=monthly
に対するINTERVAL
句、BYPERIOD
句またはBYMONTH
句によって、メイン・スケジュールで期間がスキップされるような場合です。 -
INCLUDE
句によって追加される日は、メイン・スケジュールの実行パターン(毎時、毎分、毎秒)に従います。 -
INCLUDE
句が存在する場合、日付固有のデフォルト値は開始日から取得できません(ただし時間固有のデフォルト値は取得可能です)。(この項の後半の「開始日および反復間隔」を参照。)たとえばrepeat_interval
がFREQ=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時に実行されます)。埋め込まれたスケジュール自体に開始日がない場合は、メイン・スケジュールの開始日が継承されます。 -
ユーザー定義の頻度
DAILY
、WEEKLY
、MONTHLY
などのあらかじめ定義されている頻度を使用するのではなく、各期間の開始日を戻すスケジュールを自分で作成すると、ユーザー独自の頻度を作成できます。たとえば、次の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
句が含まれていない場合、毎月ジョブが実行される日は開始日から取得されます。BYHOUR
、BYMINUTE
およびBYSECOND
のデフォルト値が存在する場合は、それらの値が開始日から取得され、これらの句が指定されていない場合に使用されます。INCLUDE
、EXCLUDE
または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などのように実行されます。
次の例では、スケジュールS1
のrepeat_interval
がFREQ=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
句についてはサポートされません。すなわち、BYMONTH
、BYHOUR
、BYMINUTE
および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_date
がNULL
の場合、Schedulerは次のように反復間隔のタイムゾーンを決定します。-
セッション・タイムゾーンがリージョン名かどうかをチェックします。セッション・タイムゾーンは、次のいずれかで設定できます。
-
ALTER
SESSION
文の発行。たとえば:SQL> ALTER SESSION SET time_zone = 'Asia/Shanghai';
-
ORA_SDTZ
環境変数の設定。
-
-
セッション・タイムゾーンがリージョン名ではなく絶対オフセットの場合、Schedulerは
DEFAULT_TIMEZONE
Scheduler属性の値を使用します。詳細は、「SET_SCHEDULER_ATTRIBUTEプロシージャ」を参照してください。 -
DEFAULT_TIMEZONE
属性がNULL
の場合、Schedulerでは、ジョブまたはウィンドウが使用可能であれば、systimestamp
のタイムゾーンを使用します。
-
BYSETPOS句のルール
BYSETPOS
句のルールは次のとおりです。
-
BYSETPOS
句は、最後に評価される句です。これは、他のすべてのBY
句、INCLUDE
、EXCLUDE
および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; /
名前付きスケジュールへの負のオフセットの追加はサポートされていません。
例162-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; /
162.5 DBMS_SCHEDULERのデータ構造
DBMS_SCHEDULER
パッケージは、OBJECT
タイプおよびTABLE
タイプを定義します。
オブジェクト・タイプ
162.5.1 DBMS_SCHEDULER JOBARGオブジェクト・タイプ
このタイプは、JOB
およびJOBATTR
オブジェクト・タイプで使用されます。一連のジョブ引数のうちの、1つのジョブ引数を表します。
構文
TYPE jobarg IS OBJECT ( arg_position NUMBER, arg_text_value VARCHAR2(4000), arg_anydata_value ANYDATA, arg_operation VARCHAR2(5));
属性
表162-2 JOBARGオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
引数の位置。 |
|
データ・タイプが |
|
データ・タイプが |
|
操作のタイプ:
|
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;
パラメータ
表162-3 JOBARG Constructorファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
引数の位置。 |
|
引数の値。 |
|
|
JOBARG_ARRAY表タイプ
構文
TYPE jobarg_array IS TABLE OF jobarg;
162.5.3 DBMS_SCHEDULER 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;)
オブジェクト属性
表162-4は、JOB_DEFINITION
オブジェクト・タイプの属性の概要を示しています。これらの属性の詳細は、「CREATE_JOBプロシージャ」および「SET_ATTRIBUTEプロシージャ」を参照してください。
表162-4 JOB_DEFINITIONオブジェクト・タイプ
属性 | 説明 |
---|---|
|
ジョブの名前。 |
|
ジョブ・クラスの名前。 |
|
ジョブのスタイル:
|
|
ジョブにより実行されるプログラムの名前。 |
|
ジョブのインライン・アクション。これは、無名PL/SQLブロックのコードまたはストアド・プロシージャの名前(外部実行可能またはチェーン)です。 |
|
ジョブ・アクションのタイプ(' |
|
ジョブの実行時刻を指定するスケジュールの名前。 |
|
時間ベースのインライン・スケジュール。 |
|
ジョブの実行が取り消される前の、スケジュール・ジョブと実際のジョブの最大遅延時間。 |
|
ジョブの開始日時。 |
|
ジョブの終了日時。 |
|
イベント・ベースのジョブのイベント条件。 |
|
File Watcher名またはイベント・ベースのジョブのキューの仕様。 |
|
ジョブ引数の数。 |
|
ジョブ引数の配列。 |
|
ジョブの優先順位。 |
|
*** Oracle Database 11gリリース2では非推奨となっています。この属性の値をデフォルトの1から変更しないでください。 パラレル実行のジョブの重み。 |
|
ジョブの最大実行時間。 |
|
ジョブが完了とマークされるまでの最大実行数。 |
|
ジョブが中断とマークされるまでに許容される最大失敗数。 |
|
ジョブのロギング・レベル。 |
|
ジョブが再開可能である( |
|
ジョブが実行されているウィンドウが終了した場合にジョブを停止する( |
|
イベントを発生させる状態変更。 |
|
ジョブについてのコメント |
|
|
|
ジョブの作成直後にジョブを有効にする( |
|
|
|
イベント・ベースのジョブ専用。
|
|
内部使用専用。 |
|
ジョブを実行する必要があるインスタンスのインスタンスID。 インメモリー・フル・ジョブでは、 |
|
単一の宛先に使用する資格証明または宛先グループに対するデフォルトの資格証明。 |
|
単一の外部接続先またはデータベース接続先の名前、あるいは外部接続先タイプまたはデータベース接続先のグループ名。 |
|
Oracle Data Guard環境では、ジョブが実行されるデータベース・ロール(' |
|
|
|
ジョブに対して
|
|
ジョブに対して
|
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;
162.5.4 JOB_DEFINITION_ARRAY表タイプ
タイプjob_definition_array
は、job_definition
の表です。
構文
TYPE job_definition_array IS TABLE OF job_definition;
162.5.5 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));
属性
表162-5 JOBATTRオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
ジョブの名前。 |
|
属性の名前。 |
|
データ・タイプが |
|
2つ目の |
|
データ・タイプが |
|
データ・タイプが |
|
データ・タイプが |
|
データ・タイプが |
JOBATTRコンストラクタ・ファンクション
このコンストラクタ・ファンクションは、ジョブ属性を構成します。これは、VARCHAR2
、NUMBER
、TIMESTAMP WITH TIME ZONE
、INTERVAL 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;
パラメータ
表162-6 JOBATTR Constructorファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブの名前。 |
|
引数の名前。 |
|
引数の値。 |
|
ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。 |
JOBATTR表タイプ
構文
TYPE jobattr_array IS TABLE OF jobattr;
162.5.7 SCHEDULER$_STEP_TYPEオブジェクト・タイプ
このタイプは、チェーン・ステップのリストを初期状態のままで戻すためにRUN_CHAIN
で使用されます。
構文
TYPE scheduler$_step_type IS OBJECT ( step_name VARCHAR2(32), step_type VARCHAR2(32));
属性
表162-7 SCHEDULER$_STEP_TYPEオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
ステップの名前。 |
|
ステップの状態。 |
162.5.8 SCHEDULER$_STEP_TYPE_LIST表タイプ
このタイプは、scheduler$_step_type
の表です。
構文
TYPE scheduler$_step_type_list IS TABLE OF scheduler$_step_type;
162.5.9 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));
属性
表162-8 SCHEDULER_EVENT_INFOオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
" これらのイベント・タイプの詳細は、表162-85を参照してください。 |
|
イベントを発生させたジョブの所有者。 |
|
イベントを発生させたジョブの名前。 |
|
イベントが発生した時刻。 |
|
ジョブの実行中にエラーがスローされたときのみ適用されます。トップ・レベルのエラー・コードが含まれます。 |
|
ジョブの実行中にエラーがスローされたときのみ適用されます。エラー・スタック全体が含まれます。 |
|
イベント・タイプにさらに修飾を追加します。
|
|
追加情報が得られるスケジューラ・ジョブ・ログのIDを示します。イベントに対応するログ・エントリは常には必要ないことに注意してください。この場合、 |
|
イベントが発生したときのジョブの実行数。 |
|
イベントが発生したときのジョブの失敗数。 |
|
イベントが発生したときのジョブの再試行数。 |
|
現在は使用されていません。 |
162.5.10 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);
属性
表162-9 SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
ファイルが見つかった宛先。ホスト名またはIPアドレスとして表されます。 |
|
ファイルが見つかったディレクトリの絶対パス。 |
|
見つかったファイルの実際の名前。File Watcherで指定したファイル名にワイルドカードが含まれていなかった場合、File Watcherで指定した名前と同じです。 |
|
見つかったファイルのサイズ(バイト単位)。 |
|
File Watcherがファイルを見つけたとみなしたときに、最小ファイル・サイズおよび安定した状態の期間属性に基づいて、ファイルに割り当てられるタイムスタンプ。 |
|
内部使用のみに対応しています。 |
|
一致要求のリスト。これは、 |
162.5.11 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);
属性
表162-10 SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
一致したFile Watcherの所有者。 |
|
一致したFile Watcherの名前。 |
|
一致したFile Watcherの |
|
一致したFile Watcherの |
|
一致したFile Watcherにより参照される資格証明の所有者。 |
|
一致したFile Watcherにより参照される資格証明の名前。 |
|
一致したFile Watcherの |
|
一致したFile Watcherの |
162.6 DBMS_SCHEDULERサブプログラムの要約
この表は、DBMS_SCHEDULER
サブプログラムを示し、簡単に説明しています。
表162-11 DBMS_SCHEDULERパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
ユーザーをサブスクライバとしてSchedulerイベント・キュー |
|
既存のグループに1つ以上のメンバーを追加します。 |
|
受信者リストおよびジョブの状態イベントのリストに電子メール通知を追加します。 |
|
ジョブまたはプログラムを既存の非互換性定義に追加します。 |
|
チェーンの指定ステップを変更します。 |
|
実行中のチェーンの指定ステップを変更します。 |
|
オープンしているウィンドウをただちにクローズします。 |
|
既存のジョブをコピーします。 |
|
チェーン(様々な目的を実現するために組み合された一連の名前付きプログラム)を作成します。 |
|
資格証明を作成します。 |
|
リモート・データベース・ジョブと使用するデータベース接続先を作成します。 |
|
イベント・スケジュール(イベントの検出に基づいてジョブを開始するスケジュール)を作成します。 |
|
File Watcherを作成します。File Watcherは、システムに到着すると、Schedulerがジョブを開始する原因となるファイルの場所、名前およびその他のプロパティを定義するSchedulerオブジェクトです。 |
|
グループを作成します。 |
|
非互換性定義を作成します。 |
|
1つのジョブを作成します。 |
|
ジョブ・クラス(リソースの割当ておよび優先順位付けのためにジョブをグループ化する方法を提供するもの)を作成します。 |
|
複数のジョブを作成します。 |
|
プログラムを作成します。 |
|
ジョブによって使用されるリソースを指定したり、新しいリソースを作成します。 |
|
スケジュールを作成します。 |
|
ウィンドウ(様々なリソース・プランを様々なタイミングで自動的にアクティブにする方法を提供するもの)を作成します。 |
|
値が複合タイプで、 |
|
チェーン・ステップを追加または置換し、イベント・スケジュールまたはインライン・イベントに関連付けます。「 |
|
既存のチェーンにルールを追加します。 |
|
チェーン・ステップを定義します(プログラムまたは別の(ネストした)チェーンを指定できます)。 |
|
プログラムの特別なメタデータ引数を定義します。この引数を通じて特定のメタデータを取得できます。 |
|
値を文字列リテラルとしてプログラムに渡すことのできるプログラム引数を定義します。 |
|
プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcher、グループまたは非互換性を使用禁止にします。 |
|
1つ以上の外部接続先を削除します。外部接続先を削除する優先的な方法(データベースでのSchedulerエージェントの登録解除)が失敗した場合にのみ使用します。 |
|
既存のチェーンを削除します。 |
|
既存のチェーンからルールを削除します。 |
|
チェーン・ステップを削除します。 |
|
資格証明を削除します。 |
|
1つ以上のデータベース接続先を削除します。 |
|
1つ以上のFile Watcherを削除します。 |
|
1つ以上のグループを削除します。 |
|
既存の非互換性定義を削除します。 |
|
ジョブ・クラスの1つのジョブまたはすべてのジョブを削除します。 |
|
ジョブ・クラスを削除します。 |
|
プログラムを削除します。 |
|
プログラム引数を削除します。 |
|
スケジュールを削除します。 |
|
ウィンドウを削除します。 |
|
DUMP_IN_MEMORY_TRACEプロシージャ | 指定されたプロセス状態オブジェクト・アドレスのスケジューラ・インメモリー・トレース・バッファをリクエスタ・プロセスの現在のトレース・ファイルにダンプします。 |
プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcherまたはグループを使用可能にします。 |
|
連結解除された実行中のジョブを終了します。 |
|
カレンダ文字列を評価し、ジョブやウィンドウの次の実行日を表示します。 |
|
実行中のチェーンのルールを強制的に再評価し、条件が満たされている場合はルールを適用します。 |
|
ジョブに一意の名前を生成します。これにより、接頭辞を追加してジョブを識別できます(たとえば、Sallyのジョブの名前は |
|
選択された属性に応じて、実行中のジョブ数などのエージェント固有のジョブ情報を戻します。 |
|
データベースに登録されており、現在実行中のSchedulerエージェントのバージョン文字列を戻します。 |
|
オブジェクトの属性値を取得します。 |
|
ホストからファイルを取得します。 |
|
Scheduler属性の値を取得します。 |
|
ウィンドウをただちにオープンします。このプロシージャの継続時間中、このウィンドウはすぐにオープンします。 |
|
ジョブおよびウィンドウのログから特定の行をパージします。 |
|
1つ以上のホストにファイルを保存します。 |
|
Schedulerイベント・キュー |
|
ジョブまたはプログラムを非互換性定義から削除します。 |
|
グループから1つ以上のメンバーを削除します。 |
|
ジョブの電子メール通知を削除します。 |
|
関連するプログラムで定義された引数に割り当てられた現在の値をリセットします。 |
|
1回のみ実行するジョブを作成して、チェーンをただちに実行します。 |
|
ジョブをただちに実行します。 |
|
データベースのエージェント登録パスワードを設定します |
|
ジョブ、スケジュールなどのSchedulerオブジェクトの属性を変更します。 |
|
オブジェクトの属性を |
|
|
|
ジョブ引数の値を設定します。 |
|
ジョブ属性の値を設定します。 |
|
ジョブによって使用されるリソースを指定します。 |
|
Scheduler属性の値を設定します。 |
|
現在実行中のジョブ、またはジョブ・クラスのすべてのジョブを停止します。 |
162.6.1 ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ
このプロシージャは、ユーザーをサブスクライバとしてSchedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUE
に追加し、指定したエージェントを使用してこのキューからデキューする権限をそのユーザーに付与します。
構文
DBMS_SCHEDULER.ADD_EVENT_QUEUE_SUBSCRIBER ( subscriber_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-12 ADD_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Schedulerイベント・キューのサブスクライブに使用するOracle Advanced Queuing (AQ)エージェントの名前。 |
使用上のノート
サブスクリプションはルールベースです。ルールによって、ユーザーが許可されるのは、所有するジョブが呼び出したイベントの参照のみで、その他のメッセージはすべて除外されます。同じ名前のAQエージェントがすでに存在する場合は、エラーが発生します。
162.6.2 ADD_GROUP_MEMBERプロシージャ
このプロシージャは、1つ以上のメンバーを既存のグループに追加します。
構文
DBMS_SCHEDULER.ADD_GROUP_MEMBER ( group_name IN VARCHAR2, member IN VARCHAR2);
パラメータ
表162-13 ADD_GROUP_MEMBERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
グループ名。 |
|
グループに追加するメンバーのカンマ区切りリスト。メンバーはグループ・タイプと一致する必要があります。同じタイプのグループがメンバーになることができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。 いずれかのメンバーが存在しない場合は、エラーが戻されます。すでにグループに存在するメンバーはスキップされ、エラーは発生しません。 キーワード |
使用上のノート
次のユーザーはグループにメンバーを追加できます。
-
グループ所有者。
-
グループで
ALTER
オブジェクト権限を付与されたユーザー。 -
CREATE ANY JOB
システム権限があるユーザー。
タイプWINDOW
のグループにメンバーを追加するには、MANAGE
SCHEDULER
権限が必要です。
162.6.3 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);
パラメータ
表162-14 ADD_JOB_EMAIL_NOTIFICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
電子メール通知を追加するジョブの名前。 |
|
通知を送信する電子メール・アドレスのカンマ区切りリスト。リストされているすべてのイベントに対する電子メール通知は、すべての受信者に送信されます。 |
|
電子メール・ヘッダーで送信者のアドレス(送信者: アドレス)に使用する電子メール・アドレス。 |
|
電子メール・ヘッダーに使用する件名。表162-15は、このパラメータに含められる変数を説明しています。Schedulerは、通知を送信する前にこれらの変数に値を割り当てます。 'Oracle Scheduler Job Notification - %job_owner%.%job_name%.%job_subname% %event_type%' |
|
電子メール・メッセージの本文。表162-15は、このパラメータに含められる変数を説明しています。Schedulerは、通知を送信する前にこれらの変数に値を割り当てます。 '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%' |
|
電子メール通知を送信するジョブの状態イベントのカンマ区切りリスト。 JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR |
|
電子メール通知を送信するイベントをフィルタするために使用されます。 たとえば、イベントのエラー番号が600または700の場合にのみ電子メール通知を送信するには、次の :event.error_code=600 or :event.error_code=700 「SCHEDULER$_EVENT_INFOオブジェクト・タイプ」を参照してください。 |
表162-15は、件名と本文の引数で使用できる変数を示しています。
表162-15 SUBJECTおよびBODYパラメータで使用する変数
変数 | コメント |
---|---|
|
ジョブが作成されたスキーマ。 |
|
電子メール通知を追加するジョブの名前。 |
|
|
|
有効な値は表162-85を参照してください |
|
イベントが発生した時刻。 |
|
ビュー |
|
エラー・コードの番号。 |
|
エラー・メッセージのテキスト。 |
|
イベントが発生したときのジョブの実行数。 |
|
イベントが発生したときのジョブの失敗数。 |
|
イベントが発生したときのジョブの再試行数。 |
使用上のノート
特定のジョブに設定する様々な通知セットそれぞれに対してADD_JOB_EMAIL_NOTIFICATION
を一度コールできます。たとえば、JOB_FAILED
、JOB_BROKEN
、JOB_SCH_LIM_REACHED
およびJOB_CHAIN_STALLED
イベントの通知をプリンシパルDBAおよびすべての上位DBAに送信し、JOB_OVER_MAX_DUR
イベントの通知をプリンシパルDBAにのみ送信することができます。
このプロシージャは、Scheduler属性email_server
が有効なSMTPサーバーに設定されている場合のみ成功します。詳細は、『Oracle Database管理者ガイド』を参照してください。
このプロシージャをコールするには、ジョブ所有者になるか、CREATE
ANY
JOB
システム権限を持つか、ジョブでALTER
オブジェクト権限を持つ必要があります。
162.6.4 ADD_TO_INCOMPATIBILITYプロシージャ
このプロシージャは、ジョブまたはプログラムを既存の非互換性定義に追加します。
構文
DBMS_SCHEDULER.ADD_TO_INCOMPATIBILITY ( incompatibility_name IN VARCHAR2, object_name IN VARCHAR2);
パラメータ
表162-16 ADD_TO_INCOMPATIBILITYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
非互換性定義の名前。 |
|
1つ以上の(カンマ区切り)プログラムまたはジョブ |
使用上のノート
このプロシージャでは、指定されたオブジェクトがすでに非互換性定義に存在する場合でも、エラーは発生しません。
参照:
『Oracle Database管理者ガイド』の非互換性定義の使用方法に関する項を参照してください。
162.6.5 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);
パラメータ
表162-17 ALTER_CHAINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するチェーンの名前。 |
|
変更するステップまたはステップのカンマ区切りリストの名前。 |
|
変更するステップの属性。次のいずれかを指定する必要があります。
|
|
属性に設定する値(ブール属性の場合)。 |
|
属性に設定する値(文字属性の場合)。 |
使用上のノート
チェーンを変更するには、そのチェーンに対するALTER
権限が必要です(チェーンの所有者であるか、チェーンに対するALTER
オブジェクト権限を持っているか、またはCREATE
ANY
JOB
システム権限を持っている必要があります)。
162.6.6 ALTER_RUNNING_CHAINプロシージャ
このプロシージャは、チェーンの指定ステップの属性を変更します。指定された実行中のチェーン・ジョブのチェーンのインスタンスのステップにのみ影響します。
構文
DBMS_SCHEDULER.ALTER_RUNNING_CHAIN ( job_name IN VARCHAR2, step_name IN VARCHAR2, attribute IN VARCHAR2, value IN {BOOLEAN|VARCHAR2});
パラメータ
表162-18 ALTER_RUNNING_CHAINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
チェーンを実行しているジョブの名前。 |
|
変更するステップまたはステップのカンマ区切りリストの名前。属性が |
attribute |
変更するステップの属性。有効な値は、次のとおりです。
|
|
|
|
属性に設定する値。有効な値は、 |
使用上のノート
実行中のチェーンを変更するには、実行中のジョブに対するALTER権限を持っている必要があります(ジョブの所有者であるか、ジョブに対するALTER
権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
ネストされたチェーンで定義されたステップを更新する場合は、job_name
を<SCHEMA>.<JOB_NAME>.<STEP_NAME_IN_TOP_LEVEL_CHAIN>
として指定し、サブチェーン内のステップを参照できるようにする必要があります。
162.6.7 CLOSE_WINDOWプロシージャ
このプロシージャは、オープンしているウィンドウをただちにクローズします。ウィンドウはクローズすると無効になります。Schedulerでは、ウィンドウがクローズすると、リソース・プランをウィンドウ外で有効なリソース・プランに切り替えるか、オーバーラップ・ウィンドウの場合はリソース・プランを別のウィンドウに切り替えます。
構文
DBMS_SCHEDULER.CLOSE_WINDOW ( window_name IN VARCHAR2);
パラメータ
表162-19 CLOSE_WINDOWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ウィンドウの名前。 |
使用上のノート
存在しないウィンドウ、またはオープンしていないウィンドウをクローズしようとすると、エラーが発生します。
ジョブの属性stop_on_window_close
がTRUE
に設定されていない場合は、ジョブを実行しているウィンドウをクローズしても、その実行中のジョブは停止されません。ただし、リソース・プランが変更されると、ジョブに割り当てられたリソースも変更される可能性があります。
実行中のジョブのスケジュールとしてタイプWINDOW
のグループが設定されている場合、そのジョブを実行しているウィンドウをクローズしても、同じウィンドウ・グループ内の別のウィンドウがアクティブ化されると、このジョブは停止されません。これは、ジョブの属性stop_on_window_close
がTRUE
に設定されている場合でも当てはまります。
ウィンドウをクローズするには、MANAGE
SCHEDULER
権限が必要です。
162.6.8 COPY_JOBプロシージャ
このプロシージャは、既存のジョブのすべての属性を新しいジョブにコピーします。既存のジョブのステータスは変更されませんが、新しいジョブは使用禁止で作成されます。
構文
DBMS_SCHEDULER.COPY_JOB ( old_job IN VARCHAR2, new_job IN VARCHAR2);
パラメータ
表162-20 COPY_JOBプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のジョブの名前。 |
|
新しいジョブの名前。 |
使用上のノート
ジョブをコピーするには、新しいジョブのスキーマ内にジョブを作成する権限(ユーザー自身のスキーマに作成する場合はCREATE
JOB
システム権限、それ以外の場合はCREATE
ANY
JOB
システム権限)を持っている必要があります。古いジョブがユーザー自身のスキーマにない場合は、そのジョブに対するALTER
権限か、またはCREATE
ANY
JOB
システム権限も持っている必要があります。
162.6.9 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);
パラメータ
表162-21 CREATE_CHAINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
新しいチェーンに割り当てる名前(オプションで、スキーマによって修飾することもできます)。この名前は、SQLネームスペース内で一意である必要があるため、名前およびスキーマが同じ表またはその他のオブジェクトは存在できません。 |
|
通常、ルール・セットは渡す必要がありません。ルール・セットおよび関連する空の評価コンテキストは、Schedulerによって自動的に作成されます。その後、ユーザーは、 十分な知識を持つユーザーは、チェーン依存性を表すルール・セットを作成し、ここで渡すことができます。これによって、より柔軟にルールを定義できます。たとえば、条件によって外部変数を参照したり、評価コンテキストによって表を公開することができます。ルール・セットを渡す場合は、それがチェーン・ルール・セットの形式であることを確認する必要があります。(たとえば、すべてのステップは、評価コンテキストに変数として示されている必要があります)。ルール・セットを渡さない場合、ルール・セットは |
|
これが |
|
チェーンの目的を説明するコメント(オプション)。 |
使用上のノート
自分のスキーマ内にチェーンを作成する場合は、CREATE
JOB
システム権限が必要です。別のスキーマ内にチェーンを作成する場合は、CREATE
ANY
JOB
システム権限が必要です。rule_set_name
を指定しない場合、ルール・セットと評価コンテキストは、チェーンが作成されるスキーマに作成されるため、ユーザーは、これらのオブジェクトの作成に必要な権限を持っている必要があります。詳細は、DBMS_RULE_ADM.CREATE_RULE_SET
およびDBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT
プロシージャに関する説明を参照してください。
162.6.10 CREATE_CREDENTIALプロシージャ
この推奨されないプロシージャは、ユーザー名/パスワードのペアを作成して保存します。資格証明は、ローカルまたはリモートのホスト・オペレーティング・システムあるいはリモートOracle Databaseで認証できるようにジョブに割り当てられます。
ノート:
Oracle Database 12cリリース1(12.1)では、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、かわりに DBMS_CREDENTIAL パッケージで提供される拡張機能、具体的にはCREATE_CREDENTIALプロシージャを使用することをお薦めします。
構文
DBMS_SCHEDULER.CREATE_CREDENTIAL ( credential_name IN VARCHAR2, username IN VARCHAR2, password IN VARCHAR2, database_role IN VARCHAR2 DEFAULT NULL, windows_domain IN VARCHAR2 DEFAULT NULL, comments IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-22 CREATE_CREDENTIALプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
資格証明に割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。これは、 |
|
ホスト・オペレーティング・システムまたはリモートOracle Databaseにログインするためのユーザー名。これは |
|
ユーザー名のパスワード。これは |
|
有効な値は |
|
Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。このドメインは、自動的に大文字に変換されます。最大長は64です。 |
|
資格証明の説明に使用可能なテキスト文字列。Schedulerではこのパラメータは使用されません。最大長は240です。 |
使用上のノート
資格証明は特定のスキーマに存在し、CREATE JOB
システム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE ANY JOB
権限が必要です。
162.6.11 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);
パラメータ
表162-23 CREATE_DATABASE_DESTINATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベース接続先に割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。 |
|
Schedulerエージェントが接続する外部接続先の名前。エージェント名と同じです。 この外部接続先は、すでに存在している必要があります。エージェントを表す外部接続先は、エージェントがインスタンスに登録されるときに自動的にデータベース・インスタンスで作成されます。 エージェントの名前はエージェント設定ファイルで指定されます。指定されない場合、存在するホストの名前の最初の部分(最初のピリオドの前)がデフォルトで設定されます。 |
|
接続先のOracle Databaseインスタンスに解決される、Oracle Net接続識別子。正確な構文はOracle Net構成に依存します。接続識別子は、完全なOracle Net接続記述子(ネットワーク・アドレスまたはデータベース・サービス名)あるいは接続記述子の別名であるネット・サービス名になります。別名は、ローカル・コンピュータのtnsnames.oraファイルで解決される必要があります。
接続識別子の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。 |
|
データベース接続先を説明するテキスト文字列。Schedulerではこの引数は使用されません。 |
使用上のノート
データベース接続先は特定のスキーマに存在し、CREATE JOB
システム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマにデータベース接続先を作成するには、CREATE ANY JOB
権限が必要です。
162.6.12 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);
パラメータ
表162-24 CREATE_EVENT_SCHEDULEパラメータ
パラメータ | 説明 |
---|---|
|
スケジュールに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、スケジュールはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。 |
|
この属性は、スケジュールが有効になる日時を指定します。このスケジュールのコンテキストでは、この日時より前に発生したイベントは無視されます。 |
|
イベント・ソースのキュー表の列に基づく条件式です。この式は、アドバンスト・キューイング・ルールの構文に従っている必要があります。したがって、メッセージ・ペイロードがオブジェクト・タイプで、式のオブジェクト属性の前に |
|
この引数は、File Watcher名または特定のジョブを開始するイベントがエンキューされるキュー(ソース・キュー)を指定します。ソース・キューが保護キューの場合、 |
|
指定日時の後で、ジョブの実行およびウィンドウのオープンを停止する日時です。
|
|
スケジュールのコメントを指定します(オプション)。デフォルトでは、この属性は |
使用上のノート
ユーザーは、各自のスキーマでスケジュールを作成するにはCREATE
JOB
権限を、またはschema.schedule_name
を指定することによって他者のスキーマでスケジュールを作成するにはCREATE
ANY
JOB
権限を持っている必要があります。スケジュールが作成されると、他のユーザーもそのスケジュールを使用できます。スケジュールは、PUBLIC
へのアクセス権を伴って作成されます。このため、スケジュールへのアクセス権限を明示的に付与する必要はありません。
162.6.13 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);
パラメータ
表162-25 CREATE_FILE_WATCHERパラメータ
パラメータ | 説明 |
---|---|
|
File Watcherに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、File Watcherはスキーマの表と同じ名前を持つことができません。オプションで、スキーマ名を接頭辞として付加できます。 |
|
ファイルの到着が指定されているディレクトリ。パスの先頭にある単一のワイルドカード'?'は、Oracleホームのパスを示します。たとえば、'?/rdbms/log'は、Oracleホーム・ディレクトリのrdbms/logサブディレクトリを示します。 |
|
検索するファイル名。2つのワイルドカードがファイル名の任意の場所で許可され、'?'は任意の1文字を示し、'*'はゼロ以上の文字を示します。この属性に |
|
有効な資格証明オブジェクトの名前。 File Watcherでは、ホスト・オペレーティング・システムに対する認証を行い監視対象ファイルにアクセスするために、資格証明が使用されます。File Watcherの所有者は、資格証明で |
|
外部接続先の名前。リモートSchedulerエージェントをデータベースに登録して、外部接続先を作成します。有効な外部接続先名については、ビュー |
|
File Watcherがファイルを見つけたとみなす前にファイルが達する必要がある最小サイズ(バイト単位)。デフォルトは0です。 |
|
File Watcherがファイルを見つけたとみなす前にファイルが変化せずに留まっている必要がある最小間隔。1時間を超えることはできません。 |
|
オプションのコメント。 |
|
|
使用上のノート
スキーマにFile Watcherを作成するには、CREATE
JOB
システム権限が必要です。自分のスキーマと異なるスキーマ(許可されないSYS
スキーマ以外)にFile Watcherを作成するには、CREATE
ANY
JOB
システム権限が必要です。
162.6.14 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);
パラメータ
表162-26 CREATE_GROUPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
グループに割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。これは |
|
グループにあるメンバーのタイプ。すべてのメンバーが同じ型であることが必要です。有効なタイプは、次のとおりです。
データベース接続先および外部接続先グループのメンバーは次の形式になります。 [[schema.]credential@][schema.]destination 各項目の意味は、次のとおりです。
接続先メンバーの資格証明部分はオプションです。省略すると、この接続先メンバーを使用するジョブはデフォルトの資格証明を使用します。 ウィンドウ・グループのメンバーはウィンドウの名前です。すべてのSchedulerウィンドウは |
|
グループ・メンバーのカンマ区切りリスト(オプション)。デフォルトは キーワード
|
|
グループを説明するテキスト文字列。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;
162.6.15 CREATE_INCOMPATIBILITYプロシージャ
このプロシージャは、非互換性定義を作成します。
構文
DBMS_SCHEDULER.CREATE_INCOMPATIBILITY ( incompatibility_name IN VARCHAR2, object_name IN VARCHAR2, constraint_level IN VARCHAR2 DEFAULT 'JOB_LEVEL', enabled IN BOOLEAN DEFAULT TRUE, comments IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-27 CREATE_INCOMPATIBILITYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
非互換性定義の名前。 |
|
1つ以上の(カンマ区切り)プログラムまたはジョブ。 |
|
1つ以上の(カンマ区切り)プログラムまたはジョブ。 |
|
制約を最初に有効にするか( |
|
説明コメント(オプション)。 |
使用上のノート
object_name
に複数の(カンマ区切りの)値を含める場合は、すべてが相互に互換性のない(つまり、同時に実行できない)プログラムまたはジョブである必要があります。ジョブの場合は、リストを2つ以上のジョブで構成し、constraint_level
を'JOB_LEVEL'に設定する必要があります。プログラムの場合は、constraint_level
を'JOB_LEVEL'
または'PROGRAM_LEVEL'
に設定できます。デフォルト値の'JOB_LEVEL'
に設定した場合、object_name
に指定されているプログラム(複数も可)に基づく単一ジョブのみを同時に実行できます。constraint_level
を'PROGRAM_LEVEL'
に設定した場合、プログラムに互換性はありませんが、同じプログラムに基づくジョブには互換性があります。
たとえば、object_name
の値が'P1,P2,P3'
でconstraint_level
が'PROGRAM_LEVEL'
の場合、P1に基づく多数のジョブを同時に実行できますが、P1に基づくジョブが実行中のときはP2またはP3に基づくジョブを実行できません。同様に、P3に基づく多数のジョブを同時に実行できますが、P1またはP2に基づくジョブは実行できません。constraint_level
を'JOB_LEVEL'
に設定した場合、一度に実行できるのは、プログラムP1、P2およびP3に基づくすべてのジョブの中から1つのジョブのみです。
参照:
『Oracle Database管理者ガイド』の非互換性定義の使用方法に関する項
162.6.16 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);
パラメータ
表162-28 CREATE_JOBプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、ジョブはスキーマの表と同じ名前を持つことができません。作成するジョブを別のスキーマに配置する場合は、そのスキーマ名でジョブを修飾する必要があります。
|
|
この属性は、作成するジョブのタイプを指定します。これを指定しない場合、エラーが発生します。関連情報については、次の行の サポートされる値は次のとおりです。
|
|
この属性は、ジョブのアクションを指定します。インライン・プログラムに ジョブ・アクションは自律型トランザクションの内部で実行され、自律型トランザクションのすべてのガイドラインおよび制限事項が適用されます。たとえば、オンラインDDL操作は自律型トランザクションの内部では許可されないため、ジョブ・アクションで使用できません。 次のアクションが可能です。
|
|
この属性は、ジョブに予測される引数の数を指定します。範囲は0から255で、デフォルトは0です。 |
|
このジョブに関連付けるプログラムの名前です。プログラムが |
|
ジョブの開始がスケジュールされている最初の日時を指定します。 カレンダ式を使用して反復間隔を指定する繰返しジョブの場合は、 Schedulerでは、ジョブが正確な時間に実行されることを保証しません。これは、システムがオーバーロードしてリソースが使用できない場合があるためです。 |
|
イベント・ソースのキュー表の列に基づく条件式です。この式は、アドバンスト・キューイング・ルールの構文に従っている必要があります。したがって、メッセージ・ペイロードがオブジェクト・タイプで、式のオブジェクト属性の前に |
|
この引数には、次の値のいずれかが指定されます。
|
|
ジョブを繰り返す間隔を指定します。反復間隔は、カレンダ式またはPL/SQL式を使用して指定できます。 指定した式を評価して、ジョブの次回実行時を決定します。 |
|
このジョブに関連付けるスケジュール、ウィンドウまたはウィンドウ・グループの名前です。 |
|
このジョブに関連付けるクラス。 |
|
この属性は、ジョブの期限が切れる日時(これ以降にジョブは実行されなくなります)を指定します。
|
|
ジョブのコメントを指定します。デフォルトでは、この属性は |
|
作成されるジョブのスタイル。この引数は、次の値のいずれかを取ることができます。
|
|
ジョブと使用するデフォルトの資格証明。リモート・データベース・ジョブ、リモート外部ジョブ、ローカル外部ジョブ、スクリプト・ジョブおよびファイル到着イベントを処理するイベント・ベースのジョブにのみ適用されます。資格証明が存在している必要があります。 ローカル・データベース・ジョブでは、 ローカル外部ジョブのみでは、この属性が 関連項目: CREATE_CREDENTIALプロシージャ |
|
ジョブのデータベース接続先または外部接続先。リモート・データベース・ジョブおよびリモート外部ジョブのみに使用します。ローカル・データベースで実行されているジョブまたはローカル外部ジョブ(実行可能)では、 この属性は、単一の接続先名またはタイプ' この属性には、次の事項が適用されます。
資格証明はすでに存在している必要があります。 既存の接続先については、ビュー *** |
|
ジョブを使用可能で作成するかどうかを指定します。 |
|
このフラグを
ジョブは、 このフラグを デフォルトでは、ジョブは |
使用上のノート
ジョブは、デフォルトでは使用禁止の状態で作成されます。ジョブをアクティブにしてスケジュール可能にするには、明示的に使用可能にする必要があります。ジョブを使用可能にする前に、すべてのプログラム引数(存在する場合)を定義してください(これは、プログラム・オブジェクトにデフォルト値を定義するか、またはジョブに値を指定して行います)。
JOB_QUEUE_PROCESSES
初期化パラメータには、ジョブの実行に対して作成可能なプロセスの最大数を指定する。Oracle Database 11gリリース2以降、JOB_QUEUE_PROCESSES
はDBMS_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_priority
、max_runs
などの他のジョブ属性は、SET_ATTRIBUTEプロシージャで設定します。
複数のジョブを効率的に作成するには、CREATE_JOBS
プロシージャを使用します。
ノート:
Schedulerは、ジョブのイベント条件に一致するイベントが発生するたびに、イベント・ベースのジョブを実行します。ただし、ジョブがすでに実行されている間に発生したイベントは無視され、イベントはコンシュームされますが別のジョブの実行がトリガーされることはありません。
162.6.17 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);
パラメータ
表162-29 CREATE_JOB_CLASSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブ・クラスに割り当てる名前。ジョブ・クラスは、 この属性はジョブ・クラスの名前を指定し、ジョブ・クラスを一意に識別します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、ジョブ・クラスはスキーマの表と同じ名前を持つことができません。 |
|
この属性は、このクラスに関連付けるリソース・コンシューマ・グループを指定します。リソース・コンシューマ・グループは、処理のニーズに基づいてグループ化された同期または非同期セッションのセットです。ジョブ・クラスとリソース・コンシューマ・グループは、多対1の関係になります。ジョブ・クラスに関連付けられたリソース・コンシューマ・グループは、ジョブ・クラスに割り当てられるリソースを決定します。 リソース・コンシューマ・グループが削除されると、関連付けられているジョブ・クラスは、デフォルトのリソース・コンシューマ・グループに関連付けられます。 リソース・コンシューマ・グループが指定されていない場合、ジョブ・クラスはデフォルトのリソース・コンシューマ・グループに関連付けられます。 ジョブ・クラスの作成時に指定のリソース・コンシューマ・グループが存在しない場合、エラーが発生します。 |
|
このクラス内のジョブが親和性を持つデータベース・サービスを指定します。つまりOracle RAC環境では、このクラスのジョブは、特定のサービスに割り当てられたデータベース・インスタンスでのみ実行されます。 サービスは、リソース・コンシューマ・グループにマップできるため、サービスを指定することで、ジョブに割り当てるリソースを制御することもできます。詳細については、 サービスを指定しない場合、ジョブ・クラスはデフォルト・サービスに属し、これはこのジョブ・クラスにサービス・アフィニティがなく、クラスタ内のデータベース・インスタンスのいずれかがジョブを実行する場合があることを意味します。ジョブ・クラスが属するサービスが削除された場合、ジョブ・クラスはデフォルトのサービスに属します。 ジョブ・クラスの作成時に指定したサービスが存在しない場合、エラーが発生します。 |
|
この属性は、ログ情報量を指定します。次のオプションから選択可能です。
|
|
この属性は、このクラスのジョブに対するジョブ・ログ・エントリが保持される日数を制御します。これによって、ジョブ・ログが無制限に大きくなることを避けることができます。 有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。 |
|
ジョブ・クラスのコメントを指定します(オプション)。デフォルトでは、この属性は |
使用上のノート
あるジョブ・クラスに属するジョブを作成するには、ジョブの所有者がそのジョブ・クラスのEXECUTE
権限を持っている必要があります。このため、ジョブ・クラスを作成したら、そのジョブ・クラスに関するEXECUTE
権限を発行して、ユーザーがそのクラスに属するジョブを作成できるようにする必要があります。ロールに対してもEXECUTE
権限を付与できます。
ジョブ・クラスを作成するには、MANAGE
SCHEDULER
システム権限が必要です。
162.6.18 CREATE_JOBSプロシージャ
このプロシージャは、複数のジョブを作成し、1回のコールでそれぞれの引数に値を設定します。
構文
DBMS_SCHEDULER.CREATE_JOBS ( jobdef_array IN SYS.JOB_DEFINITION_ARRAY, commit_semantics IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');
パラメータ
表162-30 CREATE_JOBSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブ定義の配列。 |
|
コミット・セマンティクス。次のタイプがサポートされています。
|
使用上のノート
このプロシージャは、1つのトランザクションのコンテキストで多くのジョブを作成します。目的のパフォーマンスを実現するには、作成するジョブを十分なサイズのバッチにグループ化する必要があります。小さい配列サイズを指定してCREATE_JOBS
をコールしても、CREATE_JOB
をジョブごとに1回コールする場合の速度とあまり変わりません。
このプロシージャを使用して、複数の接続先ジョブを作成することはできません。つまり、job_definition
オブジェクトのdestination
属性は、接続先グループを参照できません。
例
『Oracle Database管理者ガイド』を参照してください。
162.6.19 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);
パラメータ
表162-31 CREATE_PROGRAMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プログラムに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、プログラムはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。 |
|
この属性は、作成するプログラムのタイプを指定します。これを指定しない場合、エラーが発生します。
|
|
この属性は、プログラムのアクションを指定します。 プロジェクト25230、最後の3つのビュレット 次のアクションが可能です。
|
|
この属性は、プログラムが使用する引数の数を指定します。このパラメータを指定しない場合、デフォルトは0です。プログラムは最大255個の引数を使用できます。
|
|
このフラグは、プログラムを使用可能の状態で作成するかどうかを指定します。このフラグを |
|
プログラムのコメントです。デフォルトでは、この属性は |
使用上のノート
ユーザー各自のスキーマでプログラムを作成するには、CREATE
JOB
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っているユーザーは、すべてのスキーマでプログラムを作成できます。デフォルトでは、プログラムは使用禁止の状態で作成されます(使用可能なパラメータがTRUE
に設定されている場合は、この限りではありません)。これは、使用可能になるまでは、ジョブによって実行されることはありません。
他のユーザーがこのプログラムを使用するには、EXECUTE
権限が必要であるため、プログラムを作成したら、EXECUTE
権限を付与する必要があります。
162.6.20 CREATE_RESOURCEプロシージャ
このプロシージャを使用すると、ユーザーはジョブによって使用されるリソースを指定したり、新しいリソースを作成できます。
構文
DBMS_SCHEDULER.CREATE_RESOURCE ( resource_name IN VARCHAR2, units IN PLS_INTEGER, status IN VARCHAR2 DEFAULT 'ENFORCE_CONSTRAINTS', constraint_level IN VARCHAR2 DEFAULT 'JOB_LEVEL', comments IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-32 CREATE_RESOURCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リソース名。 |
|
ジョブやプログラムが使用する、このリソースのユニット数。 |
|
リソースのステータス。
|
|
制約のレベル: 非互換性について、非互換性メンバーは、 |
|
リソースについて説明するコメントです。 |
使用上のノート
次の例では、新規リソースを作成します。
BEGIN DBMS_SCHEDULER.CREATE_RESOURCE( resource_name => 'my_resource', units => 3, state => 'ENFORCE_CONSTRAINTS', comments => 'Resource1' ) END; /
参照:
-
『Oracle Database管理者ガイド』のリソースの作成または削除に関する項
162.6.21 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);
パラメータ
表162-33 CREATE_SCHEDULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スケジュールに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、スケジュールはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。 |
|
この属性は、スケジュールが有効になる最初の日時を指定します。繰返しスケジュールの場合、 以前に
|
|
この属性は、スケジュールを繰り返す間隔を指定します。これは、カレンダ構文を使用して表されます。詳細は、「カレンダ構文」を参照してください。PL/SQL式は、指定されたスケジュールの反復間隔には使用できません。 |
|
指定日時の後で、ジョブの実行およびウィンドウのオープンを停止する日時です。
|
|
スケジュールのコメントを指定します(オプション)。デフォルトでは、この属性は |
使用上のノート
このプロシージャでは、各自のスキーマでスケジュールを作成するにはCREATE
JOB
権限が、またはschema.schedule_name
を指定することによって他者のスキーマでスケジュールを作成するにはCREATE
ANY
JOB
権限が必要です。スケジュールが作成されると、他のユーザーもそのスケジュールを使用できます。スケジュールは、PUBLIC
へのアクセス権を伴って作成されます。このため、スケジュールへのアクセス権限を明示的に付与する必要はありません。
162.6.22 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);
パラメータ
表162-34 CREATE_WINDOWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ウィンドウに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。すべてのウィンドウは |
|
この属性は、ウィンドウをオープンすると自動的にアクティブになるリソース・プランを指定します。ウィンドウがクローズすると、システムによって、適切なリソース・プランに切り替えられます(このリソース・プランは、ほとんどの場合、ウィンドウがオープンする前に有効だった計画ですが、別のウィンドウの計画にすることもできます)。 1つのウィンドウに関連付けられるのは、1つのリソース・プランのみです。 ウィンドウが開いているときにリソース・プランが削除されても、このウィンドウの継続時間中のリソース割当てには影響しません。 |
|
この属性は、ウィンドウのオープンがスケジュールされている最初の日時を指定します。 カレンダ式を使用して反復間隔を指定する繰返しウィンドウの場合、 |
|
ウィンドウをオープンのままにする時間長を指定します。たとえば |
|
ウィンドウに関連付けるスケジュールの名前を指定します。 |
|
この属性は、ウィンドウを繰り返す間隔を指定します。これは、Schedulerのカレンダ構文を使用して表されます。詳細は、「カレンダ構文」を参照してください。 PL/SQL式を使用して、ウィンドウの反復間隔を指定することはできません。 指定した式は、ウィンドウの次回のオープンを決定するために評価されます。 |
|
ウィンドウがクローズする日時を指定します。
|
|
2つのウィンドウがオーバーラップした場合のみ使用されます。一度に1つのウィンドウしか有効にできないため、ウィンドウの優先順位によってオープンするウィンドウが決定されます。使用可能な値は、' |
|
ウィンドウのコメントを指定します(オプション)。デフォルトでは、この属性は |
使用上のノート
ウィンドウを作成するには、MANAGE
SCHEDULER
権限が必要です。
Schedulerウィンドウは、スケジュールに基づいてリソース・プランを自動的に切り替えるために使用される重要なメカニズムです。ALTER SYSTEM SET RESOURCE_MANAGER_PLAN
文またはDBMS_RESOURCE_MANAGER.SWITCH_PLAN
パッケージ・プロシージャを使用すると、リソース・プランを手動でアクティブにすることもできます。また、これらの手動による方法のいずれを使用しても、Schedulerウィンドウによるリソース・プランの切替えを使用禁止にできます。詳細は、『Oracle Database管理者ガイド』および「SWITCH_PLANプロシージャ」を参照してください。
162.6.23 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);
パラメータ
表162-35 DEFINE_ANYDATA_ARGUMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するプログラムの名前。この名前のプログラムが存在する必要があります。 |
|
実行可能ファイルに渡される際の引数の位置。引数の位置として指定できる値は、1から、そのプログラムに指定された |
|
引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てた場合は、その名前をSET_JOB_ANYDATA_VALUEプロシージャを含む他のパッケージ・プロシージャでも使用できます。 |
|
定義する引数のデータ・タイプ。この属性は、Schedulerによって検証または使用されません。これは、引数に割り当てる値を決定する際に、プログラムのユーザーによってのみ使用されます。 |
|
|
|
このパラメータは、将来の使用に備えて確保されています。これは、 |
使用上のノート
1からnumber_of_arguments
値までのすべてのプログラム引数は、プログラムが使用可能になる前に定義しておく必要があります。このプロシージャの引数のデフォルト値が定義されていない場合は、ジョブで値を定義する必要があります。
プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、プログラム引数を定義できます。
162.6.24 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);
パラメータ
表162-36 DEFINE_CHAIN_EVENT_STEPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ステップが含まれているチェーンの名前。 |
|
ステップの名前。 |
|
ステップが待機するイベント・スケジュールの名前。 |
|
このパラメータは将来使用するために予約されています。 |
|
「CREATE_EVENT_SCHEDULEプロシージャ」を参照してください。 |
|
「CREATE_EVENT_SCHEDULEプロシージャ」を参照してください。 |
使用上のノート
チェーン・ステップを定義するには、そのチェーンに対するALTER
権限が必要です(チェーンの所有者であるか、チェーンに対するALTER
オブジェクト権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
チェーン・ステップのベースをFile Watcherにすることもできます。これを行うには、File Watcher名を直接queue_spec
パラメータに入力するか、event_schedule_name
パラメータでFile Watcherスケジュールを使用します。
162.6.25 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);
パラメータ
表162-37 DEFINE_CHAIN_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するチェーンの名前。 |
|
アクションを実行するには、ブール式の評価結果が
|
|
ルールの評価結果が 考えられるアクションは次のとおりです。
|
|
作成するルールの名前。 |
|
ルールの説明コメント(オプション)。これは、作成されるルール・オブジェクトに格納されます。 |
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.
162.6.26 DEFINE_CHAIN_STEPプロシージャ
このプロシージャは、チェーン・ステップを追加または置換し、プログラムまたはネストしたチェーンに関連付けます。チェーン・ステップが開始されると、指定されたプログラムまたはチェーンが実行されます。chain_name
引数で指定した名前のステップがすでに存在している場合は、古いステップが新しいステップに置き換えられます。
チェーンの所有者は、ステップに関連付けられているプログラムまたはチェーンに対するEXECUTE
権限を持っている必要があります。ステップでは、1つのみのプログラムまたはチェーンを実行できます。
このプロシージャでは、すべてのステップ属性を設定することはできません。credential_name
やdestination_name
など、追加のチェーン・ステップ属性を設定するには、ALTER_CHAIN
プロシージャを使用します。
構文
DBMS_SCHEDULER.DEFINE_CHAIN_STEP ( chain_name IN VARCHAR2, step_name IN VARCHAR2, program_name IN VARCHAR2);
パラメータ
表162-38 DEFINE_CHAIN_STEPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するチェーンの名前。 |
|
定義するステップの名前。同じ名前のステップがすでに存在する場合は、古いステップが新しいステップに置き換えられます。 |
|
このステップで実行するプログラムまたはチェーンの名前。チェーンの所有者は、このプログラムまたはチェーンに対する |
使用上のノート
チェーン・ステップを定義するには、そのチェーンに対するALTER
権限が必要です(チェーンの所有者であるか、チェーンに対するALTER
権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
162.6.27 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);
パラメータ
表162-39 DEFINE_METADATA_ARGUMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するプログラムの名前。 |
|
渡すメタデータ。有効なメタデータ属性は、' これらの属性の詳細は、表162-40を参照してください。 |
|
実行可能ファイルに渡される際の引数の位置。この位置は、プログラムに指定された |
|
引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てる場合は、その名前を他のパッケージ・プロシージャでも使用できます。 |
表162-40 メタデータ属性
メタデータ属性 | データ・タイプ | 説明 |
---|---|---|
|
|
現在実行中のジョブの名前。 |
|
|
現在実行中のジョブのサブ名。チェーン・ステップを実行中のジョブは、名前+サブ名の形式で一意に識別されます。ジョブがチェーンの一部でない場合は、 |
|
|
現在実行中のジョブの所有者。 |
|
|
現在実行中のジョブのスケジュール上の開始時間。 |
|
|
現在実行中のジョブの開始時間。 |
|
|
ジョブがウィンドウによって開始された場合は、そのウィンドウがオープンした時間。 |
|
|
ジョブがウィンドウによって開始された場合は、そのウィンドウのクローズがスケジュールされている時間。 |
|
(説明を参照) |
イベント・ベースのジョブの場合は、ジョブを開始したイベントのメッセージ・コンテンツ。この属性のデータ・タイプは、イベントで使用されるキューによって異なります。キュー表の |
使用上のノート
プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、プログラム引数を定義できます。
event_message
を除くすべてのメタデータ属性は、ジョブのjob_action
属性またはプログラムのprogram_action
属性に入力するPL/SQLブロックで使用できます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。
162.6.28 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);
パラメータ
表162-41 DEFINE_PROGRAM_ARGUMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するプログラムの名前。この名前のプログラムが存在する必要があります。 |
|
実行可能ファイルに渡される際の引数の位置。引数の位置として指定できる値は、1から、そのプログラムに指定された |
|
引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てる場合は、その名前をSET_JOB_ARGUMENT_VALUEプロシージャを含む他のパッケージ・プロシージャで使用できます。 |
|
定義する引数のデータ・タイプ。この属性は、Schedulerによって検証または使用されません。引数に割り当てる値を決定する際に、プログラムのユーザーによってargument_typeが使用されます。任意の有効なSQLデータ・タイプを使用できます。 |
|
ジョブによって何も指定されていない場合に、引数に割り当てられるデフォルト値。 |
|
このパラメータは、将来の使用に備えて確保されています。これは、 |
使用上のノート
1からnumber_of_arguments
値までのすべてのプログラム引数は、プログラムが使用可能になる前に定義しておく必要があります。このプロシージャの引数のデフォルト値が定義されていない場合は、ジョブで値を定義する必要があります。
プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、プログラム引数を定義できます。
DEFINE_PROGRAM_ARGUMENT
では、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。
162.6.29 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');
パラメータ
表162-42 DISABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
使用禁止にするオブジェクトの名前。カンマ区切りリストを使用できます。 ジョブ・クラス名を指定すると、そのジョブ・クラスのすべてのジョブが使用禁止になります。ジョブ・クラスは使用禁止になりません。 グループ名を指定すると、グループが使用禁止になりますが、グループ・メンバーの使用可能な状態に影響はありません。 |
|
|
|
コミット・セマンティクス。次のタイプがサポートされています。
|
使用上のノート
ウィンドウには前にSYS
を付ける必要があります。
すでに使用禁止になっているオブジェクトを使用禁止にしても、エラーは発生しません。
force
オプションの目的は、依存関係を示すことです。依存オブジェクトは変更されません。
ウィンドウまたはタイプWINDOW
のグループでDISABLE
を実行するには、MANAGE
SCHEDULER
権限が必要です。
DISABLE
は、SYS
スキーマ以外の任意のスキーマで使用できます。
ジョブ
ジョブを使用禁止にするとは、ジョブのメタデータが存在してもジョブを実行できず、ジョブ・コーディネータがこれらのジョブを処理対象として取得しないことを意味します。ジョブが使用禁止になると、ジョブ・キューのstate
がdisabled
に変更されます。
force
をFALSE
に設定した場合でジョブが現在実行中の場合は、エラーが戻されます。
force
をTRUE
に設定した場合、ジョブは使用禁止になりますが、現在実行中のインスタンスは終了できます。
複数の接続先があるジョブでは、特定の接続先で子ジョブを使用禁止にすることはできません。ただし、接続先を使用禁止にすることは可能です。
プログラム
プログラムが使用禁止になると、ステータスは使用禁止に変更されます。使用禁止プログラムとは、メタデータが存在しても、このプログラムを指定したジョブを実行できないことを意味します。
force
をFALSE
に設定した場合、プログラムがどのジョブからも参照されないようにする必要があります。参照された場合はエラーが発生します。
force
をTRUE
に設定した場合、このプログラムを指定したジョブは使用禁止になりませんが、このプログラムは無効であるため、実行時にエラーになります。
このプログラムを指定した実行中のジョブは、DISABLE
コールの影響を受けずに続行できます。
プログラムが使用禁止の場合、プログラムに関するすべての引数には影響ありません。
File Watchers
force
をFALSE
に設定した場合、File Watcherがどのジョブからも参照されないようにする必要があり、参照された場合にはエラーが発生します。File Watcherの使用禁止を強制すると、File Watcherに依存するジョブは使用禁止になります。
ウィンドウ
ウィンドウを使用禁止にした場合、ウィンドウがオープンされないことを意味しますが、ウィンドウのメタデータは依然存在するため、再び使用可能に設定できます。
force
をFALSE
に設定した場合、ウィンドウがどのジョブからもオープンまたは参照されないようにする必要があります(オープンまたは参照された場合はエラーが発生します)。
force
をTRUE
に設定した場合、オープンしているウィンドウを使用禁止にできますが、ウィンドウはクローズされません。ウィンドウは、再び使用可能になるまでオープンされません。
ウィンドウが使用禁止の場合、このウィンドウがスケジュールとして設定されているジョブを使用禁止にすることはできません。
ウィンドウ・グループ
タイプWINDOW
のグループを使用禁止にすると、このウィンドウ・グループがスケジュールとして設定されたジョブ(現在実行中のジョブ以外)は、メンバー・ウィンドウがオープンしても実行されません。ただし、ウィンドウ・グループのメンバー・ウィンドウがどれか1つスケジュールとして設定されているジョブは、実行されます。
ウィンドウ・グループのメタデータは依然存在するため、再び使用可能に設定できます。ウィンドウ・グループのメンバーは、オープンしたままであることに注意してください。
force
をFALSE
に設定した場合、ウィンドウ・グループに、ジョブによってオープンまたは参照されるメンバーが存在しないようにする必要があります(存在する場合は、エラーが発生します)。
force
をTRUE
に設定すると、次のようになります。
-
ウィンドウ・グループは使用禁止となりますが、オープン中のウィンドウはクローズされないか、または使用禁止になりません。これは、最後まで継続できます。
-
ウィンドウ・グループは使用禁止になりますが、このウィンドウ・グループがスケジュールとして設定されているジョブは使用禁止になりません。
ジョブのチェーン
チェーンを使用禁止にしても、チェーンのメタデータはそのまま存在しますが、これを指定するジョブは実行できなくなります。これによって、不完全に指定されたチェーンが実行される危険性がなくなり、チェーンを安全に変更できます。force
をFALSE
に設定した場合は、チェーンがどのジョブからも参照されないようにする必要があり、参照された場合は、エラーが発生します。force
をTRUE
に設定した場合、このチェーンを指定したジョブは使用禁止になりませんが、実行時にエラーになります。このチェーンを指定した実行中のジョブは、DISABLE
コールの影響を受けずに処理を完了できます。
データベース接続先
データベース接続先を使用禁止にすると、次のような影響があります。
-
複数の接続先ジョブが実行されると、接続先がスキップされます。
-
ジョブに対してすべての接続先を使用禁止にした場合、Schedulerがジョブを実行しようとするとエラーが発生します。
-
*_SCHEDULER_JOB_DESTS
のREFS_ENABLED
列は、データベース接続先を参照するすべてのジョブに対してFALSE
に設定されます。
外部接続先
外部接続先を使用禁止にすると、次のような影響があります。
-
依存しているデータベース接続先は使用可能な状態を保持しますが、Schedulerが外部接続先に依存するデータベース接続先でジョブを実行しようとするとエラーが発生します。
-
*_SCHEDULER_JOB_DESTS
のREFS_ENABLED
列は、外部接続先を参照するすべての外部ジョブおよび外部接続先に依存するデータベース接続先を持つすべてのデータベース・ジョブに対してFALSE
に設定されます。
グループ
外部接続先グループまたはデータベース接続先グループを使用禁止にした場合、Schedulerが外部接続先にグループを指定するジョブを実行しようとするとエラーが発生します。
162.6.30 DROP_AGENT_DESTINATIONプロシージャ
このプロシージャは、1つ以上の外部接続先(エージェント接続先とも呼ばれます)を削除します。外部接続先を削除する優先的な方法(schagent
ユーティリティを使用してデータベースでのSchedulerエージェントの登録を解除)が失敗したために使用できない場合にのみ使用します。
このプロシージャは、SYS
ユーザーまたはMANAGE
SCHEDULER
権限を持つユーザーのみがコールできます。
ノート:
外部接続先は、データベースにエージェントを登録することで、暗黙的にのみソース・データベースで作成されます。ユーザーがコール可能なCREATE_AGENT_DESTINATION
プロシージャはありません。
構文
DBMS_SCHEDULER.DROP_AGENT_DESTINATION ( destination_name IN VARCHAR2);
パラメータ
表162-43 DROP_AGENT_DESTINATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する外部接続先のカンマ区切りリスト。ユーザー 存在しない外部接続先が発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべての外部接続先が削除されます。
|
使用上のノート
外部接続先が削除されると、次のような影響があります。
-
外部接続先を参照するすべてのデータベース接続先が使用禁止になり、その
agent
属性がNULL
に設定されます。 -
該当する接続先を参照する外部接続先グループのメンバーがグループから削除されます。
-
該当する外部接続先を参照する
*_SCHEDULER_JOB_DESTS
ビューにあるすべてのジョブ・インスタンスも削除されます。 -
該当する接続先に対して実行されているジョブは停止します。
162.6.31 DROP_CHAINプロシージャ
このプロシージャは、既存のチェーンを削除します。
構文
DBMS_SCHEDULER.DROP_CHAIN ( chain_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-44 DROP_CHAINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するチェーンの名前。チェーンのカンマ区切りリストも使用できます。 |
|
|
使用上のノート
チェーンを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER
権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
チェーンに関連付けられているすべてのステップが削除されます。チェーンの作成時にルール・セットが指定されていなかった場合は、チェーンに関連付けられている、自動的に作成されたルール・セットおよび評価コンテキストも削除されるため、ユーザーはこれを行うために必要な権限を持っている必要があります。詳細は、DBMS_RULE_ADM.DROP_RULE_SET
およびDBMS_RULE_ADM.DROP_EVALUATION_CONTEXT
プロシージャに関する説明を参照してください。
force
をFALSE
に設定した場合は、すべてのジョブでこのチェーンを使用できません。force
をTRUE
に設定した場合は、このチェーンが削除される前に、このチェーンを使用するすべてのジョブが使用禁止になります(それらのジョブで実行中のものがある場合はすべて停止されます)。
162.6.32 DROP_CHAIN_RULEプロシージャ
このプロシージャは、既存のチェーンからルールを削除します。このルールに対応するルール・オブジェクトも削除されます。チェーンは使用禁止になりません。このルールを削除するとチェーンが無効になる場合は、まずチェーンを使用禁止にして、実行されないようにする必要があります。
構文
DBMS_SCHEDULER.DROP_CHAIN_RULE ( chain_name IN VARCHAR2, rule_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-45 DROP_CHAIN_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するチェーンの名前。 |
|
削除するルールの名前。 |
|
|
使用上のノート
チェーン・ルールを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER
権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
チェーン・ルールを削除すると、元のルール・データベース・オブジェクトも削除されるため、ユーザーは、そのルール・オブジェクトを削除する権限を持っている必要があります。詳細は、「DBMS_RULE_ADM.DROP_RULE
プロシージャ」を参照してください。
162.6.33 DROP_CHAIN_STEPプロシージャ
このプロシージャは、チェーン・ステップを削除します。このチェーン・ステップがチェーン・ルールで使用されている場合は、チェーンが使用禁止になります。
構文
DBMS_SCHEDULER.DROP_CHAIN_STEP ( chain_name IN VARCHAR2, step_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-46 DROP_CHAIN_STEPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するチェーンの名前。 |
|
削除するステップの名前。カンマ区切りリストを使用できます。 |
|
|
使用上のノート
チェーン・ステップを削除するには、そのチェーンに対するALTER
権限が必要です(チェーンの所有者であるか、チェーンに対するALTER
権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
162.6.34 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);
パラメータ
表162-47 DROP_CREDENTIALプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する資格証明の名前。オプションで、スキーマ名を接頭辞として付加できます。 |
|
|
使用上のノート
資格証明の所有者またはCREATE ANY JOB
システム権限を持つユーザーのみが資格証明を削除できます。
資格証明を参照している実行中のジョブは、このプロシージャの影響を受けることなく続行できます。
162.6.35 DROP_DATABASE_DESTINATIONプロシージャ
このプロシージャは、1つ以上のデータベース接続先を削除します。
構文
DBMS_SCHEDULER.DROP_DATABASE_DESTINATION ( destination_name IN VARCHAR2);
パラメータ
表162-48 DROP_DATABASE_DESTINATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する接続先の名前。削除するデータベース接続先のカンマ区切りリストを使用できます。各データベース接続先は、オプションでスキーマ名を接頭辞として付加できます。 存在しないデータベース接続先が発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべてのデータベース接続先が削除されます。
|
使用上のノート
所有者またはCREATE ANY JOB
システム権限を持つユーザーのみがデータベース接続先を削除できます。
データベース接続先が削除されると、次のような影響があります。
-
該当するデータベース接続先を参照する
*_SCHEDULER_JOB_DESTS
ビューにあるすべてのジョブ・インスタンスも削除されます。 -
該当する接続先に対して実行されているジョブは停止します。
-
該当する接続先を参照するデータベース接続先グループのメンバーがグループから削除されます。
162.6.36 DROP_FILE_WATCHERプロシージャ
このプロシージャは、1つ以上のFile Watcherを削除します。
構文
DBMS_SCHEDULER.DROP_FILE_WATCHER ( file_watcher_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-49 DROP_FILE_WATCHERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するFile Watcher。File Watcherのカンマ区切りリストを使用できます。各File Watcher名は、オプションでスキーマ名を接頭辞として付加できます。
|
|
|
使用上のノート
File Watcherの所有者またはCREATE ANY JOB
システム権限を持つユーザーのみがFile Watcherを削除できます。
File Watcherを参照している実行中のジョブは、このプロシージャの影響を受けることなく続行できます。
162.6.37 DROP_GROUPプロシージャ
このプロシージャは、1つ以上のグループを削除します。
構文
DBMS_SCHEDULER.DROP_GROUP ( group_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-50 DROP_GROUPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するグループ。グループ名のカンマ区切りリストを使用できます。各グループ名は、オプションでスキーマ名を接頭辞として付加できます。 存在しないグループが発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべてのグループは削除されます。
|
|
|
使用上のノート
所有者またはCREATE ANY JOB
システム権限を持つユーザーのみがグループを削除できます。タイプWINDOW
のグループを削除するには、MANAGE
SCHEDULER
権限が必要です。
162.6.38 DROP_INCOMPATIBILITYプロシージャ
このプロシージャは、既存の非互換性定義を削除します。
構文
DBMS_SCHEDULER.DROP_INCOMPATIBILITY ( incompatibility_name IN VARCHAR2);
パラメータ
表162-51 DROP_INCOMPATIBILITYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
非互換性定義の名前。 |
使用上のノート
参照:
『Oracle Database管理者ガイド』の非互換性定義の使用方法に関する項を参照してください。
162.6.39 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');
パラメータ
表162-52 DROP_JOBプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブまたはジョブ・クラスの名前。カンマ区切りリストを使用できます。ジョブ・クラスの場合は、 ジョブ・クラスの名前を指定すると、そのジョブ・クラスに属するジョブは削除されますが、ジョブ・クラス自体は削除されません。 |
|
|
|
|
|
コミット・セマンティクス。次のタイプがサポートされています。
|
使用上のノート
force
およびdefer
をFALSE
に設定した場合で、コール時にジョブを実行中の場合、このジョブを削除する試行は失敗します。commit_semantics
の設定により、DROP_JOB
のコール全体が失敗する場合があります。
force
とdefer
の両方をTRUE
に設定すると、エラーが発生します。
ジョブを削除するには、そのジョブに対するALTER
権限が必要です(ジョブの所有者であるか、ジョブに対するALTER
オブジェクト権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
162.6.40 DROP_JOB_CLASSプロシージャ
このプロシージャは、ジョブ・クラスを削除します。ジョブ・クラスの削除とは、そのジョブ・クラスのすべてのメタデータをデータベースから削除することです。
構文
DBMS_SCHEDULER.DROP_JOB_CLASS ( job_class_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-53 DROP_JOB_CLASSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブ・クラスの名前。カンマ区切りリストを使用できます。 |
|
そのジョブ・クラスに所属する実行中のジョブには影響しません。 |
使用上のノート
ジョブ・クラスを削除するには、MANAGE
SCHEDULER
システム権限が必要です。
162.6.41 DROP_PROGRAMプロシージャ
このプロシージャは、プログラムを削除します。プログラムを削除すると、プログラムに関連する引数もすべて削除されます。
構文
DBMS_SCHEDULER.DROP_PROGRAM ( program_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-54 DROP_PROGRAMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するプログラムの名前。カンマ区切りリストを使用できます。 |
|
このプログラムを指定した実行中のジョブは、 |
使用上のノート
プログラムを削除するには、プログラムの所有者であるか、プログラムのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、プログラムを削除できます。
162.6.42 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);
パラメータ
表162-55 DROP_PROGRAM_ARGUMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するプログラムの名前。この名前のプログラムが存在する必要があります。 |
|
削除する引数の名前。 |
|
削除する引数の位置。 |
使用上のノート
プログラム引数を削除するには、プログラムの所有者であるか、プログラムのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、プログラム引数を削除できます。
162.6.43 DROP_RESOURCEプロシージャ
このプロシージャは、リソースを削除します。
構文
DBMS_SCHEDULER.DROP_RESOURCE ( resource_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-56 DROP_RESOURCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するリソースの名前です。カンマ区切りリストを使用できます。 |
|
|
使用上のノート
所有者またはCREATE ANY JOBシステム権限を持つユーザーのみがリソースを削除できます。
参照:
『Oracle Database管理者ガイド』のリソースの作成または削除に関する項
162.6.44 DROP_SCHEDULEプロシージャ
このプロシージャは、スケジュールを削除します。
構文
DBMS_SCHEDULER.DROP_SCHEDULE ( schedule_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-57 DROP_SCHEDULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スケジュールの名前。カンマ区切りリストを使用できます。 |
|
このスケジュールを指定した実行中のジョブおよびオープン中のウィンドウには影響しません。 |
使用上のノート
削除するスケジュールの所有者であるか、そのスケジュールのALTER
権限があるか、またはCREATE
ANY
JOB
権限を持っている必要があります。
162.6.45 DROP_WINDOWプロシージャ
このプロシージャは、ウィンドウを削除します。このウィンドウに関するすべてのメタデータが、データベースから削除されます。このウィンドウは、このウィンドウを参照するすべてのグループから削除されます。
構文
DBMS_SCHEDULER.DROP_WINDOW ( window_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-58 DROP_WINDOWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ウィンドウの名前。カンマ区切りリストを使用できます。 |
|
このウィンドウがスケジュールとして設定されている実行中のジョブは、そのジョブの |
使用上のノート
ウィンドウを削除するには、MANAGE
SCHEDULER
権限が必要です。
162.6.46 DUMP_IN_MEMORY_TRACEプロシージャ
このプロシージャは、指定されたプロセス状態オブジェクト・アドレスのスケジューラ・インメモリー・トレース・バッファをリクエスタ・プロセスの現在のトレース・ファイルにダンプします。
構文
DBMS_SCHEDULER.DUMP_IN_MEMORY_TRACE ( PROCESS_ADDRESS IN RAW);
パラメータ
表162-59 DUMP_IN_MEMORY_TRACEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ダンプされるプロセスの状態オブジェクト・アドレス。 |
使用上のノート
dump_in_memory_trace
を実行するには、SYS
ユーザーとして接続するか、DBAロールを持っている必要があります。
162.6.47 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');
パラメータ
表162-60 ENABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
使用可能にするSchedulerオブジェクトの名前。名前のカンマ区切りリストを使用できます。 ジョブ・クラス名を指定すると、そのジョブ・クラスのすべてのジョブが使用可能になります。 グループ名を指定すると、グループが使用可能になりますが、グループ・メンバーの使用可能な状態に影響はありません。 |
|
コミット・セマンティクス。次のタイプがサポートされています。
|
使用上のノート
ウィンドウ名には前にSYS
を付ける必要があります。
ウィンドウまたはタイプWINDOW
のグループでENABLE
を実行するには、MANAGE
SCHEDULER
権限が必要です。EXECUTABLE
タイプのジョブの場合(またはEXECUTABLE
タイプのプログラムを指定するジョブの場合)、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOB
システム権限を持っている必要があります。
File Watcherを使用可能にするには、File Watcherの所有者は、指定した資格証明でEXECUTE
権限を持つ必要があります。
ENABLE
は、SYS
スキーマ以外の任意のスキーマで使用できます。
162.6.48 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);
パラメータ
表162-61 END_DETACHED_JOB_RUNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
終了するジョブの名前。連結解除された実行中のジョブである必要があります。 |
|
0(ゼロ)の場合は、ジョブの実行に対して成功のログが記録されます。-1013の場合は、ジョブの実行に対して停止のログが記録されます。他の数値の場合は、ジョブの実行に対してこのエラー番号と失敗のログが記録されます。 |
|
このテキストは、該当するジョブ実行の |
使用上のノート
このプロシージャを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っているユーザーは、連結解除されたすべてのジョブの実行を終了できます。
参照:
連結解除されたジョブの詳細は、『Oracle Database管理者ガイド』を参照してください。
162.6.49 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);
パラメータ
表162-62 EVALUATE_CALENDAR_STRINGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
評価するカレンダ式。この文字列は、「操作上のノート」で説明したカレンダ構文で指定する必要があります。 |
|
反復間隔が有効になる日時。カレンダ文字列に不足している特定の項目を記入するために、使用することもできます。オプションで |
|
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権限はありません。
162.6.50 EVALUATE_RUNNING_CHAINプロシージャ
このプロシージャは、実行中のチェーンのルールを強制的に再評価し、条件を満たしているルールがある場合は適用します。引数として渡すジョブは、チェーンを指定し、実行中である必要があります。ジョブを実行中でない場合は、エラーが発生します。(ジョブは、RUN_JOB
を使用して開始できます。)
チェーンのいずれかのステップ自体でチェーンを実行中の場合、別のEVALUATE_RUNNING_CHAIN
が、ネストされている実行中のチェーンごとに実行されます。
構文
DBMS_SCHEDULER.EVALUATE_RUNNING_CHAIN ( job_name IN VARCHAR2);
パラメータ
表162-63 EVALUATE_RUNNING_CHAINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ルールを再評価対象の実行中の(チェーンを指定している)ジョブの名前。 |
使用上のノート
ジョブに対してEVALUATE_RUNNING_CHAIN
を実行するには、そのジョブに対するALTER権限が必要です(ジョブの所有者であるか、ジョブに対するALTER
権限またはCREATE
ANY
JOB
システム権限を持っているユーザーである必要があります)。
ノート:
チェーンは、次のタイミングで自動的に評価されます。
-
チェーン・ジョブの開始時
-
チェーン・ステップの完了時
-
チェーンのイベント・ステップに関連付けられたイベントの発生時
ほとんどのチェーンの場合は、これで十分です。EVALUATE_RUNNING_CHAIN
は、次の状況でのみ使用してください。
-
ALTER_RUNNING_CHAIN
プロシージャを使用して、実行中のチェーンを手動で操作した場合 -
チェーン・ルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合
これらの場合でも、チェーンの作成時にevaluation_interval
属性を設定しておくと、EVALUATE_RUNNING_CHAIN
が不要になることがあります。
162.6.51 GENERATE_JOB_NAMEファンクション
このファンクションは、ジョブの一意の名前を戻します。
名前は{prefix}N
の形式で示され、N
は順序番号です。接頭辞が指定されていない場合にデフォルトで生成される名前はJOB$_1
、JOB$_2
、JOB$_3
などになります。接頭辞として'SCOTT
'が指定されている場合の名前は、SCOTT1
、SCOTT2
などになります。
構文
DBMS_SCHEDULER.GENERATE_JOB_NAME ( prefix IN VARCHAR2 DEFAULT 'JOB$_') RETURN VARCHAR2;
パラメータ
表162-64 GENERATE_JOB_NAMEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブ名の作成時に使用する接頭辞。 |
使用上のノート
接頭辞が明示的にNULL
に設定された場合、順序番号のみの名前になります。この順序番号のみの名前を使用する場合は、DBMS_SCHEDULER
コールで使用するときに二重引用符で囲む必要があります。接頭辞は18文字以下でなければならず、数字で終わることはできません。
GENERATE_JOB_NAME
ファンクションが同じジョブ名を2回戻すことはありませんが、戻された名前が既存のデータベース・オブジェクトの名前と一致する可能性があることに注意してください。
このファンクションを使用するために必要なScheduler権限は特にありません。
162.6.52 GET_AGENT_INFOファンクション
このファンクションは、選択された属性に応じて、実行中のジョブ数などのエージェント固有のジョブ情報を戻します。
構文
DBMS_SCHEDULER.GET_AGENT_INFO ( agent_name IN VARCHAR2, attribute IN VARCHAR2) RETURN VARCHAR2;
パラメータ
表162-65 GET_AGENT_INFOファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
エージェントが実行される外部接続先の名前 |
|
設定可能な属性値
|
使用上のノート
このファンクションは、schagent
ユーティリティのstatusオプションと同じ情報を戻します。『Oracle Database管理者ガイド』を参照してください。
162.6.53 GET_AGENT_VERSIONファンクション
このファンクションでは、データベースに登録されており、現在実行中のSchedulerエージェントのバージョン文字列が戻されます。GET_AGENT_VERSION
は、エージェントがデータベースに登録されていない場合、またはエージェントが現在実行中でない場合にエラーをスローします。
構文
DBMS_SCHEDULER.GET_AGENT_VERSION ( agent_host IN VARCHAR2) RETURN VARCHAR2;
パラメータ
表162-66 GET_AGENT_VERSIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
エージェントが実行されているホスト名またはポートのいずれかを |
使用上のノート
このファンクションには、CREATE
EXTERNAL
JOB
システム権限が必要です。
162.6.54 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);
パラメータ
表162-67 GET_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトの名前。 |
|
取得する属性。属性値の表は、「SET_ATTRIBUTEプロシージャ」を参照してください。 |
|
属性の既存値。 |
|
ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。 |
使用上のノート
ジョブ・クラスについてGET_ATTRIBUTE
を実行するには、そのクラスのMANAGE
SCHEDULER
権限、またはEXECUTE
権限を持っている必要があります。スケジュール、ウィンドウまたはグループの場合は、権限は必要ありません。前述の権限がない場合は、そのオブジェクトの所有者であるか、そのオブジェクトのALTER
権限またはEXECUTE
権限があるか、またはCREATE ANY JOB
権限を持っている必要があります。
様々なSchedulerオブジェクト・タイプに取得できる属性値の表は、「SET_ATTRIBUTEプロシージャ」を参照してください。
162.6.55 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);
パラメータ
表162-68 GET_FILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オペレーティング・システムから取得するファイルの完全修飾パス名。ファイル名は、大/小文字が区別され、大文字には変換されません。ファイル名が疑問符(' このパラメータの形式が このパラメータの形式が
外部ジョブには、資格証明が関連付けられている必要があります。 |
|
ファイルをリモート・ホストから取得する場合、このパラメータは有効な外部接続先の名前である必要があります。(リモートSchedulerエージェントをデータベースに登録すると、外部接続先が作成されます。外部接続先の名前はビュー
|
|
ファイル・システムへのアクセスに使用する資格証明の名前。 |
|
ファイルの内容の読み取り先変数。 |
|
ファイルの内容の書き込み先ファイル。 |
|
宛先ファイルのパスを指定するディレクトリ・オブジェクト( |
|
将来の使用のために予約済 |
使用上のノート
コール元には、CREATE EXTERNAL JOB
システム権限および資格証明に対するEXECUTE
権限が必要です。
162.6.56 GET_SCHEDULER_ATTRIBUTEプロシージャ
このプロシージャは、Scheduler属性の値を取得します。
構文
DBMS_SCHEDULER.GET_SCHEDULER_ATTRIBUTE ( attribute IN VARCHAR2, value OUT VARCHAR2);
パラメータ
表162-69 GET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
属性の名前 |
|
属性の既存値。 |
使用上のノート
GET_SCHEDULER_ATTRIBUTE
を実行するには、MANAGE
SCHEDULER
権限が必要です。
表162-70に、取得可能なScheduler属性を示します。これらの属性の詳細は、表162-102および『Oracle Database管理者ガイド』の「Schedulerの構成」を参照してください。
表162-70 GET_SCHEDULER_ATTRIBUTEで取得可能なScheduler属性
Scheduler属性 | 説明 |
---|---|
|
現在オープンしているウィンドウの名前。 |
|
Schedulerで、反復間隔およびウィンドウに対して使用されるデフォルトのタイムゾーン。 |
|
ジョブの状態を電子メール通知するための送信者のデフォルト電子メール・アドレス。 |
|
ジョブの状態イベントの電子メール通知を送信するためにSchedulerが使用するSMTPサーバー・アドレス。この属性が |
|
Schedulerで生成され、Schedulerイベント・キューにエンキューされるイベントの有効期間(秒)。 |
|
ジョブおよびウィンドウのログの保存期間(日)。有効値の範囲は、0から1000000です。 |
|
このScheduler属性は使用されません。 |
162.6.57 OPEN_WINDOWプロシージャ
このプロシージャは、スケジュールに関係なく手動でウィンドウをオープンします。
ウィンドウがオープンすると、このウィンドウに関連付けられたリソース・プランがただちに有効になり、指定した継続時間の間、または継続時間を指定していない場合はウィンドウの標準継続時間の間、有効な状態が継続されます。手動でオープンできるのは、使用可能なウィンドウのみです。
構文
DBMS_SCHEDULER.OPEN_WINDOW ( window_name IN VARCHAR2, duration IN INTERVAL DAY TO SECOND, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-71 OPEN_WINDOWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ウィンドウの名前。 |
|
ウィンドウの継続時間。これには日から秒までの時間隔タイプがあります。 |
|
すでにオープンしているウィンドウをオープンできます。ウィンドウは、 たとえば、 Schedulerにより、その時点でオープンしているすべてのウィンドウが自動的にクローズされます(より優先順位の高いウィンドウもクローズされます)。この手動でオープンしたウィンドウの継続時間中は、Schedulerにより他のスケジュール・ウィンドウはオープンされません(より優先順位の高いウィンドウもオープンされません)。 |
使用上のノート
手動によるウィンドウのオープンは、通常のスケジュール・ウィンドウの実行には影響しません。ウィンドウの次のオープン時間は更新されず、通常のオープン・スケジュールによって決定されます。
手動でオープンしたウィンドウをクローズする場合で、クローズするときに他のウィンドウもある場合、どのウィンドウをオープンするかを決定するために、オーバーラップ・ウィンドウのルールが適用されます。
ウィンドウをオープンしたときに実行中のジョブがある場合、リソース・プランが切り替わると、それらのジョブに割り当てられたリソースが変更される可能性があります。
指定したリソース・プランが存在しないか、またはウィンドウによるリソース・プランの切替えが無効になっている(force
オプションが指定されたALTER
SYSTEM
文を使用している場合など)ため、ウィンドウによるリソース・プランの切替えに失敗した場合、その失敗はウィンドウ・ログに記録されます。
ウィンドウをオープンするには、MANAGE
SCHEDULER
権限が必要です。
162.6.58 PURGE_LOGプロシージャ
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);
パラメータ
表162-72 PURGE_LOGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
保持する履歴の日数を指定します。有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。 |
|
ログのタイプを指定します。有効な値は、 |
|
ジョブ・ログからパージするジョブ固有のエントリを指定します。ジョブ名およびジョブ・クラスのカンマ区切りリストも使用できます。 |
使用上のノート
このプロシージャを実行するには、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');
162.6.59 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);
パラメータ
表162-73 PUT_FILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オペレーティング・システムのファイル・システムに保存するファイルの完全修飾パス名。ファイル名は、大/小文字が区別されます。ファイル名が疑問符(' |
|
リモート・ホストに保存する場合、このパラメータは有効な外部接続先の名前である必要があります。(リモートSchedulerエージェントをデータベースに登録すると、外部接続先が作成されます。外部接続先の名前はビュー |
|
宛先ファイル・システムへのアクセスに使用する資格証明の名前。 |
|
ファイルの内容の読み取り元変数。 |
|
ファイルの内容を書き込む元のファイル。 |
|
ソース・ファイルのパスを指定するディレクトリ・オブジェクト( |
|
将来の使用のために予約済 |
使用上のノート
コール元には、CREATE EXTERNAL JOB
システム権限および資格証明に対するEXECUTE
権限が必要です。
162.6.60 REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャ
このプロシージャは、Schedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUE
からユーザーをサブスクライブ解除します。
構文
DBMS_SCHEDULER.REMOVE_EVENT_QUEUE_SUBSCRIBER ( subscriber_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-74 REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
サブスクリプションを削除するOracle Advanced Queuing (AQ)エージェントの名前。 |
使用上のノート
エージェントは、サブスクライブ解除された後に削除されます。エージェントが存在しない場合、またはエージェントがSchedulerイベント・キューに現在サブスクライブされていない場合は、エラーが発生します。
162.6.61 REMOVE_FROM_INCOMPATIBILITYプロシージャ
このプロシージャは、ジョブまたはプログラムを既存の非互換性定義から削除します。
構文
DBMS_SCHEDULER.REMOVE_FROM_INCOMPATIBILITY ( incompatibility_name IN VARCHAR2, object_name IN VARCHAR2);
パラメータ
表162-75 REMOVE_FROM_INCOMPATIBILITYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
非互換性定義の名前。 |
|
1つ以上の(カンマ区切り)プログラムまたはジョブ |
使用上のノート
このプロシージャでは、指定されたオブジェクトが非互換性定義に存在しない場合でも、エラーは発生しません。
参照:
『Oracle Database管理者ガイド』の非互換性定義の使用方法に関する項を参照してください。
162.6.62 REMOVE_GROUP_MEMBERプロシージャ
このプロシージャは、1つ以上のメンバーを既存のグループから削除します。
構文
DBMS_SCHEDULER.REMOVE_GROUP_MEMBER ( group_name IN VARCHAR2, member IN VARCHAR2);
パラメータ
表162-76 REMOVE_GROUP_MEMBERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
グループ名。 |
|
グループから削除するメンバーの名前。削除するメンバーのカンマ区切りリスト。いずれかのメンバーがグループの一部でない場合は、エラーが戻されます。 同じタイプのグループはメンバーに指定することができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。 メンバーが接続先の場合、この接続先で実行されるすべてのジョブ・インスタンスは |
使用上のノート
次のユーザーはグループからメンバーを削除できます。
-
グループ所有者。
-
グループで
ALTER
オブジェクト権限を付与されたユーザー。 -
CREATE ANY JOB
システム権限があるユーザー。
タイプWINDOW
のグループからメンバーを削除するには、MANAGE
SCHEDULER
権限が必要です。
162.6.63 REMOVE_JOB_EMAIL_NOTIFICATIONプロシージャ
このプロシージャは、ジョブの電子メール通知を削除します。すべての電子メール通知を削除することも、特定の受信者または特定のイベントのみの通知を削除することもできます。
構文
DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION ( job_name IN VARCHAR2, recipients IN VARCHAR2 DEFAULT NULL, events IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-77 ADD_JOB_EMAIL_NOTIFICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
電子メール通知を削除するジョブの名前。 |
|
電子メール通知を削除する電子メール・アドレス。電子メール・アドレスのカンマ区切りリスト。 |
|
電子メール通知を削除するジョブの状態イベント。ジョブの状態イベントのカンマ区切りリスト。 |
使用上のノート
複数の受信者および複数のイベントを指定すると、指定したそれぞれのイベントに対する通知は指定したそれぞれ受信者から削除されます。このプロシージャは、指定されても以前に追加されていない受信者またはイベントを無視します。
recipients
がNULL
の場合、既存のすべての受信者で、指定したイベントに対する電子メール通知が削除されます。events
がNULL
の場合、指定した受信者で、すべてのイベントに対する通知が削除されます。recipients
とevents
の両方がNULL
の場合、ジョブですべての電子メール通知が削除されます。
たとえば、recipients
が'jsmith@example.com,rjones@example.com
'でありevents
が'JOB_FAILED,JOB_BROKEN
'である場合、jsmithとrjonesの両方で、JOB_FAILED
イベントとJOB_BROKEN
イベントの両方に対する通知が削除されます。recipients
がNULL
の場合、jsmith、rjonesおよびこれらのイベントに以前に定義された受信者で、JOB_FAILED
イベントとJOB_BROKEN
イベントの両方に対する通知が削除されます。
このプロシージャをコールするには、ジョブ所有者になるか、CREATE
ANY
JOB
システム権限またはジョブに対するALTER
オブジェクト権限を持つユーザーである必要があります。
162.6.64 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);
パラメータ
表162-78 RESET_JOB_ARGUMENT_VALUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するジョブの名前。 |
|
リセットするプログラム引数の位置。 |
|
リセットするプログラム引数の名前。 |
使用上のノート
対応するプログラム引数にデフォルト値がない場合、このジョブは使用禁止になります。他のユーザーに所属するジョブのプログラム引数をリセットする場合は、そのジョブのALTER
権限が必要です。引数は、位置または名前を使用して指定できます。
RESET_JOB_ARGUMENT_VALUE
を使用するには、そのジョブの所有者であるか、またはそのジョブのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、ジョブの引数をリセットできます。
RESET_JOB_ARGUMENT_VALUE
では、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。
162.6.65 RUN_CHAINプロシージャ
このプロシージャは、1回のみ実行するジョブを指定したジョブ名で作成することによって、ただちにチェーンまたはチェーンの一部を実行します。
job_name
が指定されていない場合は、RUN_CHAIN$_
chainname
N
の形式のジョブ名が生成されます(chainname
はチェーン名の最初の8文字、Nは整数です)。
開始ステップのリストが指定されている場合は、それらのステップのみがチェーンの実行開始時に開始されます。リストにないステップ(通常は開始済のステップ)はスキップされ、一時停止します(これ以降のステップが実行されないようにするためです)。
start_steps
がNULL
の場合、通常どおりにチェーンが開始されます(初期評価が行われ、実行を開始するステップが確認されます)。
ステップの初期状態のリストが指定されている場合は、新しく作成されるチェーン・ジョブによって、リストされているすべてのステップが指定の状態に設定されてから、チェーン・ルールが評価され開始ステップが確認されます。(リスト内のステップは開始されません。)
構文
開始ステップのリストを使用してチェーンを実行する場合
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);
パラメータ
表162-79 RUN_CHAINプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
実行するチェーンの名前。 |
|
チェーンを実行するために作成するジョブの名前。 |
|
チェーンの実行開始時に開始するステップのカンマ区切りリスト。 |
|
チェーン・ステップのリスト(各ステップに設定する初期状態(
ここで、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; /
162.6.66 RUN_JOBプロシージャ
このプロシージャは、ジョブをただちに実行します。
ジョブが使用可能である場合は、Schedulerによって自動的に実行されます。スケジュールに従ってジョブを実行する場合は、RUN_JOB
をコールする必要はありません。通常のスケジュール以外でジョブを実行する場合に、RUN_JOB
を使用します。
構文
DBMS_SCHEDULER.RUN_JOB ( job_name IN VARCHAR2, use_current_session IN BOOLEAN DEFAULT TRUE);
パラメータ
表162-80 RUN_JOBプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブ名またはエントリのカンマ区切りリスト(それぞれが既存のジョブの名前であり、オプションでスキーマ名およびドット区切りを接頭辞として付加できます)。 複数の接続先ジョブを指定すると、ジョブはすべての接続先で実行されます。この場合、 |
|
実行されたジョブが、プロシージャの呼出し元である同じセッションで生じるかどうかを指定します。ジョブ所有者のスキーマでは、ジョブは常にジョブ所有者として実行され、資格証明が指定されていない場合、ジョブは資格証明で指定されるユーザーを使用して実行されます。
指定した接続先または接続先グループを持つジョブの場合、またはdetached属性が |
使用上のノート
ジョブが使用可能になっている必要はありません。ジョブが使用禁止になっている場合は、ジョブを実行する前に、次の妥当性チェックが行われます。
-
ジョブが有効なジョブ・クラスを指している。
-
ジョブ所有者が、ジョブ・クラスに対する
EXECUTE
権限を持っている。 -
プログラムまたはチェーンが参照される場合、そのプログラムまたはチェーンが存在する。
-
プログラムまたはチェーンが参照される場合、ジョブ所有者がそのプログラムまたはチェーンの実行権限を持っている。
-
すべての引数値が設定されている(またはデフォルト値を持っている)。
-
外部ジョブの場合、ジョブ所有者が
CREATE EXTERNAL JOB
権限を持っている。
次のタイプのジョブでは、use_current_session
の値としてTRUE
は許可されません。
-
destination_name
属性で接続先または接続先グループを指定するジョブ。 -
チェーンを指すジョブ(チェーン・ジョブ)。
-
連結解除されたプログラム(連結解除されたジョブ)を使用するジョブ。
前述のバグの修正1261887 6.12.11
use_current_session
がTRUE
の場合、RUN_JOB
へのコールはジョブが完了するまでブロックされます。ジョブの実行中に発生したエラーは、RUN_JOB
プロシージャにエラーとして戻されます。
RUN_JOB
をuse_current_session
=TRUE
で使用する場合、ジョブ状態は更新されず、ジョブは*_SCHEDULER_RUNNING_JOBS
ビューに表示されません。
前述のバグの修正19185117 9.15.14
use_current_session
がFALSE
の場合、RUN_JOB
は即座に戻り、ジョブはジョブ・コーディネータ・プロセスに取得されて実行用のジョブ・セカンダリ・スレーブに渡されます。ジョブの結果については、Schedulerのビューおよびログを参照する必要があります。
use_current_session
をTRUE
に設定した場合、複数のユーザー・セッションで同時に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;
162.6.67 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);
パラメータ
表162-81 SET_AGENT_REGISTRATION_PASSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リモート・エージェントがデータベースに正常に登録するために指定する必要があるパスワード。 |
|
|
|
このパスワードで正常に実行できる登録の最大数。このパスワードで正常に実行された登録の数が最大数に達すると、エージェントはデータベースに登録できなくなります。この値を0または負の値に設定することはできません。 |
使用上のノート
悪用を防止するために、このパスワードは、指定した日付を過ぎたり、正常に実行された登録の数が最大数に達すると期限切れになるように設定できます。このプロシージャは、すでに設定されているパスワードを上書きします。このプロシージャを使用するには、MANAGE SCHEDULER
システム権限が必要です。
デフォルトでは、max_uses
はNULL
に設定されており、正常に実行された登録の数に制限がないことを意味します。
エージェントの登録ごとまたは既知のエージェントの登録ごとに、エージェント登録パスワードをリセットすることをお薦めします。また、新しいエージェントを登録しない場合は、このパスワードをNULL
に設定することをお薦めします。
162.6.68 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);
パラメータ
表162-82 SET_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトの名前。 |
|
|
|
属性に設定する新しい値。 |
|
|
表162-83は、Schedulerオブジェクト・タイプおよびオブジェクト・タイプの属性の表をまとめたリストです。
これらのオブジェクト・タイプは、『Oracle Database管理者ガイド』に示されているSchedulerデータ・ディクショナリ・ビューを使用して表示できます。
使用上のノート
オブジェクトが使用可能な場合にオブジェクトを変更するには、Schedulerはまずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。使用可能プロセスでエラーが発生した場合は、オブジェクトは使用可能に再設定されず、エラーが生成されます。
使用禁止の状態だったオブジェクトを変更した場合、そのオブジェクトは変更した後も使用禁止のままです。
ウィンドウ、タイプWINDOW
のグループまたはジョブ・クラスでSET_ATTRIBUTE
を実行するには、MANAGE
SCHEDULER
権限が必要です。この権限のない場合は、変更対象のオブジェクトの所有者であるか、そのオブジェクトのALTER
権限があるか、またはCREATE
ANY
JOB
権限を持っている必要があります。
ジョブ
SET_ATTRIBUTE
コールを行う際に実行中のジョブ・インスタンスがある場合、このインスタンスはこのコールによる影響は受けません。この変更は、今後実行されるジョブに対してのみ影響します。
ジョブの実行中にジョブのスケジュール属性が変更された場合、次のジョブを実行する時間は、新しいスケジュール属性を使用してスケジュールされます。ジョブのスケジュール属性には、schedule_name
、start_date
、end_date
、repeat_interval
などがあります。
ジョブの実行中にジョブのプログラム属性を変更した場合、新しいプログラム属性は、次回ジョブを実行するときから有効になります。ジョブのプログラム属性には、program_name
、job_action
、job_type
およびnumber_of_arguments
などがあります。
ジョブの実行中にジョブの引数値を変更した場合、新しい値は、次回ジョブを実行するときから有効になります。
ジョブに関するALTER
権限をユーザーに付与すると、プログラム属性を除くそのジョブのすべての属性(program_name
、job_type
、job_action
、program_action
およびnumber_of_arguments
)が変更可能になりますが、PL/SQL式を使用して、ジョブのスケジュールを指定することはできません。
データベースによって自動的に作成されたジョブは変更しないことをお薦めします。データベースによって作成されたジョブには、ジョブのビューでTRUE
に設定された列SYSTEM
があります。
プログラム
プログラムを変更して、このプログラムを現在実行中のジョブで使用する場合は、変更前のプログラム定義を使用して実行が続行されます。新しいプログラム定義は、次回ジョブを実行するときから使用されます。
スケジュール
スケジュールを変更した場合、この変更は実行中のジョブおよびこのスケジュールを使用するオープン中のウィンドウには影響しません。この変更は、次回ジョブを実行するときまたはウィンドウをオープンするときからのみ有効になります。
File Watcher
File Watcherが変更されても、ファイル到着イベントにより開始された、現在実行中のイベント・ベースのジョブは影響を受けません。ローカル・システムでは、新しいFile Watcher属性は、File Watcherが次にファイルの到着をチェックするとき(デフォルトでは、10分ごと)に有効になります。リモート・システムでは、新しいFile Watcher属性が有効になるまでに追加の遅延がある場合があります。
ジョブ・クラス
デフォルトのジョブ・クラス以外のすべてのジョブ・クラスを変更できます。ジョブ・クラスを変更するには、MANAGE
SCHEDULER
権限が必要です。
ジョブ・クラスを変更した場合、そのクラスに属する実行中のジョブには影響しません。この変更は、今後実行されるジョブに対してのみ有効です。ジョブ・クラスの名前には、前にSYS
を付ける必要があります。
ウィンドウ
ウィンドウを変更した場合、アクティブ・ウィンドウには影響しません。この変更は、次回ウィンドウをオープンするときからのみ有効になります。
リソース・プランが指定されているウィンドウをオープンしたときに現行のリソース・プランがない場合、リソース・マネージャはその指定された計画でアクティブになります。ウィンドウ名には前にSYS
を付ける必要があります。
ジョブの属性値
表162-84に、ジョブの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_JOB
プロシージャ」および「CREATE_JOBS
プロシージャ」を参照してください。
表162-84 ジョブの属性値
名前 | 説明 |
---|---|
|
|
|
この属性を
ジョブは、 この属性を デフォルトでは、ジョブは |
|
コメント(オプション)。 |
|
feature 25230 この属性は、データベース資格証明を指すように設定されている場合があります。SQL*Plusまたはバックアップ・スクリプト・ジョブの場合、資格証明は、スクリプトを実行する前にデータベースに接続されます。その他のジョブ・タイプの場合は無視されます。ジョブ所有者は、資格証明の実行権限を持っている必要があります。持っていない場合、ジョブは失敗します。
|
|
この属性は、リモート・データベース・ジョブ、リモート外部ジョブ、ローカル外部ジョブまたはファイル到着イベントを処理するイベント・ベース・ジョブに使用する資格証明オブジェクト(資格証明)の名前を指定します。ローカル外部ジョブのみでは、この属性が |
|
この属性は、データベースがOracle Data Guard環境に組み込まれている場合に適用されます。この属性を' ノート: 特定のホスト上のすべてのデータベース・ロールに対してジョブを実行する場合は、そのホストでそのジョブのコピーを2つ作成する必要があります。1つは |
|
*** Oracle Database 11gリリース2では非推奨となっています。かわりに この属性は、リモートの外部ジョブを実行するホストを指定します。接続先ホストのホスト名、またはIPアドレスに設定する必要があります。オプションとして、次の形式でポート番号を続けることができます。 hostname:port デフォルトでは |
|
ジョブのデータベース接続先または外部接続先。リモート・データベース・ジョブおよびリモート外部ジョブのみに使用します。ローカル・データベースで実行されているジョブまたはローカル外部ジョブ(実行可能)では、 この属性の詳細は、表162-28を参照してください。 |
|
ジョブの期限が切れる日時を指定します(この日時を過ぎると、ジョブは実行されなくなります)。
|
|
この属性では2つの値を指定します( |
|
たとえば、ジョブが古いタイムゾーンの午前2時に実行するように設定されていた場合は、新しいタイムゾーンの午前2時で実行されるようになります。 ジョブ
デフォルトのタイムゾーン名は、夏から冬への遷移によっては変更されません。 |
|
Oracle Real Application Clusters環境でのみ有効。ジョブを実行するインスタンスを示します。 |
|
この属性は、Oracle Real Application Clusters(Oracle RAC)環境で稼働するデータベースにのみ使用します。デフォルトでは
Oracle RAC以外の環境ではインスタンスが1つしかないため、この属性は有用ではありません。 |
|
|
|
このジョブに関連付けるクラス。 |
|
この属性は、このジョブと同じクラス内の他のジョブと比較して、このジョブの優先順位を指定します。1つのクラス内の複数のジョブが同時に実行されるようにスケジュールした場合、ジョブ・コーディネータがそのクラスから実行用に選択するジョブの順序はこのジョブの優先度に従って決定されます。値は1から5の範囲で、1はジョブの実行用に1番目に選択されることを表します。 ジョブの作成時にジョブの優先順位が指定されていない場合は、デフォルトの優先順位である3が割り当てられます。 |
|
このジョブのタイプ。有効な値は、' この値を設定する場合は、 |
|
*** Oracle Database 11gリリース2では非推奨となっています。この属性の値をデフォルトの1から変更しないでください。 パラレル実行のジョブの重み。 |
|
この属性は、ログ情報量を指定します。次のオプションから選択可能です。
(デフォルト)このジョブに対してログは実行されません。ただし、ジョブ・クラスのロギング・レベルが優先され、ジョブのログが実行される場合があります。
Schedulerは、失敗したジョブに対してのみ失敗の理由とともにログを記録します。ジョブ・クラスのロギング・レベルの方が高い場合は、高い方のロギング・レベルが優先されます。
Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。ジョブ・クラスのロギング・レベルの方が高い場合は、高い方のロギング・レベルが優先されます。
Schedulerは、ジョブの全実行記録に加えて、このジョブで実行されたすべての操作を記録します。これらの操作には、作成、使用可能化、使用禁止化、変更( |
|
この属性は、ジョブがスケジュール実行に連続何回失敗すると自動的に使用禁止になるかを指定します。ジョブは一度使用禁止になると、その後は実行されず、
|
|
この属性は、ジョブを実行できる最大時間を指定します。データ・タイプは |
|
この属性は、ジョブのスケジュール実行を行う最大連続回数を指定します。
|
|
プログラムがインラインされている場合の引数の数。この値を設定する場合は、 |
|
これは、イベント・ベースのジョブにのみ設定できるブール属性です。
軽量ジョブは、いずれの |
|
このジョブで使用するプログラム・オブジェクトの名前。この名前を設定する場合は、 |
|
この属性は、ジョブの実行中にイベントを発生させる段階をSchedulerに指示します。これはビットベクトルで、次のビットをゼロ個以上セットできます。各ビットに、対応するパッケージ定数があります。
表162-85に、これらのイベント・タイプの詳細を示します。 |
|
次に実行する日時を戻すPL/SQLファンクション、またはカレンダ構文式。この値を設定する場合は、 |
|
この属性は、ジョブが失敗したときに再実行できるかどうかを指定します。デフォルトでは、ジョブは再実行不可能で チェーン・ジョブの場合、この属性を この属性を エラーによる再試行は、通常の実行としてカウントされません。ジョブが成功するか、6回再試行に失敗するまで、実行数または失敗数にはカウントされません。 Schedulerでは、restartable属性を使用して、通常のアプリケーション・エラーだけでなく、データベースに異常が発生した後についても、ジョブを再試行するかどうかを決定します。Schedulerではジョブを最大6回まで再試行します。1回目は1秒間待機し、その後はこの待機時間に対して試行回ごとに10を掛けた時間を待機します。 6回の再試行にすべて失敗すると、実行数および失敗数が1つずつ加算されます。ジョブがすぐに成功するか、または再試行時に成功すると、実行数が1つ加算されます。 Schedulerでは、次の場合にジョブの再試行を停止します。
次にスケジュールされた再試行が、繰返しジョブの次の通常のスケジュール実行時点を過ぎた後は、Schedulerはジョブを再試行しません。 |
|
負荷の大きいシステムでは、ジョブはスケジュールされた時間どおりに開始しないことがあります。この属性を使用すると、ジョブ開始の遅延が指定した間隔よりも大きい場合に、Schedulerがジョブを開始しないように設定できます。この値の範囲は、1分から99日です。たとえば、ジョブの開始が昼の12時に予定されていて、スケジュール限度が60分に設定されている場合、このジョブが午後1時までに実行されなかった場合はこのジョブは実行されません。
|
|
このジョブのスケジュールとして使用する、スケジュール、ウィンドウまたはタイプ |
|
このジョブが開始した元の日時、またはジョブの開始がスケジュールされている将来の日時。この値を設定する場合は、 |
|
この属性は、ジョブのスケジュールがウィンドウまたはウィンドウ・グループである場合のみ使用されます。この属性を デフォルトでは、 ただし、ジョブは続行できますが、ウィンドウをクローズすると通常リソース・プランも変更されるため、ジョブのリソース割当ても変更される可能性があることに注意してください。 |
|
ブール属性です。 |
次のイベント・タイプは、表162-84のraise_events
属性に有効な値です。
表162-85 Schedulerで発生するイベントのタイプ
イベント・タイプ | 説明 |
---|---|
|
イベントではなく、すべてのイベントを簡単に有効にするための定数です。 |
|
ジョブ属性 |
|
チェーンを実行しているジョブの状態は |
|
|
|
Schedulerまたは |
|
エラーまたは異常終了が原因で、ジョブが失敗しました。 |
|
ジョブは、 |
|
ジョブの実行が、失敗、成功または停止しました。 |
|
ジョブのスケジュール限度に達しました。ジョブ開始の遅延時間がジョブ属性 |
|
ジョブが開始されました。 |
|
|
|
ジョブが正常に完了しました。 |
プログラムの属性値
表162-86に、プログラムの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_PROGRAMプロシージャ」を参照してください。
表162-86 プログラムの属性値
名前 | 説明 |
---|---|
|
コメント(オプション)。プログラムの実行内容や、使用目的の詳細を説明します。 |
|
|
|
プログラムによって起動されるストアド・プロシージャなどの実行可能ファイルに必要な引数の数。 |
|
|
|
プログラムのタイプ。プログラム・タイプには' |
スケジュールの属性値
表162-87に、スケジュールの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_SCHEDULEプロシージャ」
を参照してください。
表162-87 スケジュールの属性値
名前 | 説明 |
---|---|
|
コメント(オプション)。 |
|
スケジュールが指定される最終日時。 |
|
この属性では2つの値を指定します( |
|
カレンダ構文を使用して、スケジュールを繰り返す間隔を指定する属性。詳細は、「カレンダ構文」を参照してください。 |
|
カレンダ構文が使用する開始日時または参照日時。 |
File Watcherの属性値
表162-88に、File Watcherの属性値を示します。
表162-88 File Watcherの属性値
パラメータ | 説明 |
---|---|
|
ファイルの到着が想定されるリモート・ホスト名またはIPアドレス。 |
|
ファイルの到着が指定されているディレクトリ。パスの先頭にある単一のワイルドカード'?'は、Oracleホームのパスを示します。たとえば、'?/rdbms/log'は、Oracleホーム・ディレクトリのrdbms/logサブディレクトリを示します。 |
|
検索するファイル名。2つのワイルドカードがファイル名の任意の場所で許可され、'?'は任意の1文字を示し、'*'はゼロ以上の文字を示します。この属性に |
|
有効な資格証明オブジェクトの名前。File Watcherでは、ホスト・オペレーティング・システムに対する認証を行い監視対象ファイルにアクセスするために、資格証明が使用されます。File Watcherの所有者は、資格証明で |
|
File Watcherがファイルを見つけたとみなす前のファイルの最小サイズ(バイト単位)。デフォルトは0です。 |
|
File Watcherがファイルを見つけたとみなす前にファイルが変化せずに留まっている必要がある最小間隔。 |
|
オプションのコメント。 |
ジョブ・クラスの属性値
表162-89に、ジョブ・クラスの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_JOB_CLASSプロシージャ」を参照してください。
表162-89 ジョブ・クラスの属性値
名前 | 説明 |
---|---|
|
クラスについてのコメントを指定します(オプション)。 |
|
この属性は、このクラスのジョブに対するジョブ・ログ・エントリが保持される日数を制御します。これによって、ジョブ・ログが無制限に大きくなることを避けることができます。 有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。 |
|
この属性は、ログ情報量を指定します。有効な値は次のとおりです。
|
|
クラスに関連付けるリソース・コンシューマ・グループ。クラス内のすべてのジョブがこのリソース・コンシューマ・グループの下で実行されます。リソース・コンシューマ・グループおよびデータベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。 |
|
このジョブ・クラス内のジョブが親和性を持つデータベース・サービス。サービスがリソース・コンシューマ・グループにマップされている場合にジョブ・クラスに |
ウィンドウの属性値
表162-90に、ウィンドウの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_WINDOWプロシージャ」を参照してください。
表162-90 ウィンドウの属性値
名前 | 説明 |
---|---|
|
ウィンドウについてのコメント(オプション)。 |
|
ウィンドウの継続時間。 |
|
ウィンドウを最後にオープンする日付。この値を設定する場合は、 |
|
カレンダ構文を使用して、スケジュールを繰り返す間隔を指定する属性。PL/SQL日付ファンクションは使用できません。この値を設定する場合は、 |
|
ウィンドウに関連付けるリソース・プラン。ウィンドウがオープンすると、このリソース・プランに自動的に切り替わります。ウィンドウがクローズすると、元のリソース・プランがリストアされます。リソース・プランが 1つのウィンドウに関連付けられるのは、1つのリソース・プランのみです。 |
|
このウィンドウで使用するスケジュールの名前。この値が設定されている場合、 |
|
このウィンドウのオープンがスケジュールされている次の日時。この値を設定する場合は、 |
|
ウィンドウの優先順位。 |
チェーンの属性値
表162-91に、チェーンの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_CHAINプロシージャ」を参照してください。
表162-91 チェーンの属性値
名前 | 説明 |
---|---|
|
チェーンの目的を説明するコメント(オプション)。 |
|
追加の間隔ではCPUが集中的に使用されるため、この属性は、チェーンのルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合にのみ使用する必要があります。ほとんどのチェーンの場合は、通常の評価タイミングで十分です。 |
|
通常、ルール・セットは渡す必要がありません。ルール・セットおよび関連する空の評価コンテキストは、Schedulerによって自動的に作成されます。その後、ユーザーは、 十分な知識を持つユーザーは、チェーン依存性を表すルール・セットを作成し、ここで渡すことができます。これによって、より柔軟にルールを定義できます。たとえば、条件によって外部変数を参照したり、評価コンテキストによって表を公開することができます。ルール・セットを渡す場合は、それがチェーン・ルール・セットの形式であることを確認する必要があります。(たとえば、すべてのステップは、評価コンテキストに変数として示されている必要があります)。ルール・セットを渡さない場合、ルール・セットは |
データベース接続先の属性値
表162-92に、データベース接続先の属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_DATABASE_DESTINATIONプロシージャ」を参照してください。
表162-92 データベース接続先の属性値
名前 | 説明 |
---|---|
|
リモート・データベースに接続するために使用される外部接続先(エージェント接続先とも呼ばれる)の名前。 有効な外部接続先の名前はビュー |
|
接続先のリモート・データベースを識別するTNS接続記述子、または接続記述子に解決されるtnsnames.oraのネット・サービス名(別名)。 ノート: これは、 |
|
|
|
データベース接続先についてのコメント(オプション)。 |
外部接続先の属性値
表162-93に、外部接続先の属性値を示します。
ノート:
外部接続先は、リモートSchedulerエージェントをローカル・データベースに登録することにより、暗黙的にのみ作成されます。
表162-93 外部接続先の属性値
名前 | 説明 |
---|---|
|
( |
|
( |
|
( |
|
|
|
外部接続先についてのコメント(オプション)。 |
グループの属性値
表162-94に、グループの属性値を示します。
ノート:
この表に示す属性の詳細は、「CREATE_GROUPプロシージャ」を参照してください。
表162-94 グループの属性値
名前 | 説明 |
---|---|
|
( |
|
メンバーのカンマ区切りリスト。既存のメンバーのリストに置き換えます。既存のリストに1つ以上のメンバーを追加するには、 ノート: この属性は、 |
|
|
|
グループについてのコメント(オプション)。 |
|
( |
資格証明の属性値
表162-95に、資格証明の属性値を示します。
ノート:
SET_ATTRIBUTE
およびGET_ATTRIBUTE
プロシージャの資格証明属性値は、Oracle Databaseリリース12cリリース1 (12.1)では推奨されていません。このパッケージでは、下位互換性を維持する目的で、これらの属性値を使用できますが、かわりに DBMS_CREDENTIAL パッケージで提供される拡張機能、具体的にはUPDATE_CREDENTIALプロシージャのattributeパラメータを使用することをお薦めします。
表162-95 資格証明の属性値
名前 | 説明 |
---|---|
|
ホスト・オペレーティング・システムまたはリモートOracle Databaseにログインするためのユーザー名。最大長は64です。 |
|
ユーザー名のパスワード。最大長は128です。 |
|
資格証明の説明。最大長は240です。 |
|
Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。最大長は64です。 |
|
有効な値は |
リソースの属性値
表162-96に、リソースの属性値を示します。
表162-96 リソースの属性値
名前 | 説明 |
---|---|
|
リソースの名前 |
|
ジョブやプログラムが使用する、このリソースのユニット数。 |
|
リソースのステータス。
|
|
制約のレベル: 非互換性について、非互換性メンバーは、 |
|
リソースについて説明するコメントです。 |
162.6.69 SET_ATTRIBUTE_NULLプロシージャ
このプロシージャは、オブジェクトの属性をNULL
に設定します。
設定可能な属性は、変更するオブジェクトによって異なります。このオブジェクトが使用可能な場合は、まずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。オブジェクトを再度使用可能にできない場合、エラーが生成され、オブジェクトのステータスは使用禁止のままです。
構文
DBMS_SCHEDULER.SET_ATTRIBUTE_NULL ( name IN VARCHAR2, attribute IN VARCHAR2);
パラメータ
表162-97 SET_ATTRIBUTE_NULLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトの名前。 |
|
変更する属性。 |
使用上のノート
ウィンドウ、タイプWINDOW
のグループまたはジョブ・クラスでSET_ATTRIBUTE_NULL
を実行するには、MANAGE
SCHEDULER
権限が必要です。この権限のない場合は、変更対象のオブジェクトの所有者であるか、そのオブジェクトのALTER
権限があるか、またはCREATE
ANY
JOB
権限を持っている必要があります。
162.6.70 SET_JOB_ANYDATA_VALUEプロシージャ
このプロシージャは、AnyData
オブジェクト内でカプセル化された、ジョブの関連プログラムの引数に値を設定します。
これは、プログラム引数に設定されたすべてのデフォルト値に優先されます。プログラム引数には、NULL
が有効な引数となります。
引数は、位置または名前によって指定できます。次の場合は、名前による指定のみが可能です。
-
保存されたプログラム・オブジェクトをジョブが指定している場合
-
DEFINE_ANYDATA_ARGUMENTプロシージャで引数に名前が割り当てられた場合
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);
パラメータ
表162-98 SET_JOB_ANYDATA_VALUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するジョブの名前。 |
|
設定するプログラム引数の名前。 |
|
設定するプログラム引数の位置。 |
|
|
使用上のノート
SET_JOB_ANYDATA_VALUE
を使用するには、そのジョブの所有者であるか、またはそのジョブのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、ジョブの引数値を設定できます。
軽量ジョブではAnyData
引数を取ることができないため、SET_JOB_ANYDATA_VALUE
は軽量ジョブには適用されません。
162.6.71 SET_JOB_ARGUMENT_VALUEプロシージャ
このプロシージャは、ジョブの引数に値を設定します。
対応するプログラムまたはストアド・プロシージャ引数に設定されたデフォルト値よりも優先されます。引数は、位置または名前によって指定できます。次の場合は、名前による指定のみが可能です。
-
保存されたプログラム・オブジェクトをジョブが指定している場合
-
DEFINE_PROGRAM_ARGUMENTプロシージャまたはDEFINE_METADATA_ARGUMENTプロシージャで引数に名前が割り当てられた場合
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);
パラメータ
表162-99 SET_JOB_ARGUMENT_VALUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するジョブの名前。 |
|
設定するプログラム引数の名前。 |
|
設定するプログラム引数の位置。 |
|
プログラム引数に設定する新しい値。 |
使用上のノート
SET_JOB_ARGUMENT_VALUE
を使用するには、そのジョブの所有者であるか、またはそのジョブのALTER
権限を持っている必要があります。CREATE
ANY
JOB
権限を持っている場合も、ジョブの引数値を設定できます。
SET_JOB_ARGUMENT_VALUE
では、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。
SET_JOB_ARGUMENT_VALUE
は軽量ジョブの引数の設定に使用できます。ただし、その引数がVARCHAR2
タイプの場合のみです。
162.6.72 SET_JOB_ATTRIBUTESプロシージャ
このプロシージャは、ジョブの属性を変更します。
構文
DBMS_SCHEDULER.SET_JOB_ATTRIBUTES ( jobattr_array IN JOBATTR_ARRAY, commit_semantics IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');
パラメータ
表162-100 SET_JOB_ATTRIBUTESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ジョブ属性変更の配列。 |
|
コミット・セマンティクス。次のタイプがサポートされています。
|
使用上のノート
使用可能になっているジョブに対してSET_ATTRIBUTE
をコールすると、ジョブが使用禁止となり、属性値が変更され、ジョブが再度使用可能になります。SET_JOB_ATTRIBUTES
は、1つのトランザクションのコンテキストで属性値を変更します。
162.6.73 SET_RESOURCE_CONSTRAINTプロシージャ
このプロシージャを使用すると、ユーザーはジョブによって使用されるリソースを指定できます。
構文
DBMS_SCHEDULER.SET_RESOURCE_CONSTRAINT ( object_name IN VARCHAR2, resource_name IN VARCHAR2, units IN NUMBER DEFAULT 1);
パラメータ
表162-101 SET_RESOURCE_CONSTRAINTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プログラムやジョブの名前、またはこれらのオブジェクトのカンマ区切りリスト。 |
|
リソース名。 |
|
ジョブやプログラムが使用する、このリソースのユニット数。 |
使用上のノート
object_name
には、プログラムまたはジョブの名前、あるいは名前のカンマ区切りリストを指定できます。これにより、これらのプログラムまたはジョブの名前付きリソースに対する制約が作成されます。
units
では、プログラムまたはジョブが使用できる、リソースのユニット数を指定します。units
が0
に設定された場合、プログラムやジョブはこのリソースを使用しなくなり、結果として生じる制約が削除されます。以前に制約がなかったリソースのunits
を0
に設定すると、エラーが発生します。
同一のリソースに複数の制約を定義する場合、オブジェクト・タイプが一致している必要があります。リソースに適用される1つ以上の既存の制約がジョブに基づいており、プログラムに基づく新しい制約が同一のリソースに追加される場合(またはその逆の場合)、エラーが発生します。
162.6.74 SET_SCHEDULER_ATTRIBUTEプロシージャ
このプロシージャは、Scheduler属性の値を設定します。これはすぐに有効になりますが、影響を受ける属性によっては、結果として生じる変更をすぐに確認できない場合があります。
SET_SCHEDULER_ATTRIBUTEプロシージャの短い属性の説明は、表162-102
に記載されています。詳細は、『Oracle Database管理者ガイド』のSchedulerのプリファレンスの設定に関する項を参照してください。
構文
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE ( attribute IN VARCHAR2, value IN VARCHAR2);
パラメータ
表162-102 SET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Scheduler属性の名前。使用可能な値は次のとおりです。
|
|
属性の新しい値。 |
使用上のノート
SET_SCHEDULER_ATTRIBUTE
を実行するには、MANAGE
SCHEDULER
権限が必要です。
参照:
Scheduler属性の詳細は、『Oracle Database管理者ガイド』を参照してください。
162.6.75 STOP_JOBプロシージャ
このプロシージャは、現在実行中のジョブ、またはジョブ・クラス内のすべてのジョブを停止します。
ジョブの停止後、1回かぎりのジョブのSTATEはSTOPPED
に設定され、繰返しジョブのSTATEは、ジョブの次の実行がスケジュールされているかどうかによって、SCHEDULED
またはCOMPLETED
に設定されます。
チェーンを指定しているジョブが停止すると、実行中のチェーンの実行中のすべてのステップが停止します。
ジョブに複数の接続先がある場合、データベースはすべての接続先でジョブを停止しようとします。
外部ジョブの場合、STOP_JOB
はジョブ・アクションによって直接起動された外部プロセスのみを停止します。外部ジョブの子プロセスは停止しません。
Oracle Real Application Clusters環境のインメモリー・フル・ジョブの場合、STOP_JOB
はジョブ定義のinstance_id
属性を使用して、インメモリー・フル・ジョブを停止するインスタンス(属性をNULLのままにした場合はすべてのインスタンス)を決定します。(インメモリー・フル・ジョブはメモリー内キャッシュに保存されるため、そのジョブを現在キャッシュしているインスタンスに限定されます。そのため、同じjob_name
を異なるインスタンスの異なるジョブに使用できる場合があります。)
構文
DBMS_SCHEDULER.STOP_JOB ( job_name IN VARCHAR2 force IN BOOLEAN DEFAULT FALSE commit_semantics IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');
パラメータ
表162-103 STOP_JOBプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
停止するジョブの名前。ジョブのカンマ区切りリストを使用でき、各エントリは次のいずれかになります。
ジョブ・クラスを指定すると、このジョブ・クラスに所属するすべてのジョブは停止されます。接続先グループを |
|
|
|
コミット・セマンティクス。次の2つのタイプがサポートされています。
|
使用上のノート
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;