Oracle 11g redo と制御ファイルを削除してから、データベースを強制的に起動する

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

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]

 

シーン:

データベースを起動したままで、制御ファイルとすべてのredoファイルを削除する。データファイルだけを残し、shutdown abortした後でリカバリする。

 

2.オペレーションステップ

 

1.バラメタファイルにデータベースを強制的に起動するための隠しバラメタを追加する:

startup nomount

 

alter system set “_allow_resetlogs_corruption”=true scope=spfile;

alter system set  undo_management=manual  scope=spfile;

 

–ここではロールバックセグメントを人工的に設定してください。さもなければ、たとえ起動したとしても、インスタンスはORA-4194もPMONによって中止されるかもしれない。

 

startup nomount force

 

2.ここではredoをなくしたから、resetlogsでコントロールファイルを作成する

 

create controlfile reuse database “CRS”

resetlogs noarchivelog

logfile

group 1 ‘/home/oracle/crs/REDO01.LOG’ size 50M,

group 2 ‘/home/oracle/crs/REDO02.LOG’ size 50M,

group 3 ‘/home/oracle/crs/REDO03.LOG’ size 50M

datafile

‘/home/oracle/crs/SYSTEM01.DBF’,

‘/home/oracle/crs/SYSAUX01.DBF’,

‘/home/oracle/crs/UNDOTBS01.DBF’,

‘/home/oracle/crs/USERS01.DBF’,

‘/home/oracle/crs/EXAMPLE01.DBF’,

‘/home/oracle/crs/MYDB.DBF’

maxlogfiles 50

maxdatafiles 200

maxlogmembers  3;

 

3.リカバリを試して起動する

recover database usibg backup controlfile until cancel;

alter database open resetlogs;

 

注意此时还可能出现:

ORA-16433

 

2662エラが現れた場合に、制御ファイルを再構造してください。

 

 

ここでalter database open resetlogsが現れる:

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00600: internal error code, arguments: [2662], [0], [18045054], [0],

[18045088], [4194432], [], [], [], [], [], []

Process ID: 16029

Session ID: 1 Serial number: 3

 

ORA-600-2262エラ:

データファイルのSCNはデータのSCNより大きい。

 

4.ORA-2662に対応してデータベースを強制的に起動する

10015で adjust_scnを引き起こしてください。10gのあとadjust_scnはディフォルトで使えない。バラメタファイルに_ALLOW_ERROR_SIMULATION=trueを設定してください:

startup nomount

alter system set “_ALLOW_ERROR_SIMULATION”=true

shutdown immediate

startup mount

recover database until cancel using backup controlfile;

–ORA-16443エラが現れたら、ステップ2に繰り返してください。

 

 

alter session set events ‘10015 trace name adjust_scn level 1’;

alter database open restetlogs;

 

 

adjust_scn計算方法:

 

一般的には五つの数値に注目するだけが、例えば 18045088の場合に十億ごとにレベルが変わる。

より正確に計算するれば、四つの *4 +五つの数値である。ここでは0*4+18045088 が十億より小さいから、1と設定してください。

会根据直接递增数据库的SCN

 

 

参考:

Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ID 1428786.1)

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *