• ベストアンサー

PL/SQLで作成したストアドの起動方法について(バッチ処理)

業務システムにおいて、夜間バッチ用のストアドプログラム(PL/SQL)を作成するのですが、そもそもバッチの起動方法等が理解できていません。 PL/SQL関連の書籍はいくつか読み、プログラム自体は理解できるのですが、具体的にどのような仕組みで起動をかけるかがわかりません。 (スケジューラで起動させて、後に照会画面で実施結果を確認できるとは聞きました) もし、バッチ処理に関して詳しく解説された書籍をご存知であれば、ご紹介いただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • omomuz
  • ベストアンサー率40% (4/10)
回答No.2

直接の回答(書籍)は存じません、すみません。 PL/SQL起動は、大きく分けて (a)Oracle内蔵のジョブスケジューラで起動する (b)外部プログラムからPL/SQLを起動する のどちらかになるかと思います。一般には(b)が多いです。 (a)については、PL/SQLの組み込みパッケージ DBMS_JOB や DBMS_SCHEDULER を使用してジョブを組むことになるかと思います。 組み込みなので環境的にはお手軽ですが、あまりきめ細かなことはできません。 Oracleマニュアル「データベース管理者ガイド」スケジューラの項や PL/SQLの組み込みパッケージの項をご覧ください。 Oracle Enterprise Managerを使えばGUIで管理できるそうです。 (b)は、簡単にはcronなどのスケジューラでPL/SQLを定期実行するのが多いのでは。呼び出し方法は #1さんの方法ですね。 これは「ただ起動するだけ」ですから、ジョブ照会画面的な機能は自作する場合も多いように思います。 複数バッチの連携などきめ細かい管理を求められるのでしたら、規模/予算/求められる信頼性 によっては別途運用管理サーバを立てて、JP1(日立)などの運用管理アプリケーションを導入することになろうかと思います。 なお、これらを入手するのであれば、マニュアル等でバッチ処理そのものの情報も読めるのではないかと。 蛇足ですが、「実施結果を確認できる」の粒度はプログラムに依存しますので、設計時から考慮に入れる必要があります。バッチ起動OK/NGぐらいなら外部プログラムでも確認できますが、その他(正常終了/異常終了、業務エラー、どこでこけたのか など詳細情報)はPL/SQL側で明示的にメッセージを残す必要があります。

hopefulman
質問者

お礼

丁寧なご回答ありがとうございます。 やはりそのシステムの規模や要望によって方法も様々なのですね。 今回開発に携わるシステムの規模は大きい方ですので、JP1ではないと思いますが、何らかの運用管理ツールを使う予定です。 そういう意味で、バッチのハンドリングはツールで行うことになりそうです。 (ツールのマニュアルを入手できれば読んでみます。)

その他の回答 (1)

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

1.バッチファイルを作成します。   内容は、sqlplus ユーザー名/パスワード @test.sql 2.そのバッチファイルをスケジューラに登録します。

参考URL:
http://www.jurapun.com/Knowledge/Oracle10g/SQLPlus.html
hopefulman
質問者

お礼

お返事が遅れて申し訳ありません。 記載していただきましたURLを参考にさせていただいます。 ありがとうございます。

