ORA-1113 signalled during: alter database open...[サーバー停止]

データベースサーバーの停止しから復旧までの記録です。

環境

  • OS:Windows2000 Server
  • DB:Oracle 8.1.7.4.1
  • Backup:ARCServe

事象

  1. クライアントにて「ORA-12535: TNS: 操作はタイムアウトしました。」によりDBサーバーの不調を発見
  2. サーバーの確認。電源が落ちていることを確認。
  3. 電源の投入
  4. SQL*PlusにてOracleへの接続を確認するが、接続できない。
  5. アラートログの確認。ORA-1113 signalled during: alter database open...で停止
  6. アラートログの確認。BEGIN BACKUPで途切れているのを確認

ログがぷっつり途切れているので原因がつかめないのですが、夜間のバックアップ中に 電源が落ちてしまったようです。

ORA-1113でデータベースがオープンできなかったのは、データベースのファイルが バックアップ中の状態のままだったため、オープンできなかったようです。

復旧手順

特権付きの接続を使用してSQL*Plusを実行します。

c:\> set oracle_sid=SID名
c:\> SQLPLUS "/ AS SYSDBA"

次にOracleをmount状態にします。

SQL> shutdown immediate
SQL> startup mount
ORACLEインスタンスが起動しました。
・・・
データベースがマウントされました。

バックアップの状態を確認します。STATUS項目がACTIVEの場合、バックアップ中であるため バックアップを終了する必要があります。

SQL> SELECT t.name AS "TB_NAME", d.file# as "DF#", d.name AS "DF_NAME", b.status
     FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b
     WHERE d.TS#=t.TS#
      AND  b.FILE#=d.FILE#
      AND  b.STATUS='ACTIVE';

バックアップ中のファイルをバックアップ終了状態にします。PATHには、上記SQL文から得られた DF_NAME を指定し、ACTIVEのファイルを対象に全てEND BACKUPを実施します。

SQL> ALTER DATABASE DATAFILE 'PATH' END BACKUP;

バックアップ状態のステータスが、全てNOT ACTIVEであることを確認しデータベースをオープンします。

SQL> SELECT t.name AS "TB_NAME", d.file# as "DF#", d.name AS "DF_NAME", b.status
     FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b
     WHERE d.TS#=t.TS#
      AND  b.FILE#=d.FILE#
      AND  b.STATUS='ACTIVE';

SQL> alter database open;

アラートログにて正常に起動していることを確認します。