• 締切済み

DBサーバとバッチサーバ

DBサーバの扱いについて質問させてください。 DBサーバは専用とすべきで、バッチサーバ等との兼用は良くないと聞くのですが、 それはどういった理由があるのでしょうか? DBはORACLEです。 よろしくお願いします。

みんなの回答

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.4

>バッチ処理がちょん切れるというのは、実行中なのに異常終了するということですか? そう云う事になりますね。フリーズとか。

aki_aki_1977
質問者

お礼

IDii24さん ご回答ありがとうございます。 理解できました。 よろしくお願いします。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.3

>DB処理の遅延に繋がったりという事は考えられますか? つまりそういうことですね。DBを優先させるならあらかじめDBのメモリを確保しておく。でも残りをバッチとOSに割り当てることを考えれば、バッチは常に起動しているわけではないですから、バッチのメモリをあらかじめ確保するようなことは返って無駄になります。 サーバーはDBだけで動かしたいという理由になります。 バッチ処理の遅延どころか最悪は処理がちょん切れますよ。

aki_aki_1977
質問者

お礼

IDii24さん ご回答ありがとうございます。 バッチ処理がちょん切れるというのは、実行中なのに異常終了するということですか? たびたびすみませんが、よろしくお願いします。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

通常バッチはJAVAなどによる外部プログラムを、バッチスケジューラーソフトで管理します。SQLServerなどはストアドプロシージャーをエージェント管理してもある程度のことは出来てしまいますが、OracleなどUnix系の大きなシステムではスケジューラーを導入している会社が殆どでしょう。 このバッチスケジューラーはバッチを監視していますので、実行ログをエージェントで採取しています。エラーについても何処で問題が起きたかをチェックし、回避するようにバッチが書かれることが多いです。 このような複雑なプロセスで監視しているわけですし、ここがバッチの要なので、最悪でも状況を知れるとこまでは処理してもらわないとこまるのですが、データーベースの処理でサーバーが一杯一杯になれば、大事なログ採取、状況把握部分まで動かなくなる可能性があります。ロールバックはいわばバッチを戻しているわけですからフル稼働しますよね。REDOログ領域も書き込む処理ではなく読み取りになります。その為にバッチスケジューラーに伝えるべき情報がうまく伝わらず制御不能に陥ることもあります。 つまり正確な原因確認が出来なくなる恐れがあると云う事です。 メモリとはSGAとPGAの合計です。今のOracleはそれぞれの割合は自動管理されていると思いますが全体が使うメモリはMEMORY_TARGETで指定してやればよいと思われます。 つまりサーバーの中でDBが利用するメモリの量を確保することになります。それによって他のアプリケーションがDBの処理を邪魔しないようになります。SQLServerでも同じことが出来ます。 これをうまく設定すれば、他のアプリと共有することも出来るとは思います。ただ間違えれば帰ってパフォーマンスが悪くなるので注意です。Oracleは良く理解してパラメータをいじらないとさし引きで悪くなる場合もあるので注意です。 ちなみに全データそのものを常にメモリに読み込んでおくインメモリーDBとは違います。

aki_aki_1977
質問者

お礼

IDii24さん ご回答ありがとうございます。 【バッチがうまく制御できるか不安】について、理解できました。 また、追加で質問させてください。 >DBサーバーもバッチもメモリを多く使用しますし、どちらがネックになっているか判明できなくなります。 上記の点について、どちらがネックになっているかの部分なのですが、 例えば、処理の遅延だったり、問題が発生した場合の切り分け等が難しくなるという 意味合いでしょうか?バッチが起動している時に、CPUの割当がバッチに取られてしまい、 DB処理の遅延に繋がったりという事は考えられますか? ちなみに、サーバ環境についてです。 OS:Linux DB:Oracle 10g バッチ:java ※バッチはジョブスケジューラソフトではなく、cronにて起動しています。 たびたびの質問になり、すみません。 よろしくお願いします。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

単にパフォーマンスの問題です。DBサーバーもバッチもメモリを多く使用しますし、どちらがネックになっているか判明できなくなります。とくに大量のトランザクションをロールバックした場合バッチがうまく制御できるかも不安です。ログも取れなくなる可能性もありますね。 ちなみにDBサーバーは起動時に使うメモリを予約指定すべきです。

aki_aki_1977
質問者

お礼

IDii24さん 回答ありがとうございます。 なるほど、パフォーマンスの問題なんですね。 ちなみに追加で質問しても良いですか。 >バッチがうまく制御できるか不安 具体的にはどんな事になりますか? バッチ処理の速度に影響が出たりとかですか? >ログも取れなくなる可能性もありますね。 ログとはREDOログですか? >起動時に使うメモリを予約指定すべき SGAの事ですか? よろしくお願いします。

関連するQ&A