Oracle _OFFLINE_ROLLBACK_SEGMENTS隠しバラメタ

ORACLEデータベース によくあるエラ の解決策

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com

 

 

_OFFLINE_ROLLBACK_SEGMENTS(offline undo segment list)隠しバラメタ(hidden parameter)の特別使い道:

  • インスタンスstartupを起動して、データベースを起動する場合にも_OFFLINE_ROLLBACK_SEGMENTSに挙げたUndo segments(削除セグメント/ロールバックセグメント)を読み取れる。もしこれらのundo segmentsにトラブルがあれば、ほかのlogと別のTRACEに現れるが、実際のstartupプロセスに影響を与えない。
    • もしデータブロックにアクチブなトランザクションがあって、ITLも該当するundo segmentsに指せば:
    • もしundo segmentsの.transaction tableトランザクションテーブルを読み取れば、トランザクションが既に挙げられたことを気づき、データブロックをクリンアップすることを実行する。
    • もしトランザクションがアクチブだが、コミットされていないことを気づいたら、CRブロックコピが作成される
    • そのundo segmentsにトラブルがあれば、(corruptedエラかもしれない、あるいはmissedがなくした)エラをlogにエクスポートして、クエリが中止される。
  • もしDMLが関するデータブロックをアップグレードすれば、サビースプロセスがアクチブトランザクションをリカバリするために、デッドロップに落ちて、大量なCPUを使う。解決策はクエリで関するテーブルを再構造する。

 

_offline_rollback_segments も _corrupted_rollback_segments もインスタンスを変化させる:

  • 以上二つのバラメタに挙げたUndo Segments(削除セグメント/ロールバックセグメント)はオンラインで使われない
  • UNDO$データディクショナリーベーステーブルで、OFFLINEと示した記録
  • インスタンスで新たなトランザクションに使われない
  • バラメタに挙げたUndo Segmentsリストのアクチブトランザクションactive transactionはロールバックされない。それに、デッドとマークされない。 (みんなも知らないSMON機能(五):Recover Dead transaction)

 

 

 

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号