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のインストールをする
↓を基にインストールまで行う。
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;
これで完了。おしまい。