重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

環境:Oracle9i
サーバ:Win2003
言語:VB6

テスト環境であるテーブルの200万件の削除、100万件の追加を行った後にVBアプリがすごく遅くなりました。
1.ロールバックセグメント(UNDOセグメント?)にデータがたまって遅くなったのでしょうか?
 またはテンポラリにデータがたまったのでしょうか?
2.削除や追加が行われた場合はどのオブジェクトにデータがたまったりするのでしょうか?

対応としてDBサーバのOSの再起動を行ったのですがまだ遅く、再起動後にDBの再起動を行ったらなぜか遅かったのが改善されました。
そもそも原因がデータの削除、追加で体感レベルで遅くなったりするのかも疑問です。
基礎知識が足りなくて申し訳ありませんが、アドバイスお願いいたします。

A 回答 (3件)

#1 です



遅延ブロッククリーンアウトについて、わかりやすい説明と解消方法があります。
http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cg …

実際にはUNDOがいっぱいになるわけではなく、
データブロックのITLという部分とUNDOセグメントヘッダという管理領域で
実際のデータブロックへのコミット作業を先送りさせています。これでコミット時の応答が速くなります。

おら! オラ! Oracle - どっぷり検証生活
UNDOやREDOについてもあります。一通り目を通しておくとOracleの理解度が高まります。

http://www.insight-tec.com/mailmagazine/ora3/mai …

参考URL:http://www.insight-tec.com/mailmagazine/ora3/mai …
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
非常にわかりやすい説明とリンクでした。
あとは自分の理解度の問題のようです。
ありがとうございました。

お礼日時:2006/03/06 19:39

VBアプリがどこで動いているのかが分からないのですがDBサーバ上で動いているのであれば


「OSの再起動を行ったのですがまだ遅く、再起動後にDBの再起動を行ったらなぜか遅かったのが改善されました。
」ということは外的要因しか考えられません(他の誰かがたまたま重たい処理を流していた)
当然DBサーバのOSの再起動はDBの再起動が含まれますので...
    • good
    • 0

再起動によって改善されたのではなく、


色々操作している間に遅延ブロッククリーンアウトが発生して
UNDOセグメントヘッダのコミットフラグがデータセグメントに反映されたためでしょうね。

この回答への補足

回答ありがとうございます。
すいません。せっかく回答頂いたのですが、よく理解できてません。UNDOセグメントがいっぱいになっているのを確認する方法などはありますでしょうか?
また、上記データセグメントに反映されたというのは何か確認方法があるのでしょうか?
経験が浅いもので理解できずに申し訳ありません。
よろしくお願いいたします。

補足日時:2006/03/05 17:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す