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

メモ:  Category:oracle

バックアップ作業中に電源が落ちてしまい、再度起動しても ORA-1113 signalled during: alter database open… で起動しない場合に実行してみた内容の記録。

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;

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

bluenote by BBB