kenken0807_DBメモ

つば九郎が好きなDBAです。Oracle Standard Editionでの運用やツールとかとかの備忘録。特に記載がない場合はoracle11gR2です。時々MySQL

OracleSERAC+ASMのRMANバックアップから非ASMのシングル環境へリストア

OracleSERAC+ASMのRMANバックアップから非ASM(ファイルシステム)のシングル環境へリストアしたのでメモ。

環境

  • Oracle11.2.0.4
  • DB_NAME:orcl

前提

  • RMANバックアップは毎日0時にフルバックアップを取得(backupset plus archivelog)
  • delete noprompt obsolete;で削除している。
  • RMANバックアップセットはファイルシステムに出力している。
  • リカバリカタログは使用しない。制御ファイルで管理。

リストア手順

  • 4/11の13:00までの不完全リカバリを行う。

別サーバを用意しOracleのインストールをする

↓を基にインストールまで行う。

kenken0807.hatenablog.com

PSUや個別パッチを適用している場合はRAC環境と同等にしておく。

初期化ファイル作成

vim $ORACLE_HOME/dbs/initorcl.ora

db_name='orcl'
processes = 300
audit_file_dest='/opt/app/oracle/admin/orcl/adump'
audit_trail ='none'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/opt/app/oracle/flash_recovery_area'
db_recovery_file_dest_size=700G
log_archive_dest_1='LOCATION=/opt/app/oracle/archivelog'
diagnostic_dest='/opt/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = '/opt/app/oracle/control01.ctl'
compatible='11.2.0.4.0'
sga_target=5G
pga_aggregate_target=1G

RMANから戻す

使用するもの

  • 4/11 0:00に取得したフルバックアップ
  • 4/11 0:00~4/11 13:00のアーカイブログ(すでにバックアップ済みであればアーカイブログのバックアップセット)

4/11 0:00に取得したバックアップを使用するので、4/11 0:00時点の制御ファイルしかない。
その制御ファイルをリストアすると4/11 0:00~4/11 13:00までのアーカイブ情報を保持していないことになる。
よって、4/11 0:00~4/11 13:00までのアーカイブをカタログ追加し、
RAC環境のlist backupで確認した必要なアーカイブログをリストアしてあげる必要あり。

                 4/13 0:00                                        4/13 13:00
時系列--------------|--------------------------------------------------|--------------------
              フルバックアップ                                     ここに戻す
                   取得
                      ←         この間のアーカイブログが必要         →

どのアーカイブログのバックアップが必要か順序番号を確認する

確認すると2016/04/12に取得したanr2qu6c_1_1このバックアップが必要だということがわかる。

RMAN>list backup;
・
・
BSキー  サイズ       デバイス・タイプ経過時間終了時間
------- ---------- ----------- ------------ -------------------
3407    11.79G     DISK        00:01:06     2016/04/12 00:01:37
        BPキー: 3407   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20160412T060030
        ピース名: /backup/anr2qu6c_1_1

  バックアップ・セット3407のアーカイブ・ログのリスト
  Thrd Seq     Low SCN    Low時間             Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    46255   34194183819 2016/04/11 00:00:00 34194503257 2016/04/11 07:23:50
  1    46256   34194503257 2016/04/11 07:23:50 34194522990 2016/04/11 10:24:11
  1    46257   34194522990 2016/04/11 10:24:11 34194542840 2016/04/11 15:24:32
  ・
  ・
  2    17526   34194183858 2016/04/11 00:00:02 34194543930 2016/04/11 07:24:33
  2    17527   34194543930 2016/04/11 07:24:33 34194632204 2016/04/11 12:30:12
  2    17528   34194632204 2016/04/11 12:30:12 34195546508 2016/04/11 13:24:32
  ・
  ・
・
・

RAC環境に出力しているバックアップファイルを同じディレクトリを作成してにコピーし、配置する

mkdir -p /backup
chown -R oracle. /backup
mv (4/11のフルバックアップ) (4/12に取得したアーカイブログ[anr2qu6c_1_1]) /backup

初期化パラメータで指定したアーカイブログの出力先作成

mkdir -p /opt/app/oracle/archivelog

インスタンス起動

startup nomount;

制御ファイルリストア

 RESTORE CONTROLFILE FROM '/backup/c-2096898227-20160411-00';

→4/11 0:00時点の制御ファイル

データベースマウント

 ALTER DATABASE MOUNT;

制御ファイルで認識されていないアーカイブログのバックアップセットをカタログ追加

 CATALOG BACKUPPIECE '/backup/anr2qu6c_1_1';

→4/11 0:00~4/11 13:00までのアーカイブログ

アーカイブログのリストア

run {                                                          
  set archivelog destination to '/opt/app/oracle/archivelog';           
  restore archivelog sequence between 46255 and 46257 thread 1;
  restore archivelog sequence between 17526 and 17528 thread 2;
} 