関連するQ&A

  • PL/SQLからPL/SQLのコール

    すみませんが、教えて下さい PL/SQLのソースからPL/SQLのソースをCALLする事は可能なのでしょうか? (プロシジャ・ファンクション等のストアドプログラムを使用せず) 知っている方がいましたら、回答をお願いしますm(_ _)m

  • oracle pl/sqlの処理速度について

    pl/sqlで作成したプログラムはc言語で作成したものより処理が遅いと聞きました。 処理の前提として、  ・処理件数は数十万件から数百万件のバッチ処理  ・データは全てテーブルに格納してある  ・処理が複雑なため、プロシジャからプロシジャを呼び出す必要がある  ・サーバの能力はそれなりにある です。 c言語の経験がないので、検証することが出来ません。 処理の内容にもよるとは思いますが、一般的な回答で構いませんので教えてください。

  • win2008r2 バッチファイル起動しない

    バッチファイルの実行に関して、質問させてください。 現在作成したバッチファイルをWindows7上でうまく動きます(コマンドプロプトン、ダブルクリック、スケジューラ)が、windows 2008R2(AD機能)で起動しないです。コマンドプロプトンで【test.bat】Enterキー押すと”操作可能なプログラムまたはバッチ ファイルとして認識されていません”というメッセージが出ます。環境変数のPATHTEXTに".BAT"の記述はあります。スケジューラで実行されるみたいですが、リターンコードは1で、バッチファイルの内容は実行されていないようです。ダブルクリックしても、ほしい結果がでません。結構困っています。解決方法があれば、ご教授ください。

  • SQLサーバ2000へのインポート方法とその他

    こんにちは。 SQLサーバはまったくよく分からないですが、いくつか教えていただく助かります。 業務では下記のように、メインフレームから生データ(CSVファイル)をWindows2000へFTPし、SQLサーバへインポートし、その後ストアドプロシージャを実行します。 条件としては、メインフレームから不定期にFTPがおこなわれ、つづいてFTPが終了したことを通知するためのREXEC処理がコールされます。 メインフレーム ↓ Windows2000 ↓ SQLサーバ この時の具体的なテクニックを教えてほしいのですが、経験のない私のイメージはVBなどでADOを使ってファイルをインポートし、SQLサーバ内のストアドを実行するという感じです。 ↓ (1)メインフレームからファイルFTP(PUT) (2)メインフレームからVBで作成したモジュールを起動。 (3)VBはCSVファイルをDBにインポート (4)そしてVBからストアドプロシージャを実行(これは可能?) 現在はどのような仕組やツールが一般的なのでしょうか? 詳細に教えていただけると助かります。 よろしくお願いします。

  • ストアドプロシージャに渡された引数の参照方法

    コンパイル済のVB6のプログラムからストアドプロシージャをCALLして いるのですが、実際にどのような値を渡しているのかを調べなければなりません。 VB6の開発環境があれば容易いのですが、現在実行環境しかない為ORACLE側での 調査が必要です。 全てのプロシージャに出力ロジックを追加すれば良いのですが、 数が多すぎて対応に困っております。 ツールや方法論等につきまして、どなたかご存知でしたらご教授頂けると助かります。 環境は以下の通りです。 Client: WindowsXP SP3 VB6で作成したEXE Server: Linux(Red hat linux) ORACLE 11g Standard PL/SQLで作成したStoredProcedure ちなみに、JdeveloperやOracle SQL Developerも調べて見たのですが、 お恥ずかしながら、今一理解が出来ませんでした。

  • Oracleストアドプロシージャについて

    現在、夜間バッチで海外FTPサーバーからCSVファイルをDWHサーバーに格納後、 同DWHサーバー内のOracleテーブルにInsertするという処理の開発をしているのですが、 CSVの取得はDOSバッチとTeratermのマクロで取得しようと思っています。 しかし、CSVファイルのInsert処理はPL/SQLで開発を行おうと考えています。 それは、Insert後にそのテーブルと別サーバーのOracleテーブルを使用してデータの加工を行い、 その結果をDWHテーブルにロードしなければいけないからです。 ちなみに、今まではVBしか触ったことしかなくPL/SQLやバッチの作成はは初めてです。 そこで質問なのですが、PL/SQLで他のサーバーのテーブルとリレーションは出来るのでしょうか? (VBAでは1つのサーバーにしか同時接続できなかったため) またその場合のフローチャートのイメージが出来ないのですが、箇条書き程度で結構ですので教えていただけないでしょうか?(どこでストアドプロシージャに処理が移行するのかなど....) 長い文章でわかりにくいと思いますが、識者の方がいれば教えていただければ幸いです。

  • PLSQL キーボード入力値を引数で渡す方法

    OracleのPL/SQLで promptコマンドを使用して キーボードから日付の入力を受け付けるプログラムがあり、 SQLplusから実行しています。 このプログラムをキーボードからではなく バッチやスクリプトから日付を指定して実行する方法がわかりません。 わかる方がいれば教えてください。 PL/SQLのプログラム自体は変更をしないという要件の為 バッチやスクリプトから引数として渡せないか検討しています。

  • SQL Serverについて

    WIN NTのSQL Server 6.5を使っているのですが ストアドプロシージャの中からDOSのコマンドを 実行する事はできるのでしょうか、もしできるのであれば やり方を教えてください。 ストアドプロシージャの中からDOS バッチを起動する 方法でもかまいません。 お願いします。

  • ネットワーク経由でサーバのサービスを再起動するバッチを作成したい

    24時間稼動している業務システムがあります。障害が発生して業務が止まったときに、あるWindowsのサービスを再起動すると原因に関わらず業務が継続できることが分かっています。具体的にいうと、サーバAに管理者権限でログインし、[コントロールパネル]⇒[管理ツール]⇒[サービス]から、NetLogonというサービスを手動で再起動します。しかし、この手順を行うには、管理者権限のアカウントでログインする必要があります。また、できるだけ自動化し、誰でも実施できるようにするため、そのアカウントIDとパスワードを記載してネットワーク経由で誰でも実行できるバッチを作成しようとしています。そこで質問です。 net stop "NetLogon" net start "NetLogon" を入れればいいのは分かりますが、この前に、サーバAにログインするコマンドを記載しないといけませんが、どのように書けばいいのでしょうか? net use \\サーバAのコンピュータ名 ID/PASS みたいな感じだということは分かっています・・・

  • 「環境変数を作成する方法」がどうしても分かりません。教えてください

    お世話になっております。 以前から環境変数について勉強しているのですが、文字で理解はできても実感がわきません。 もっと言えば、「分かりやすい言葉で噛み砕けていません」そして「何をすれば設定を変えられるのか?という「実感レベル」に落とし込めていません」。 ちゃんと理解できていないので、的を射ていない質問かもしれませんが、教えていただけないでしょうか? (私の環境変数に対する認識は→「プログラムを動作させるためのプロセスを定義するための仕組み」と理解しておりますが、間違っていたら申し訳ございませんがご指摘ください) 前は、ログオンした時間がわかるバッチファイルを作ったのですが、それ以上の情報を引き出すには環境変数をいじらなければならないようです。 今回で言えば、ログオンした時にユーザ名も取得できる方法を知りたいと思っております。 ヒントをいただければ幸いです。 ※「~を使う」だけではなく、既存の環境変数など例に用いて仕組み(メカニズム)も解説いただけるとわがままではありますが、非常に嬉しいです。 贅沢申して恐れ入りますが、宜しくお願い致します。

専門家に質問してみよう