• ベストアンサー

年に一度の実行(DBMS_JOB)

PBG3の回答

  • ベストアンサー
  • PBG3
  • ベストアンサー率77% (7/9)
回答No.1

next_dateには初回にJOBを実行する時刻をdate型で指定します。 intervalには次回JOBを実行する時刻を計算する式を文字列で指定します。 この式はJOBの実行時点で計算されます。 以下の内容にすると初回は2003年1月1日0時0分で 毎年1月1日0時0分に実行するJOBを作成できます。 next_dateの指定:  to_date('20030101','yyyymmdd') intervalの指定:  'trunc(sysdate+366,''YEAR'')'  (JOB実行後の時刻に366日加えて年単位で切り捨てる=次年の1月1日)

sunnys
質問者

お礼

こんにちは。お礼が遅くなってしまって申し訳ありません。 なるほど、next_dateは初回にJOBを実行する日付を指定するんですね。 おかげさまでなんとか設定には成功しました。 ただ、違う環境で設定するとうまく設定できないんです・・。 自分でもまた調べて、もしわからないようならまた質問させていただくかもしれません。 そのときはまたよろしくお願いいたします。 大変勉強になりました。どうもありがとうございました。

関連するQ&A

  • DBMS_JOBのintervalの指定方法

    オラクル9iでDBMS_JOBを作成しています。 「毎日15時57分」にJOBを実行させたいのですが、intervalの指定の仕方がわかりません。 「毎日15時00分」は'TRUNC(SYSDATE)+1+(15/24)'とマニュアルにはのっているのですが・・・。 わかる方いらしたら教えて下さい。宜しくお願いします。

  • .bat(バッチ)から.batを実行したいのですがエラーになってしまいます。

    <やりたい事> (1)メニュー的なバッチからOracleインストール後 (2)OracleのDB作成sqlを実行する.bat(バッチ)を実行する。 <現状> メニュー的バッチから(2)をCALLで呼びだすと「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」とコンソールに表示されてしまいます。 コマンドの拡張子を実行できる設定になっている事は確認できています。 また、コマンドプロンプトから(2)のバッチを実行すると実行できました。 色々と調べて見たのですが原因、解決策が見つかりません。 どうか皆様のお力をお借りできればと思います。 宜しくお願いします。 ↓以下バッチの詳細 <(1)メニュー的なバッチ> ECHO OFF :Start ECHO. ECHO 1. ・・・ 運用APLデータベース設定 %P5% ECHO 99. ・・・ 終了 SET Process= SET Choice= SET /p Choice=Type 選択して下さい。 IF '%Choice%'=='1' GOTO MakeDB :MakeDB REM 5. 運用APLデータベース設定選択時 SET Process=運用APLデータベース設定 ECHO *** "%Process%"開始 *** REM 文字変換バッチ実行 CALL C:\TEMP\aaaa.bat IF ERRORLEVEL 1 GOTO ExceptionError :InputError REM 入力エラー時 ECHO 不正なパラメータが入力されました。 GOTO Start :ExceptionError REM 例外エラー時 ECHO ******** 失敗しました。 ******** GOTO Start :End REM バッチを終了する。 EXIT <(2)OracleのDB作成sqlを実行する.bat(バッチ)> SET ORACLE_INSTALL_DIR=C:\oraclexe SET ORACLE_BIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\BIN SET ADMIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\admin\XE SET ORADATA_DIR=%ORACLE_INSTALL_DIR%\oradata\XE SET DBS_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\dbs SET USERNAME=aaa SET PASSWORD=bbb REM // LOGファイル名用に日付の取得 // FOR /F "tokens=1,2,3 delims=/, " %%i IN ('date /t') DO SET SYSDATE=%%i%%j%%k REM // 「Win31J」に文字変換 // ECHO 文字変換開始 %date% %time% >> "C:\install%SYSDATE%.log" "%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\Drop.sql >> "C:\install%SYSDATE%.log" IF ERRORLEVEL 1 GOTO ExceptionError ECHO DBユーザー作成開始 %date% %time% >> "C:\install%SYSDATE%.log" "%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\CreateDB.sql >> "C:\install%SYSDATE%.log" IF ERRORLEVEL 1 GOTO ExceptionError

  • windows NT ATコマンドの件

    いつもお世話になります。 本日はNT上でのATコマンドにつきまして 質問がございます。 現在3つのジョブが登録されておりますが、 この状態からジョブを追加、あるいは コマンド「AT」にてジョブを確認しようと するとジョブが半永久的にループしてしまいます。 どなたかこのような現象のご経験がある方、 また内容についてご存知の方がいらっしゃいましたら ご指導の程、お願い致します

  • WHERE句でのデータ型について

    お願い致します。 ORACLEのWHERE句に対する疑問点ですが、 カレンダを管理するテーブル(カレンダマスタ)において、条件を指定してデータをSELECTする時にWHERE句に記入するデータ型についてご指導お願いします。 <詳細> 目的としてカレンダマスタよりSYSDATEの年月の休みの日を除く、稼動日数(COUNT)を求めるのが、目的です。 自分で作成した、SQLでは目的を果たしているのですが、WHERE句にTO_CHARを使用し、抽出項目(年月日-DATE型)を指定しているのですが、条件を指定する時は、TO_CHARで指定しても問題は無いのでしょうか? <SQL> SELECT COUNT(TO_NUMBER(休みFLG)) AS 稼動日 FROM カレンダマスタ WHERE 年月日 BETWEEN (TO_DATE(LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1,'YYYY/MM/DD')) AND (TO_CHAR(LAST_DAY(SYSDATE),'YYYY/MM/DD')) AND 休みFLG='0' <補足> 休みFLG='0'は稼動日

  • postgresのカレンダーについて

    postgresで、ある日付から前日までのカレンダーをテーブル作成することなく、用意したいのですが、良い方法がわかりません。 どのようにすればよいのでしょうか? ■イメージ 2014/9/1から前日まで (2014/10/20に実行した場合) 2014/9/1 2014/9/2 2014/9/3 ・ ・ ・ 2014/10/19 オラクルでは以下のように指定できたのですが、postgresではどのように指定すればよいのかわかりませんでした。 select to_date ('20140901', 'YYYYMMDD') + ROWNUM - 1 date1 from ALL_CATALOG where to_date ('201400901', 'YYYYMMDD') + ROWNUM - 1 <= sysdate - 1 order by 1

  • テーブルの行を増やしたい・・・。

    テーブルの行を増やし、 データを一年文作成したいのですが・・・。 CREATE TABLE CALENDAR_TBL( YYYYMMDD DATE NOT NULL, DayData NUMBER(3) NULL CONSTRAINT CALENDAR_TBL_PKEY PRIMARY KEY(YYYYMMDD)); このテーブルに、2005年のデータ365レコードを挿入したいのですが、 1つのINSERT文(SQL)で、できますでしょうか? (※PL/SQLは除きます。) ※不可能であれば、SELECT文(下記のように)を一年分用意してUNIONで作成するのですが、 これ以外に簡単にできないでしょうか? INSERT INTO CALENDAR_TBL ( (SELECT SYSDATE + 000, DayData FROM CALENDAR_TBL) UNION (SELECT SYSDATE + 001, DayData FROM CALENDAR_TBL) UNION (SELECT SYSDATE + 002, DayData FROM CALENDAR_TBL) UNION (SELECT SYSDATE + 003, DayData FROM CALENDAR_TBL) ・・・(省略)・・・ UNION (SELECT SYSDATE + 365, DayData FROM CALENDAR_TBL) )

  • Oracle8のアンインストール

    次のような環境でOracle8をアンインストールしようとしましたら、 エラーになり出来ませんでした。 エラーの理由と対処方法などわかる方がいらっしゃいましたら 教えて下さい。 宜しくお願いします。 ============================================================ 【使用環境】 ・OS:NT workstation 4.0(SP6) ・Oracle:oracle8 personal edition for win95/NT R8.0.4 ・oracle上では特にユーザが作成したdbは残っていません。 (というより、インストールされただけで使用されていません) 【エラー】 ・スタート - プログラム(p)- oracle for windowsNT から Oracle Installer を起動すると、設定の準備中のウィンドウ 表示中に以下のエラーが表示されます。 タイトル「Oracle Installer:ORAINST.EXE-アプリケーションエラー」 「”0x7801425c”の命令が ”0x00000010”のメモリを参照しました。 メモリが ”read”になることはできませんでした。 アプリケーションを終了するには[OK]をクリックしてください。 アプリケーションをデバックするには[キャンセル]をクリック。」 ※キャンセルしてもデバッカーは起動しません。   また、CD-ROMからインストーラーを起動するとインストール先を 指定するところまで正常ですが、インストールパターン(カスタム等) を指定する画面から進めると、同じエラーになります。 ============================================================ パソコンを別のユーザに譲るため、どうしてもアンインストール しなければなりません。ご協力宜しくお願いします。

  • VC++ 2008 Form プログラミング

    VC++ 2008 Form プログラミングにおいて、Form を新規作成するときに32bitプログラミングと 64bitプログラミングを指定して作り分ける事はできますか。 分かる方がいらっしゃいましたらご指導の程よろしくお願い致します。

  • PL/SQLでエラー

    PL/SQLの使用方法を検討しており、下記のようにサンプルを作成しました。 //1. 宣言部 create or replace package Pac is procedure Pro1(p1 in varchar2); end; / パッケージが作成されました //2. 本体 create or replace package body Pac is procedure Pro1(p1 in varchar2) is tempdate DATE; begin select to_char(sysdate, 'yyyy/mm/dd') INTO tempdate from dual; DBMS_OUTPUT.PUT_LINE('引数は' || p1 || 'です。'); DBMS_OUTPUT.PUT_LINE('日付は' || tempdate || 'です。'); end; end; / パッケージ本体が作成されました //3. 実行 execute Pac.Pro1('a'); // エラー内容 行1でエラーが発生しました。: ORA-00900: invalid SQL statement SQLPlusより、上記の[1. 宣言部]でパッケージを作成し、[2. 本体]で本体部分を作成しました。 その後、[3. 実行]を実施しましたが、 エラーが出力されて実行されません。 何がいけないのかお気づきの点がございましたら、 よろしくお願いします。

  • Excelマクロで年度別にフォルダ作成したい。

     Excel2003です。  日々の売り上げ集計ファイルをボタン一つで保存していくマクロを作っています。 Application.DisplayAlerts = False If Dir(ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計", vbDirectory) = "" Then MkDir Path:=ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計" ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計\" & Format(Date, "yymmdd") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Else ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy") & "年集計\" & Format(Date, "yymmdd") & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False  とりあえず指定のフォルダに「yymmdd.xls」という名前をつけて保存、もしフォルダがなければ作るというところまで作れました。そこで、今度は「**年度」というフォルダに自動的に保存され、もし「**年度」というフォルダがなければ作るようにしたいのです。上に上げたマクロでは「**年」というフォルダを作ってその中に保存というところまでは出来ているのですが……。とにかく年度で分ける場合の処理がよくわかりません。  回答よろしくお願いします。