Email: [email protected] 7 x 24 online support!
Oracle DB 起動時に ORA-16068, ORA-312 が発生
ORACLEデータベース によくあるエラ の解決策
	プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]
[起こりうる現象]
データベースのオープン時に ORA-16068、ORA-312 が発生してデータベースを
起動できません。
現象発生前に次の作業を実施しました。
データファイルをオフラインにしてオンラインに戻すためにリカバリを実行しま
したが、アーカイブ・REDOログ・ファイルを誤って削除していたため、リカバリ
処理をを途中でキャンセルしました。
[対象リリース]
問題が発生するリリース  :Oracle9i Database Release2 (9.2.0)
問題を修正したリリース  :Oracle Database 10g (10.1.0)
問題を修正予定のリリース:なし
問題を修正したPSR       :9.2.0.5
問題を修正予定のPSR     :なし
[対象プラットフォーム]
すべてのプラットフォーム
[起こりうる条件]
オフラインのデータファイルに対して、リカバリをキャンセルした場合です。
以下、再現ケースの例です。
 1. 索引用表領域を作成し、データファイルをオフラインにします。
     create tablespace INDX 
     datafile '/home2/ora920s/app/oracle/oradata/ty920s/indx01.dbf' size 1m;
     alter database 
     datafile '/home2/ora920s/app/oracle/oradata/ty920s/indx01.dbf' offline;
     alter system switch logfile;
     alter system switch logfile;
     alter system switch logfile;
 2. リカバリの途中でキャンセルします。
     SQL> recover datafile '/home2/ora920s/app/oracle/oradata/ty920s/indx01.dbf';
     ORA-00279: change 51544 generated at 04/16/2003 18:54:47 needed for thread 1
     ORA-00289: suggestion : /home2/ora920s/app/oracle/admin/ty920s/arch/1_53.arc
     ORA-00280: change 51544 for thread 1 is in sequence #53
     Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
     cancel                                                <-- リカバリをキャンセル
     Media recovery cancelled.
 
 3. データベースをシャットダウンしてスタートアップを実行します。
     SQL> startup
     ORACLE instance started.
     Total System Global Area  202861800 bytes
     Fixed Size                   736488 bytes
     Variable Size             167772160 bytes
     Database Buffers           33554432 bytes
     Redo Buffers                 798720 bytes
     Database mounted.
     ORA-16068: redo log file activation identifier mismatch
     ORA-00312: online log 1 thread 1:
     '/home2/ora920s/app/oracle/oradata/ty920s/redo01.log'
[原因]
製品の不具合です。
Oracle内部で使用しているフラグの設定に問題があり、制御ファイルと
REDOログ・ファイルの情報に不整合が生じてORA-16068が発生します。
[回避策]
現象発生時にデータファイルを offline drop しても回避できません。
以下のいずれかの回避策を検討してください。
 - アーカイブ・REDOログ・ファイルが存在する場合は、リカバリを完了
  させてデータベースを起動します
 - アーカイブ・REDOログ・ファイルが存在しない場合は、以下の手順で
  制御ファイルを再作成して回避します
    1. バックアップ制御ファイルを作成します
       SQL> alter database backup controlfile to trace;
       user_dump_dest 配下にトレースファイルが作成されます
    2. バックアップ制御ファイルを編集します
       % cp ty920s_ora_13645.trc ctl.sql <-- トレースファイル名は環境により異なります
       
       ctl.sql
       --------------------------------------------
       STARTUP NOMOUNT
       CREATE CONTROLFILE REUSE DATABASE "TY920S" NORESETLOGS  ARCHIVELOG
       MAXLOGFILES 5
       MAXLOGMEMBERS 3
       ... < 省略 >
       DATAFILE
       '/home2/ora920s/app/oracle/oradata/ty920s/system01.dbf',
       '/home2/ora920s/app/oracle/oradata/ty920s/undotbs01.dbf',
       --  '/home2/ora920s/app/oracle/oradata/ty920s/indx01.dbf',  <-- 問題となっているデータファイル
       '/home2/ora920s/app/oracle/oradata/ty920s/tools01.dbf',         をコメントアウト
       '/home2/ora920s/app/oracle/oradata/ty920s/users01.dbf'
       CHARACTER SET WE8ISO8859P1
       ;
       ALTER DATABASE OPEN;
       ALTER TABLESPACE TEMP 
       ADD TEMPFILE '/home2/ora920s/app/oracle/oradata/ty920s/temp01.dbf' REUSE;
       --------------------------------------------
    3. データベースをシャットダウンし、ctl.sql を実行します
       sqlplus /nolog
       SQL> connect / as sysdba
       SQL> @ctl.sql
