Email: service@parnassusdata.com 7 x 24 online support!
Oracle DB 起動時に ORA-16068, ORA-312 が発生
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com
[起こりうる現象] データベースのオープン時に 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