- ベストアンサー
オラクルのロールバックセグメントって
教えて下さい。 oracleのロールバックセグメントって標準では RB1~RB5ですよね。 また、RB1からRB5までの振り分けっていうのは オラクルが自動的にしてくれてると認識してるのですが・・・ さておき、あるセグメント(例えばRB3)などが 集中的に使用されていて競合が発生し、レスポンス劣化に 繋がって困っています。私自身オラクル初心者なのですが 何か解決方法ってあるのでしょうか? ちなみにオラクルは7.3.4で言語はVB5で開発しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ ロールバックセグメントは作成されていても、 オンラインになっていないと使用されませんので気をつけてください。 (まず、オンラインになっているとは思いますが。) セッション側でロールバックセグメントを明示的に指定していなければ、 特定のロールバックセグメントだけを使うって事には基本的にならないはず。 (※何か要因があって、そのロールバックに集中してるかもしれませんが) 基本対処として、 DBサーバーに余裕があるなら、オンラインの 全てのロールバックセグメントの拡張をお勧めします。 通常の処理では問題ないが、ある特定の処理のときだけ 大量のロールバックセグメントを使用するという場合であれば、 一つのロールバックセグメントの領域を大きくし、 対象の処理だけを、No1の方のコマンドを使用して、 ロールバックセグメントを明示的に指定するという手もあります。 どちらにしろ、一度現在のロールバックセグメントの領域が、 適正かどうか見てみてはどうでしょうか?
その他の回答 (2)
- yuta94t419
- ベストアンサー率52% (11/21)
RBSへのトランザクションの割り当ては、アクティブなトランザクションが一番すくないRBSにトランザクションが割り当てられます。アクティブトランザクションが同じ場合は、最後に使ったのが一番古いものから割り当てられます。大きなRBSをバッチなどに使いたいときには、日ごろはOFFLINEにして、バッチ直前にONLINE、SET TRANSACTIONでRBSを指定→バッチ実行 →OFFLINE になると思います
- TMINET
- ベストアンサー率32% (45/140)
oo4oのExecuteSQLメソッドならSQL*Plusのコマンドも使えるようなので set transaction use rollback segment RB1; と先に指定してやればいいような。Oracle7ではどうか確認できません。 参考にならなかったらゴメンナサイ。
お礼
ロールバックセグメントを固定にしたいわけではないので この方法ではできないですよね。 ただ、別の機会があればこんな方法があったのは 初めて知りましたので参考にさせて頂きます。 ありがとうございました。
お礼
やはり領域に問題があるんでしょうね。 ロールバックセグメントの領域はそれぞれ(RB1~RB5) 初期1M、拡張サイズ1Mにしており最大値も無制限に しているのですが・・・ サイズの拡張とロールバック領域の増設?(RB6以降もオンラインに してみる)などの方法をとってみます。 どうもありがとうございました。