Oracle Database Backup Cloud Service でリストアしてみた

こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。

今回は “Oracle Database Backup Cloud Service” を使用して
取得したバックアップを 別途 Oracle Cloud上に建てたサーバへ
リストアしてみます。

リストア先の環境は次のようになっております。
・OS ⇒Windows Server 2012 standard edition
・DBMS ⇒Oracle Database 12c Enterprise Edition
(ソフトウェアのインストールのみ、DBは作成せず)
・java 1.7以上をインストール済み
・”Oracle Database Backup Cloud Service”モジュールをインストール済み
・Oracle Cloud (OCI-C) 東京リージョンを使用

※モジュールのインストール手順は前回のブログをご参照ください。
Oracle Database Backup Cloud Service を使ってみた

※今回の内容は下記のマニュアルを参考にしております。
https://docs.oracle.com/cd/E83857_01/paas/db-backup-cloud/csdbb/restoring-new-database-host.html

1.前準備

コマンドプロンプトを起動します。以降は
青文字 ⇒実行するコマンド
緑文字⇒コマンドを実行して出力されるメッセージ
とします。

環境変数を設定します。

set ORACLE_HOME=C:\app\oracle\product\12.1.0\dbhome_1
set ORACLE_SID=orcl

※ここでは
ORACLE_HOME ⇒C:\app\oracle\product\12.1.0\dbhome_1
ORACLE_SID ⇒orcl
としていますが、これらの値はご使用されるデータベースの環境に合わせてください。

リストアするDB環境の準備として、
SYSユーザのパスワードファイルを作成しておきます。

cd C:\app\oracle\product\12.1.0\dbhome_1\dbs\
orapwd file=orapworcl

続いて、初期化パラメータファイルを次のパス
C:\app\oracle\product\12.1.0\dbhome_1\dbs\initorcl.ora
に作成し、下記1行だけを記載しておきます。
db_name=orcl

Windowsサーバでは DBへの接続にあたり
サービスへの登録が必要となるため、下記コマンドを実行して
サービスを起動しておきます。

oradim -NEW -SID orcl -STARTMODE manual -PFILE “C:\app\oracle\product\12.1.0\dbhome_1\dbs\initorcl.ora”


2.リストア実施

rmanを実行します。

rman

Recovery Manager: Release 12.1.0.2.0 – Production on 日 MM月 DD HH:MM:SS YYYY

Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.

DBに接続します。パスワードは前手順の
パスワードファイル作成時に入力したパスワードになります。

RMAN> connect target sys

ターゲット・データベースのパスワード:
ターゲット・データベースに接続しました(起動していません)。

元のDBの初期化パラメータファイルを取得するにあたり、
まずは NOMOUNTで起動します。

RMAN> STARTUP NOMOUNT;

