無料の「Oracle Database XE」で高速バッチ処理:活用のポイント

兒玉敏幸(101)
2008-08-15 16:09:01
  • このエントリーをはてなブックマークに追加

1-1. ユーティリティの活用

1-1-1. SQL*Plusの利用

 Oracleデータベースを処理エンジンとしてバッチ処理を実装しようと考える場合、PL/SQLでストアドプログラムを作成しようと考える方が多いかと思います。しかし、Oracleデータベースを処理エンジンとして利用する場合は、SQL*Plusを利用し、そこからSQLやPL/SQLを発行するのが最も有効な手段です。

 SQL*PlusはOracleデータベースに付属するコマンドラインのユーティリティですが、実装が容易であり、バッチ処理の保守性などを考えると、データベース内部で動作するプログラムより簡易でデバッグも簡単なのです。

 もう少し具体的に説明しましょう。

 バッチ処理はバックグラウンドで実行されるため、実行している状況などをユーザーが目にすることはありません。そのため、エラー発生時には実行ログが非常に重要になります。

 問題を解決するためには当然、エラーの原因や発生個所を把握できるようなログ出力がなくてはなりません。要求されているログを用意するためには、ストアドプログラムで実装されている場合はログ出力に工夫が必要ですが、単にSQL*Plusで実行しているロジックであれば、SQL*PlusのSPOOL機能で簡単にログを出力できます。

 バッチ処理においてはストアドプログラムで大半の処理を実装してもメリットが少ないため、一部特殊なビジネスロジックなどを除き、バッチ処理を構成するコンポーネントはSQL*Plusから実行されるSQLやPL/SQLとして用意し、SQL*Plusを活用することを検討しましょう。

 SQL*Plusは、バッチ処理を実装するために用意したコンポーネントを実行するツールとして最適ですので、是非利用してみてください。

1-1-2. SQL*Loaderの利用

 バッチ処理ではテキストファイルが入出力データとして使われることも多いですが、これらのデータをデータベースで処理するためには、まずデータベースへ取り込む必要があります。

 データを取り込むツールを自作することもできますし、ETLツールなどもデータベースにロードする機能を備えていますが、コスト的にも性能的にもOracle純正のユーティリティであるSQL*Loaderの方が優れているので、使わない手は無いです。

 ただし、SQL*Loaderを使ってデータをロードする場合は、前後の処理と同一トランザクションとすることはできませんので、リカバリーを考慮すると後述する外部表がさらにお勧めです。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]