損失または破損した制御ファイルを含むデータベース全体のリカバリ

制御ファイルが消失または破損した場合は、まず Oracle データベースをシャットダウンし、データベース全体をリカバリする前に、制御ファイルをリストアする必要があります。 データベースをシャットダウンし、制御ファイルをリカバリしてから、データベース全体をリカバリするには、以下の手順に従います。

  1. SVRMGR プロンプトまたは SQL*Plus プロンプトで以下のコマンドを入力して、データベースをシャットダウンします。
    SHUTDOWN
    
  2. 適切なプロンプトで、リカバリ対象となる Oracle データベースのインスタンスを起動して Oracle データベースをマウントしたら、リカバリを開始します。
  3. アーカイブ ログ ファイルの名前を入力するよう求められます。 Oracle データベースによってアーカイブ ログ ファイルを自動的に適用することもできます。 必要なアーカイブ ログ ファイルが見つからない場合は、オンライン REDO ログを手動で指定する必要がある場合があります。

    オンライン REDO ログを手動で適用する際には、フル パスとファイル名を指定する必要があります。 間違った REDO ログを指定してしまった場合は、以下のコマンドを再入力します。

    RECOVER DATABASE USING BACKUP CONTROLFILE;
    

    プロンプト上で正しいオンライン REDO ログ ファイルを指定します。 すべての REDO ログが適用されるまで、上記の手順を繰り返します。

  4. SVRMGR プロンプトまたは SQL*Plus プロンプトで以下のコマンドを入力して、データベースをオンラインに戻し、ログをリセットします。
    ALTER DATABASE OPEN RESETLOGS;
    
  5. アーカイブ REDO ログが保管されているディレクトリに移動し、すべてのログ ファイルを削除します。
  6. オフラインの表領域がある場合は、SVRMGR プロンプトまたは SQL*Plus プロンプトで以下のコマンドを入力して、オフラインの表領域をオンラインに戻します。
    ALTER TABLESPACE "表領域名" ONLINE;
    
  7. RMAN を使用して、バックアップされた制御ファイルによってデータベース全体をリカバリする場合は、RMAN でデータベース情報を再同期して、新規にリカバリされたデータベースを反映させます。 データベース情報を再同期する方法
    1. Oracle Database ソフトウェアを所有するユーザ アカウントに切り替えます。
    2. 以下のコマンドを入力して、Oracle データベースの SID を、リカバリされたデータベースの SID に設定します。
      ORACLE_SID=database SID
      
    3. 以下のコマンドを入力して、処理を完了します。
      rman target dbuser/ dbuserpassword rcvcat catowner/catowner 
      password@rman service name
      reset database
      

      各エントリの内容は以下のとおりです。

      • dbuser - リカバリされたデータベースに対する dba 権限を持つユーザ
      • dbuserpassword - dbuser のパスワード
      • catowner - Oracle Recovery Manager カタログ所有者の Oracle ユーザ名
      • rman service name - RMAN カタログがインストールされているデータベースへのアクセスに使用するサービスの名前