起動に失敗しました: ORA-01078: failure in processing system parameters
LRM-00109: ?p?????[?^?E?t?@?C??’C:\APP\ORACLE\PRODUCT\12.1.0\DBHOME_1\DATABASE\I
NITORCL.ORA’???I?[?v?????????????B

SPFILE取得用のパラメータ・ファイルのないOracleインスタンスを起動しています
Oracleインスタンスが起動しました

システム・グローバル領域の合計は、 1073741824バイトです。

Fixed Size 3053880バイト
Variable Size 281020104バイト
Database Buffers 784334848バイト
Redo Buffers 5332992バイト

リストアを行うにあたり、バックアップ取得時に設定したパスワードを設定します。
※ここでは XXXXXXXX としています。

RMAN> SET DECRYPTION IDENTIFIED BY ‘XXXXXXXXX’;

実行コマンド: SET decryption
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています

バックアップ取得時のDBのDBIDを
XXXXXXXXXX として実行します。

RMAN> SET DBID=XXXXXXXXXX;

実行コマンド: SET DBID

バックアップデータ内のSPFILEから初期化パラメータファイル(PFILE)を
リストアします。コマンド内で指定していますが、
C:\app\oracle\product\12.1.0\dbhome_1\dbs\initorcl.ora
にリストアされます。
コマンド内の ‘c-XXXXXXXXXX-YYYYMMDD-00’ には
SPFILEが含まれるバックアップ時のハンドルを指定します。

RMAN> RUN {
 ALLOCATE CHANNEL t1
 DEVICE TYPE sbt
 PARMS ‘SBT_LIBRARY=C:\app\oracle\product\12.1.0\dbhome_1\bin\oraopc.dll
 ENV=(OPC_FILE=C:\app\oracle\product\12.1.0\dbhome_1\database\opcorcl.ora)’;
 RESTORE SPFILE TO PFILE ‘C:\app\oracle\product\12.1.0\dbhome_1\dbs\initorcl.
ora’
 FROM ‘c-XXXXXXXXXX-YYYYMMDD-00’;
 }

チャネル: t1が割り当てられました
チャネルt1: SID=12 デバイス・タイプ=SBT_TAPE
チャネルt1: Oracle Database Backup Service Library VER=3.16.12.29

restoreが開始されました(開始時間: YY-MM-DD)

チャネルt1: 自動バックアップc-XXXXXXXXXX-YYYYMMDD-00からSPFILEをリストアしていま

チャネルt1: 自動バックアップからのSPFILEのリストアが完了しました
restoreが完了しました(完了時間: YY-MM-DD)
チャネル: t1がリリースされました

パラメータファイル取得のためにインスタンスを起動していたので
一旦 インスタンスを停止します。

RMAN> SHUTDOWN IMMEDIATE;

Oracleインスタンスがシャットダウンしました

取得したパラメータファイルを適宜修正(各種パスが異なる場合など)し、
再度 NOMOUNTで起動します。

RMAN> STARTUP NOMOUNT PFILE=C:\app\oracle\product\12.1.0\dbhome_1\dbs\initorcl.o
ra;

ターゲット・データベースに接続しました(起動していません)。
Oracleインスタンスが起動しました

システム・グローバル領域の合計は、 2415919104バイトです。

Fixed Size 3048488バイト
Variable Size 654314456バイト
Database Buffers 1744830464バイト
Redo Buffers 13725696バイト

制御ファイルをリストアします。
コマンド内の ‘c-XXXXXXXXXX-YYYYMMDD-00’ には
制御ファイルが含まれるバックアップ時のハンドルを指定します。

RMAN> RUN {
 ALLOCATE CHANNEL t1
 DEVICE TYPE sbt
 PARMS ‘SBT_LIBRARY=C:\app\oracle\product\12.1.0\dbhome_1\bin\oraopc.dll
 ENV=(OPC_FILE=C:\app\oracle\product\12.1.0\dbhome_1\database\opcorcl.ora)’;
 RESTORE CONTROLFILE
 FROM ‘c-XXXXXXXXXX-YYYYMMDD-00’;
 }

チャネル: t1が割り当てられました
チャネルt1: SID=12 デバイス・タイプ=SBT_TAPE
チャネルt1: Oracle Database Backup Service Library VER=3.16.12.29

restoreが開始されました(開始時間: YY-MM-DD)

チャネルt1: 制御ファイルをリストア中です
チャネルt1: リストアが完了しました。経過時間: 00:00:03
出力ファイル名=C:\APP\ORACLE\ORADATA\ORCL\CONTROLFILE\O1_MF_XXXXXXXX_.CTL
出力ファイル名=C:\APP\ORACLE\FAST_RECOVERY_AREA\ORCL\CONTROLFILE\O1_MF_XXXXXXXX_.CTL
restoreが完了しました(完了時間: YY-MM-DD)
チャネル: t1がリリースされました

制御ファイルがリストアされたので、
MOUNTモードに変更します。

RMAN> ALTER DATABASE MOUNT;

文が処理されました

次はデータファイルをリストアします。
コマンド内の ‘TAGYYYYMMDDTXXXXXX’ には
データファイルが含まれるバックアップ時のタグを指定します。

RMAN> RUN {
 ALLOCATE CHANNEL t1
 DEVICE TYPE sbt
 PARMS ‘SBT_LIBRARY=C:\app\oracle\product\12.1.0\dbhome_1\bin\oraopc.dll
 ENV=(OPC_FILE=C:\app\oracle\product\12.1.0\dbhome_1\database\opcorcl.ora)’;
 RESTORE DATABASE
 FROM TAG ‘TAGYYYYMMDDTXXXXXX’;
 }

チャネル: t1が割り当てられました
チャネルt1: SID=12 デバイス・タイプ=SBT_TAPE
チャネルt1: Oracle Database Backup Service Library VER=3.16.12.29

restoreが開始されました(開始時間: YY-MM-DD)

チャネルt1: データファイル・バックアップ・セットのリストアを開始しています
チャネルt1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルt1: データファイル00001をC:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_SYSTEM_XXXXXXXX_.DBFにリストアしています
チャネルt1: データファイル00003をC:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_SYSAUX_XXXXXXXX_.DBFにリストアしています
チャネルt1: データファイル00005をC:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_UNDOTBS1_XXXXXXXX_.DBFにリストアしています
チャネルt1: データファイル00006をC:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_XXXXXXXX_.DBFにリストアしています
チャネルt1: バックアップ・ピースXXXXXXXX_1_1から読取り中です
チャネルt1: ピース・ハンドル=XXXXXXXX_1_1 タグ=TAGYYYYMMDDTXXXXXX
チャネルt1: バックアップ・ピース1がリストアされました
チャネルt1: リストアが完了しました。経過時間: 00:01:55
restoreが完了しました(完了時間: YY-MM-DD)
チャネル: t1がリリースされました

システム変更番号(SCN)を確認するにあたり、
下記を実行します。

RMAN> RUN {
 ALLOCATE CHANNEL t1
 DEVICE TYPE sbt
 PARMS ‘SBT_LIBRARY=C:\app\oracle\product\12.1.0\dbhome_1\bin\oraopc.dll
 ENV=(OPC_FILE=C:\app\oracle\product\12.1.0\dbhome_1\database\opcorcl.ora)’;
 RESTORE DATABASE PREVIEW;
 }

チャネル: t1が割り当てられました
チャネルt1: SID=12 デバイス・タイプ=SBT_TAPE
チャネルt1: Oracle Database Backup Service Library VER=3.16.12.29

restoreが開始されました(開始時間: YY-MM-DD)

バックアップ・セットのリスト
===================

BS Key Type LV Size Device Type Elapsed Time 終了時間
——- —- — ———- ———– ———— ——–
1 Full 1.51G SBT_TAPE 00:00:31 YY-MM-DD
BPキー: 1 ステータス: AVAILABLE 圧縮: NO タグ: TAGYYYYMMDDTXXXXXX
ハンドル: XXXXXXXX_1_1 メディア: XXXXXXX.storage.oraclecloud.com/v1/Storage-XXXXXXX/oracle-data-s
バックアップ・セット1のデータファイルのリスト
File LV Type Ckp SCN Ckp時間 Name
—- — —- ———- ——– —-
1 Full 2310543 YY-MM-DD C:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_SYSTEM_XXXXXXXX_.DBF
3 Full 2310543 YY-MM-DD C:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_SYSAUX_XXXXXXXX_.DBF
5 Full 2310543 YY-MM-DD C:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_UNDOTBS1_XXXXXXXX_.DBF
6 Full 2310543 YY-MM-DD C:\APP\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_XXXXXXXX_.DBF

SCN 2310543後に生成されたアーカイブ・ログがリポジトリに見つかりません
RMAN-05119: 一貫性のある状態へのリカバリを行うことができません。
メディア・リカバリ開始SCNは2310543です
データファイルのあいまいさをなくすには、SCN 2310543を超えてリカバリを行う必要が
あります
バックアップ・ピースの検証が正常終了しました
restoreが完了しました(完了時間: YY-MM-DD)
チャネル: t1がリリースされました

SCNを 2310543 でリカバリさせるとして、
この番後を指定してリカバリを行います。

RMAN> RUN {
 ALLOCATE CHANNEL t1
 DEVICE TYPE sbt
 PARMS ‘SBT_LIBRARY=C:\app\oracle\product\12.1.0\dbhome_1\bin\oraopc.dll
 ENV=(OPC_FILE=C:\app\oracle\product\12.1.0\dbhome_1\database\opcorcl.ora)’;
 RECOVER DATABASE UNTIL SCN 2310543;
 }

チャネル: t1が割り当てられました
チャネルt1: SID=12 デバイス・タイプ=SBT_TAPE
チャネルt1: Oracle Database Backup Service Library VER=3.16.12.29

recoverが開始されました(開始時間: YY-MM-DD)

メディア・リカバリを開始しています
メディア・リカバリが完了しました。経過時間: 00:00:01

recoverが完了しました(完了時間: YY-MM-DD)
チャネル: t1がリリースされました

RESETLOGS でオープンします。

RMAN> ALTER DATABASE OPEN RESETLOGS;

文が処理されました

インスタンスの状態がOPENになっていることを確認します。

RMAN> select instance_name,status from v$instance;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています

INSTANCE_NAME STATUS
—————- ————
orcl OPEN

インスタンスが正常に起動していることが確認できましたので
RMANを終了します。

RMAN> exit

Recovery Managerが完了しました。

以上で手順は終了です。

いかがでしょうか?
通常のOracle Datbaseのバックアップに使用するRMANを使い、
クラウド上に構築したサーバへ簡単にリストアが実施できたと思います。
Oracle Cloud上へのDBの移行にも使用できそうですね。

次回は Standard Edition 2 にも個別パッチを適用して
バックアップ・リストアを実施してみます。