→4/11 0:00~4/11 13:00までのアーカイブを初期化ファイルのlog_archive_dest_1にリストアする。じゃないとリカバリできないみたい 。

リストア

  • 本番でディスクグループ確認
SELECT FILE# AS "File/Grp#", NAME FROM   V$DATAFILE;
  
         1 +DATA/orcl/datafile/system.264.861799709
         2 +DATA/orcl/datafile/sysaux.260.861799709
         3 +DATA/orcl/datafile/undotbs1.261.861799709
         4 +DATA/orcl/datafile/data.257.861799709
         5 +DATA/orcl/datafile/idx.258.861799709
         6 +DATA/orcl/datafile/undotbs2.262.861799709
         7 +DATA/orcl/datafile/users.265.861799723
         8 +DATA/orcl/datafile/perfstat.259.861799709
run {
  set newname for datafile  1 to '/opt/app/oracle/oradata/system1.dbf'; 
  set newname for datafile  2 to '/opt/app/oracle/oradata/sysaux1.dbf'; 
  set newname for datafile  3 to '/opt/app/oracle/oradata/undotbs1.dbf';
  set newname for datafile  4 to '/opt/app/oracle/oradata/data1.dbf';
  set newname for datafile  5 to '/opt/app/oracle/oradata/idx1.dbf';
  set newname for datafile  6 to '/opt/app/oracle/oradata/undotbs2.dbf';
  set newname for datafile  7 to '/opt/app/oracle/oradata/users1.dbf';
  set newname for datafile  8 to '/opt/app/oracle/oradata/perfstat.dbf';
  restore database;                                                    
  switch datafile all;
}

リカバリ

run {
  SET UNTIL TIME "TO_DATE('2016-04-11 13:00:00','YYYY-MM-DD HH24:MI:SS')";
  RECOVER DATABASE ;                                                
}   

オンラインREDOログをリネームする

  • RAC環境を確認
GROUP# THREAD# MEMBERS MEMBER                                             BYTES  SEQUENCE# STATUS
------ ------- ------- --------------------------------------------- ---------- ---------- ----------
     1       1       2 +DATA/onlinelog/group_1.257.861799869     524288000      46586 ACTIVE
     1       1       2 +DATA/onlinelog/group_1.257.861799869     524288000      46586 ACTIVE
     2       1       2 +DATA/onlinelog/group_2.258.861799869     524288000      46587 CURRENT
     2       1       2 +DATA/onlinelog/group_2.258.861799871     524288000      46587 CURRENT
     3       2       2 +DATA/onlinelog/group_3.259.861799873     524288000      17651 ACTIVE
     3       2       2 +DATA/onlinelog/group_3.259.861799875     524288000      17651 ACTIVE
     4       2       2 +DATA/onlinelog/group_4.260.861799875     524288000      17652 CURRENT
     4       2       2 +DATA/onlinelog/group_4.260.861799875     524288000      17652 CURRENT
  • オンラインREDO用のディレクトリ作成
mkdir -p /opt/app/oracle/redo 
  • リネームする
alter database rename file '+DATA/onlinelog/group_1.257.861799869' to '/opt/app/oracle/redo/redo01.log';    
alter database rename file '+DATA/onlinelog/group_1.257.861799869' to '/opt/app/oracle/redo/redo11.log';  
alter database rename file '+DATA/onlinelog/group_2.258.861799869' to '/opt/app/oracle/redo/redo02.log';  
alter database rename file '+DATA/onlinelog/group_2.258.861799871' to '/opt/app/oracle/redo/redo12.log';  
alter database rename file '+DATA/onlinelog/group_3.259.861799873' to '/opt/app/oracle/redo/redo03.log';  
alter database rename file '+DATA/onlinelog/group_3.259.861799875' to '/opt/app/oracle/redo/redo13.log';  
alter database rename file '+DATA/onlinelog/group_4.260.861799875' to '/opt/app/oracle/redo/redo04.log';  
alter database rename file '+DATA/onlinelog/group_4.260.861799875' to '/opt/app/oracle/redo/redo14.log';     

データベースオープン

ALTER DATABASE OPEN resetlogs;

この時点でデータベースにアクセス可能。。

一時表領域再作成

create temporary tablespace temp1 tempfile '/opt/app/oracle/oradata/temp11.dbf' size 10M;
alter database default temporary tablespace temp1; 
drop tablespace temp;
create temporary tablespace temp tempfile '/opt/app/oracle/oradata/temp02.dbf' size 5000M;
alter database default temporary tablespace temp; 
drop tablespace temp1;

thread2のredolog消す

ALTER DATABASE DISABLE THREAD 2;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database drop logfile group 8;
alter database drop logfile group 9;
alter database drop logfile group 10;

これで完了。おしまい。