ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com
1.適用範囲
バーション8.1.7.4から10.2.3[release 8.1.7 to 10.2]
2.目标
このファイルはリカバリ策を提供している。SYSTEM ロールバックセグメントがORA-600[4139]/ORA-600[4194]になると、データベースが起動できなくなる。
システムがロールバックセグメントから影響を受ける前に、リカバリの時点をエラが起こる前にしてください。
ORA-600[4193]とORA-[4104はundoのセグメントヘッダと(TRN CTL / FREE BLOCK POOL的信息)undo セグメントブロックに起こった。もし非SYSTEMのundoセグメントに起こる場合に関連するロールバックセグメントを削除すればいい。
3.リカバリ
オペレーションを実行する前に、バックアップしてください
SYSTEM ロールバックセグメントにBBED でktuxc.ktuxcnfb と ktuxc.ktuxcfbp[0..x].ktufbuba を0に設定した。こうすれば、Oraclが新たなトランザクションに空なブロックを使うようになる。
例えば:
以下はロールバックセグメントヘッダのダンプである
TRN CTL:: seq: 0x00af chd: 0x0036 ctl: 0x002a inc: 0x00000000 nfb: 0x0001
mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x00400006.00af.0f scn: 0x07be.a0bae152 Version: 0x01 FREE BLOCK POOL:: uba: 0x00400006.00af.0f ext: 0x0 spc: 0x13b4 uba: 0x00000000.00a8.0d ext: 0x7 spc: 0x1a2c uba: 0x00000000.009b.0b ext: 0x3 spc: 0x1c08 uba: 0x00000000.0092.27 ext: 0x3 spc: 0x12d0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 |
- bbedに対してふさわしい偏差値を設定する。 ktuxc.ktuxcnfbを0X0000に変更する。この例では:0X0001
- 偏差値を設定する。すべての非0ktuxcfbp[0..x].ktufbubaを0X00000000に設定する。この例でktuxc.ktuxcfbp[0].ktufbubaは0X00400006
3.ブロックは既にリカバリできて、ブロックのチェックサムを新たな数値に設定する。あるいは、ブロックのchecksumを禁止する。
一部のブロックが修正したダンプは以下の通り:
The partial block dump after the modification is:
TRN CTL:: seq: 0x00af chd: 0x0036 ctl: 0x002a inc: 0x00000000 nfb: 0x0000 mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x00400006.00af.0f scn: 0x07be.a0bae152 Version: 0x01 FREE BLOCK POOL:: uba: 0x00000000.00af.0f ext: 0x0 spc: 0x13b4 uba: 0x00000000.00a8.0d ext: 0x7 spc: 0x1a2c uba: 0x00000000.009b.0b ext: 0x3 spc: 0x1c08 uba: 0x00000000.0092.27 ext: 0x3 spc: 0x12d0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
|
nfb=ktuxc.ktuxcnfb –空のブロック、プールに空じゃないスロットの数
ktuxc.ktuxcfbp=空のブロック・プール
4.データベースを起動して、system ロールバックセグメント:
alter rollback segment SYSTEM shrink;
Comment