
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>DB処理の遅延に繋がったりという事は考えられますか?
つまりそういうことですね。DBを優先させるならあらかじめDBのメモリを確保しておく。でも残りをバッチとOSに割り当てることを考えれば、バッチは常に起動しているわけではないですから、バッチのメモリをあらかじめ確保するようなことは返って無駄になります。
サーバーはDBだけで動かしたいという理由になります。
バッチ処理の遅延どころか最悪は処理がちょん切れますよ。
IDii24さん
ご回答ありがとうございます。
バッチ処理がちょん切れるというのは、実行中なのに異常終了するということですか?
たびたびすみませんが、よろしくお願いします。
No.2
- 回答日時:
通常バッチはJAVAなどによる外部プログラムを、バッチスケジューラーソフトで管理します。
SQLServerなどはストアドプロシージャーをエージェント管理してもある程度のことは出来てしまいますが、OracleなどUnix系の大きなシステムではスケジューラーを導入している会社が殆どでしょう。このバッチスケジューラーはバッチを監視していますので、実行ログをエージェントで採取しています。エラーについても何処で問題が起きたかをチェックし、回避するようにバッチが書かれることが多いです。
このような複雑なプロセスで監視しているわけですし、ここがバッチの要なので、最悪でも状況を知れるとこまでは処理してもらわないとこまるのですが、データーベースの処理でサーバーが一杯一杯になれば、大事なログ採取、状況把握部分まで動かなくなる可能性があります。ロールバックはいわばバッチを戻しているわけですからフル稼働しますよね。REDOログ領域も書き込む処理ではなく読み取りになります。その為にバッチスケジューラーに伝えるべき情報がうまく伝わらず制御不能に陥ることもあります。
つまり正確な原因確認が出来なくなる恐れがあると云う事です。
メモリとはSGAとPGAの合計です。今のOracleはそれぞれの割合は自動管理されていると思いますが全体が使うメモリはMEMORY_TARGETで指定してやればよいと思われます。
つまりサーバーの中でDBが利用するメモリの量を確保することになります。それによって他のアプリケーションがDBの処理を邪魔しないようになります。SQLServerでも同じことが出来ます。
これをうまく設定すれば、他のアプリと共有することも出来るとは思います。ただ間違えれば帰ってパフォーマンスが悪くなるので注意です。Oracleは良く理解してパラメータをいじらないとさし引きで悪くなる場合もあるので注意です。
ちなみに全データそのものを常にメモリに読み込んでおくインメモリーDBとは違います。
IDii24さん
ご回答ありがとうございます。
【バッチがうまく制御できるか不安】について、理解できました。
また、追加で質問させてください。
>DBサーバーもバッチもメモリを多く使用しますし、どちらがネックになっているか判明できなくなります。
上記の点について、どちらがネックになっているかの部分なのですが、
例えば、処理の遅延だったり、問題が発生した場合の切り分け等が難しくなるという
意味合いでしょうか?バッチが起動している時に、CPUの割当がバッチに取られてしまい、
DB処理の遅延に繋がったりという事は考えられますか?
ちなみに、サーバ環境についてです。
OS:Linux
DB:Oracle 10g
バッチ:java
※バッチはジョブスケジューラソフトではなく、cronにて起動しています。
たびたびの質問になり、すみません。
よろしくお願いします。
No.1
- 回答日時:
単にパフォーマンスの問題です。
DBサーバーもバッチもメモリを多く使用しますし、どちらがネックになっているか判明できなくなります。とくに大量のトランザクションをロールバックした場合バッチがうまく制御できるかも不安です。ログも取れなくなる可能性もありますね。ちなみにDBサーバーは起動時に使うメモリを予約指定すべきです。
IDii24さん
回答ありがとうございます。
なるほど、パフォーマンスの問題なんですね。
ちなみに追加で質問しても良いですか。
>バッチがうまく制御できるか不安
具体的にはどんな事になりますか?
バッチ処理の速度に影響が出たりとかですか?
>ログも取れなくなる可能性もありますね。
ログとはREDOログですか?
>起動時に使うメモリを予約指定すべき
SGAの事ですか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゲームキューブのペーパーマリ...
-
oracleのimp-00002エラーについて
-
Windows10のタスクスケジューラ...
-
DHCP設定バッチnetshコマンドに...
-
WindowsのRANDOM関数を用いたバ...
-
バッチファイルを実行後、終了...
-
バッチを走らせてそのバッチを...
-
Googleアカウントが削除されて...
-
XCOPYでネットワーク越しにコピ...
-
拡張子はなぜ、大文字と小文字...
-
Androidアルバムの画像を消去で...
-
Excelの「アクセシビリティ 検...
-
DOSコマンドでファイルをコピー...
-
ひとつのファイルを一括で複数...
-
起動ドライブ"C"直下に現れた"O...
-
ドナルドウズを消す。
-
Windowsフォルダ内のファイルと...
-
dirコマンド一文ででフォルダの...
-
windows10 フォルダを上書きす...
-
移動先にも同じファイル名が存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
oracleのimp-00002エラーについて
-
バッチファイルを実行後、終了...
-
コマンドの結果を変数に入れたい
-
DHCP設定バッチnetshコマンドに...
-
リモートデスクトップの取り合...
-
バッチでEnterを認識させ...
-
batファイルを実行してコマンド...
-
DOSコマンドのforで空白行をス...
-
バッチ実行を意図的に失敗させ...
-
batファイルで、call使っても戻...
-
バッチファイルでPC情報を取得する
-
バッチファイルを常に管理者権...
-
バッチ実行時にバッチのファイ...
-
コマンドプロンプトで最新のフ...
-
バッチプログラムについて(編...
-
コマンドプロンプトで別ユーザ...
-
順番にPINGを飛ばすバッチ
-
実行結果を戻り値で取得したい
-
WinSCPがタスクスケジューラで...
おすすめ情報