7 x 24 在线支持!
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)