はじめに
Oracle CloudのOracle Databaseサービス(Base Database/Exadata Database Service[ExaDB-D])のバックアップを東京リージョンと大阪リージョンに取得して、バックアップからデータベースを作成する場合、ユーザ管理のObject Storageバケットにバックアップを取得し、Object Storageレプリケーション機能を使って大阪リージョンにバックアップをコピーします。
今回は、大阪リージョンにリストアをやってみました。
注:Database Serviceの自動バックアップはOracle管理のObject Storageに取得され、別リージョンへコピーなどはできません。
事前準備
バックアップの取得は、Oracle Database Cloud Backup ModuleでデータベースをOCI Object Storageにバックアップする方法 などを参考に取得ください。
別リージョンでリストアする場合は、Object Storageのレプリケーション・ポリシーが有効に設定されたバケットに取得ください。
バックアップ
CONFIGURE CONTROLFILE AUTOBACKUP ON;
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
注1:シードPDB(PDB$SEED)のデータファイルもバックアップに含まれていることを確認ください。
RMANの LIST BACKUP BY FILE;
コマンドなどで確認できます。
注2:dbid を確認します。(リストア時に使用するためメモ)
$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Sat Jan 14 10:00:00 2023
Version 19.17.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB (DBID=0000000000)
RMAN>
TDE ウォレットの取得
透過的データベース暗号化(TDE)が有効になっているデータベースのバックアップをリストアして利用するためには、TDEウォレットが必要になります。
バックアップしたデータベースのTDEウォレットを取得します。TDE ウォレットが格納されている場所は以下のSQLで確認できます。
SQL> select WRL_PARAMETER from V$ENCRYPTION_WALLET;
TDE ウォレットが格納されているディレクトリから cwallet.sso
と ewallet.p12
を取得します。
(オプション)初期化パラメータの確認
バックアップしたデータベースの初期化パラメータ設定をファイルに取得し、リストア先のデータベースで参考にすることもできます。
create pfile='/home/oracle/work/backup/initdb.ora' from memory;
create pfile='/home/oracle/work/backup/initspfile.ora' from spfile;
Base Databaseの準備
リストア先となるBase Database を準備します。
Base Databaseの新規作成
DBシステムの作成を参考にリストア先となるBase Databaseを新規に作成します。
- 「使用可能なデータ・ストレージ(GB)」をバックアップがリストアできるサイズに設定します。(バックアップしたデータベースと同等のサイズ)
- 「データベース名」は、バックアップしたデータベースと同じにします。(違う名前も可能ですが、その場合 db_name の変更など追加の手順が必要になります。)
Oracle Database Cloud Backup モジュール配置
新規作成した Base Database (DBシステム)にOracle Database Cloud Backup モジュールを配置します。
Oracle Database Cloud Backup Moduleのダウンロード
このページからOracle Database Cloud Backup Moduleをダウンロードし、DBシステムのノードに転送します。
ダウンロードしたzipファイルを解凍し、java コマンドでインストールします。インストール時のパラメータについては、こちらを参考にしてください。
$ unzip opc_installer.zip
$ cd opc_installer/oci_installer/
$ java -jar oci_install.jar \
-host https://objectstorage.ap-osaka-1.oraclecloud.com \
-pvtKeyFile /key/private.pem \
-pubFingerPrint fa:56:8a:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX \
-uOCID ocid1.user.oc1..aaaaaaaa \
-tOCID ocid1.tenancy.oc1..aaaaaaaa \
-cOCID ocid1.compartment.oc1..aaaaaaaa \
-walletDir /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs \
-libDir /u01/app/oracle/product/19.0.0.0/dbhome_1/lib \
-bucket dbbackup
Oracle Database Cloud Backup Module Install Tool, build 19.3.0.0.0DBBKPCSBP_2019-10-16
Oracle Database Cloud Backup Module credentials are valid.
Backups would be sent to bucket exabackup.
Oracle Database Cloud Backup Module wallet created in directory /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs.
Oracle Database Cloud Backup Module initialization file /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/opcDB2.ora created.
Downloading Oracle Database Cloud Backup Module Software Library from Oracle Cloud Infrastructure.
Download complete.
TDE ウォレットをリストア
バックアップしたデータベースで取得したTDE ウォレットをリストア先のDBシステム上にリストアします。
リストア先は、 /opt/oracle/dcs/commonstore/wallets/<Base DBのdb_unique_name>/tde/
になります。
( select WRL_PARAMETER from V$ENCRYPTION_WALLET;
で確認できます。 )
$ cd /opt/oracle/dcs/commonstore/wallets/DB_kix000/tde/
$ mv cwallet.sso cwallet.sso.back
$ mv ewallet.p12 ewallet.p12.back
$ cp $HOME/backup/cwallet.sso .
$ cp $HOME/backup/ewallet.p12 .
初期作成されたデータベースの停止/削除
削除対象のファイルの確認
以下のSQLを実行し、ASMからファイルを削除するコマンドを生成します。
set heading off linesize 999 pagesize 0 feedback off trimspool on
spool /tmp/cdb_remove_files.sh
select 'asmcmd rm '||name from v$datafile
union all
select 'asmcmd rm '||name from v$tempfile
union all
select 'asmcmd rm '||member from v$logfile;
spool off
実行例
SQL> select 'asmcmd rm '||name from v$datafile
2 union all
3 select 'asmcmd rm '||name from v$tempfile
4 union all
5 select 'asmcmd rm '||member from v$logfile;
asmcmd rm +DATA/DB_KIX000/DATAFILE/system.260.1126086617
asmcmd rm +DATA/DB_KIX000/DATAFILE/sysaux.261.1126086651
asmcmd rm +DATA/DB_KIX000/DATAFILE/undotbs1.262.1126086667
asmcmd rm +DATA/DB_KIX000/EB3A921CAD1A96F8E0538C01F40A7C7C/DATAFILE/system.264.1126086767
asmcmd rm +DATA/DB_KIX000/EB3A921CAD1A96F8E0538C01F40A7C7C/DATAFILE/sysaux.265.1126086767
asmcmd rm +DATA/DB_KIX000/EB3A921CAD1A96F8E0538C01F40A7C7C/DATAFILE/undotbs1.266.1126086767
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/system.273.1126087307
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/sysaux.270.1126087319
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/undotbs1.275.1126087477
asmcmd rm +DATA/DB_KIX000/DATAFILE/users.271.1126087469
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/users.274.1126087469
asmcmd rm +DATA/DB_KIX000/TEMPFILE/temp.263.1126086751
asmcmd rm +DATA/DB_KIX000/F23751912B4D0D30E0532400000A8412/TEMPFILE/temp.267.1126086795
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/TEMPFILE/temp.272.1126087305
asmcmd rm +RECO/DB_KIX000/ONLINELOG/group_3.259.1126086707
asmcmd rm +RECO/DB_KIX000/ONLINELOG/group_2.258.1126086707
asmcmd rm +RECO/DB_KIX000/ONLINELOG/group_1.257.1126086707
SQL> spool off
/tmp/cdb_remove_files.sh ファイルから asmcdm
で始まる行以外を削除します。
asmcmd rm +DATA/DB_KIX000/DATAFILE/system.260.1126086617
asmcmd rm +DATA/DB_KIX000/DATAFILE/sysaux.261.1126086651
asmcmd rm +DATA/DB_KIX000/DATAFILE/undotbs1.262.1126086667
asmcmd rm +DATA/DB_KIX000/EB3A921CAD1A96F8E0538C01F40A7C7C/DATAFILE/system.264.1126086767
asmcmd rm +DATA/DB_KIX000/EB3A921CAD1A96F8E0538C01F40A7C7C/DATAFILE/sysaux.265.1126086767
asmcmd rm +DATA/DB_KIX000/EB3A921CAD1A96F8E0538C01F40A7C7C/DATAFILE/undotbs1.266.1126086767
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/system.273.1126087307
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/sysaux.270.1126087319
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/undotbs1.275.1126087477
asmcmd rm +DATA/DB_KIX000/DATAFILE/users.271.1126087469
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/DATAFILE/users.274.1126087469
asmcmd rm +DATA/DB_KIX000/TEMPFILE/temp.263.1126086751
asmcmd rm +DATA/DB_KIX000/F23751912B4D0D30E0532400000A8412/TEMPFILE/temp.267.1126086795
asmcmd rm +DATA/DB_KIX000/F2376EEA6C534070E0532400000AD9BF/TEMPFILE/temp.272.1126087305
asmcmd rm +RECO/DB_KIX000/ONLINELOG/group_3.259.1126086707
asmcmd rm +RECO/DB_KIX000/ONLINELOG/group_2.258.1126086707
asmcmd rm +RECO/DB_KIX000/ONLINELOG/group_1.257.1126086707
データベースの停止
初期作成されたデータベースを停止します。(-db パラメータには db_unique_name を指定します。)
$ srvctl stop database -db DB_KIX000 -stopoption immediate
ASMファイルの削除
生成した asmcmd コマンドを実行しASMファイルを削除します。
$ chmod 777 /tmp/cdb_remove_files.sh
$ sh /tmp/cdb_remove_files.sh
(必要に応じて)初期化パラメータを変更します。
リカバリの準備
制御ファイルのリストア
バックアップから制御ファイルをリストアします。
nomount でデータベースを起動
$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jan 14 10:00:00 2023
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 6979317824 bytes
Fixed Size 9150528 bytes
Variable Size 1191182336 bytes
Database Buffers 5637144576 bytes
Redo Buffers 141840384 bytes
SQL> quit
Disconnected from Oracle Database 19c EE High Perf Release 19.0.0.0.0 – Production
制御ファイルのリストア
rman で restore controlfile from autobackup
コマンドでバックアップから制御ファイルをリストアします。
set dbid でバックアップした際に確認したバックアップしたデータベースの dbid を指定します。
$ rman target /
set dbid 0000000000
SET ENCRYPTION ON;
set controlfile autobackup format for device type sbt to '%F';
run {
set dbid 0000000000
allocate channel t1 type 'sbt_tape' parms 'SBT_LIBRARY=/u01/app/oracle/product/19.0.0.0/dbhome_1/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/opcDB.ora)';
restore controlfile from autobackup;
}
実行例
$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Sat Jan 14 10:00:00 2023
Version 19.17.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB2 (not mounted)
RMAN> set dbid 0000000000
executing command: SET DBID
RMAN> SET ENCRYPTION ON;
executing command: SET encryption
using target database control file instead of recovery catalog
RMAN> set controlfile autobackup format for device type sbt to '%F';
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
RMAN> run {
2> set dbid 0000000000
3> allocate channel t1 type 'sbt_tape' parms 'SBT_LIBRARY=/u01/app/oracle/product/19.0.0.0/dbhome_1/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/opcDB.ora)';
4> restore controlfile from autobackup;
5>
6> }
restore controlfile from autobackup
コマンドは7日前までのバックアップから制御ファイルをリストア可能です。
それより前のバックアップの場合 until time
句を追加します。
run {
set dbid 0000000000
allocate channel t1 type 'sbt_tape' parms 'SBT_LIBRARY=/u01/app/oracle/product/19.0.0.0/dbhome_1/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/opcDB.ora)';
restore controlfile from autobackup until time "TO_DATE('20230114:00:00','YYYYMMDD:HH24:MI')";
}
データベースのマウント
alter database mount; 文でデータベースをマウントします。
RMAN> alter database mount;
Statement processed
RMAN> quit
Recovery Manager complete.
REDOログファイル/データファイルファイルの位置の修正
リストアした制御ファイルに記載されているREDOログファイル/データファイルの位置を確認します。
リストア先のディスクグループ、db_unique_nameと違う場合、位置を変更します。
REDOログファイルの確認
set lines 200 pages 200
col member for a100
select member from v$logfile;
実行例 (2ノードRAC データベースのバックアップの場合)
SQL> set lines 200 pages 200
SQL> col member for a100
SQL> select member from v$logfile;
MEMBER
-------------------------------------------
+DATAC1/DB/ONLINELOG/group_4.310.1123434047
+DATAC1/DB/ONLINELOG/group_3.311.1123434047
+DATAC1/DB/ONLINELOG/group_2.309.1123434047
+DATAC1/DB/ONLINELOG/group_1.308.1123434047
+DATAC1/DB/ONLINELOG/group_5.306.1123434575
+DATAC1/DB/ONLINELOG/group_6.319.1123434577
+DATAC1/DB/ONLINELOG/group_7.320.1123434579
+DATAC1/DB/ONLINELOG/group_8.321.1123434581
8 rows selected.
- REDOログ名をバックアップ(+DATAC1/DB)からリストア先のDB名(DB_kix000)に変更するためのSQLを生成し実行します。
(以下のSQLは 環境にあわせて修正ください)
set lines 200 pages 200
select 'alter database rename file '||chr(39)||member||chr(39)||' to '||chr(39)||replace(member, 'DATAC1/DB/', 'RECO/DB_kix000/')||chr(39)||';' from v$logfile;
実行例
SQL> set lines 200 pages 200
SQL> select 'alter database rename file '||chr(39)||member||chr(39)||' to '||chr(39)||replace(member, 'DATAC1/DB/', 'RECO/DB_kix000/')||chr(39)||';' from v$logfile;
'ALTERDATABASERENAMEFILE'||CHR(39)||MEMBER||CHR(39)||'TO'||CHR(39)||REPLACE(MEMBER,'DATAC1/DB/','RECO/DB_kix000/')||CHR(39)||';'
-----------------------------------------------------------------------------------------------------------------------------------
alter database rename file '+DATAC1/DB/ONLINELOG/group_4.310.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_4.310.1123434047';
alter database rename file '+DATAC1/DB/ONLINELOG/group_3.311.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_3.311.1123434047';
alter database rename file '+DATAC1/DB/ONLINELOG/group_2.309.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_2.309.1123434047';
alter database rename file '+DATAC1/DB/ONLINELOG/group_1.308.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_1.308.1123434047';
alter database rename file '+DATAC1/DB/ONLINELOG/group_5.306.1123434575' to '+RECO/DB_kix000/ONLINELOG/group_5.306.1123434575';
alter database rename file '+DATAC1/DB/ONLINELOG/group_6.319.1123434577' to '+RECO/DB_kix000/ONLINELOG/group_6.319.1123434577';
alter database rename file '+DATAC1/DB/ONLINELOG/group_7.320.1123434579' to '+RECO/DB_kix000/ONLINELOG/group_7.320.1123434579';
alter database rename file '+DATAC1/DB/ONLINELOG/group_8.321.1123434581' to '+RECO/DB_kix000/ONLINELOG/group_8.321.1123434581';
8 rows selected.
生成された alter database
文を実行します。
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_4.310.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_4.310.1123434047';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_3.311.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_3.311.1123434047';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_2.309.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_2.309.1123434047';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_1.308.1123434047' to '+RECO/DB_kix000/ONLINELOG/group_1.308.1123434047';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_5.306.1123434575' to '+RECO/DB_kix000/ONLINELOG/group_5.306.1123434575';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_6.319.1123434577' to '+RECO/DB_kix000/ONLINELOG/group_6.319.1123434577';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_7.320.1123434579' to '+RECO/DB_kix000/ONLINELOG/group_7.320.1123434579';
Database altered.
SQL> alter database rename file '+DATAC1/DB/ONLINELOG/group_8.321.1123434581' to '+RECO/DB_kix000/ONLINELOG/group_8.321.1123434581';
Database altered.
SQL>
データファイルの確認
col name for a100
select file#, name from v$datafile order by file#;
実行例(バックアップにはSeed PDBと2つのPDBがあった)
SQL> col name for a100
SQL> select file#, name from v$datafile order by file#;
FILE# NAME
---------- ----------------------------------------------------------------------------------------------------
1 +DATAC1/DB/DATAFILE/system.304.1123434355
2 +DATAC1/DB/EB390E92B92D64A7E053915446647C45/DATAFILE/system.313.1123434107
3 +DATAC1/DB/DATAFILE/sysaux.318.1123434341
4 +DATAC1/DB/EB390E92B92D64A7E053915446647C45/DATAFILE/sysaux.314.1123434107
5 +DATAC1/DB/DATAFILE/undotbs1.303.1123434369
6 +DATAC1/DB/EB390E92B92D64A7E053915446647C45/DATAFILE/undotbs1.315.1123434107
7 +DATAC1/DB/DATAFILE/users.305.1123434383
8 +DATAC1/DB/DATAFILE/undotbs2.317.1123434341
9 +DATAC1/DB/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/system.329.1123434727
10 +DATAC1/DB/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/sysaux.323.1123434735
11 +DATAC1/DB/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/undotbs1.324.1123434741
12 +DATAC1/DB/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/undo_2.325.1123434747
13 +DATAC1/DB/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/users.328.1123434727
14 +DATAC1/DB/EFD2343FB5691E64E0537F00000A804A/DATAFILE/system.331.1123485889
15 +DATAC1/DB/EFD2343FB5691E64E0537F00000A804A/DATAFILE/sysaux.332.1123485889
16 +DATAC1/DB/EFD2343FB5691E64E0537F00000A804A/DATAFILE/undotbs1.333.1123485889
17 +DATAC1/DB/EFD2343FB5691E64E0537F00000A804A/DATAFILE/undo_2.334.1123485889
18 +DATAC1/DB/EFD2343FB5691E64E0537F00000A804A/DATAFILE/users.335.1123485889
18 rows selected.
- データファイル名をバックアップ(+DATA/DB)からリストア先のDB名(DB_kix000)に変更するrmanコマンドを生成します。
(以下のSQLは 環境にあわせて修正ください)
select 'set newname for datafile '||file#||' to '||chr(39)||replace(name, 'DATAC1/DB', 'DATA/DB_kix000')||chr(39)||';' from v$datafile;
実行例
SQL> select 'set newname for datafile '||file#||' to '||chr(39)||replace(name, 'DATAC1/DB', 'DATA/DB_kix000')||chr(39)||';' from v$datafile;
'SETNEWNAMEFORDATAFILE'||FILE#||'TO'||CHR(39)||REPLACE(NAME,'DATAC1/DB','DATA/DB_kix000')||CHR(39)||';'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set newname for datafile 1 to '+DATA/DB_kix000/DATAFILE/system.304.1123434355';
set newname for datafile 2 to '+DATA/DB_kix000/EB390E92B92D64A7E053915446647C45/DATAFILE/system.313.1123434107';
set newname for datafile 3 to '+DATA/DB_kix000/DATAFILE/sysaux.318.1123434341';
set newname for datafile 4 to '+DATA/DB_kix000/EB390E92B92D64A7E053915446647C45/DATAFILE/sysaux.314.1123434107';
set newname for datafile 5 to '+DATA/DB_kix000/DATAFILE/undotbs1.303.1123434369';
set newname for datafile 6 to '+DATA/DB_kix000/EB390E92B92D64A7E053915446647C45/DATAFILE/undotbs1.315.1123434107';
set newname for datafile 7 to '+DATA/DB_kix000/DATAFILE/users.305.1123434383';
set newname for datafile 8 to '+DATA/DB_kix000/DATAFILE/undotbs2.317.1123434341';
set newname for datafile 9 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/system.329.1123434727';
set newname for datafile 10 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/sysaux.323.1123434735';
set newname for datafile 11 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/undotbs1.324.1123434741';
set newname for datafile 12 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/undo_2.325.1123434747';
set newname for datafile 13 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/users.328.1123434727';
set newname for datafile 14 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/system.331.1123485889';
set newname for datafile 15 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/sysaux.332.1123485889';
set newname for datafile 16 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/undotbs1.333.1123485889';
set newname for datafile 17 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/undo_2.334.1123485889';
set newname for datafile 18 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/users.335.1123485889';
18 rows selected.
SQL> quit
Disconnected from Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
リストアとリカバリ
バックアップのリストア
生成した set newname 文を利用してバックアップをリストアします。
$ rman target /
RMAN>
SET ENCRYPTION ON;
run {
allocate channel t1 type 'sbt_tape' parms 'SBT_LIBRARY=/u01/app/oracle/product/19.0.0.0/dbhome_1/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/opcDB.ora)';
set newname for datafile 1 to '+DATA/DB_kix000/DATAFILE/system.304.1123434355';
set newname for datafile 2 to '+DATA/DB_kix000/EB390E92B92D64A7E053915446647C45/DATAFILE/system.313.1123434107';
set newname for datafile 3 to '+DATA/DB_kix000/DATAFILE/sysaux.318.1123434341';
set newname for datafile 4 to '+DATA/DB_kix000/EB390E92B92D64A7E053915446647C45/DATAFILE/sysaux.314.1123434107';
set newname for datafile 5 to '+DATA/DB_kix000/DATAFILE/undotbs1.303.1123434369';
set newname for datafile 6 to '+DATA/DB_kix000/EB390E92B92D64A7E053915446647C45/DATAFILE/undotbs1.315.1123434107';
set newname for datafile 7 to '+DATA/DB_kix000/DATAFILE/users.305.1123434383';
set newname for datafile 8 to '+DATA/DB_kix000/DATAFILE/undotbs2.317.1123434341';
set newname for datafile 9 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/system.329.1123434727';
set newname for datafile 10 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/sysaux.323.1123434735';
set newname for datafile 11 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/undotbs1.324.1123434741';
set newname for datafile 12 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/undo_2.325.1123434747';
set newname for datafile 13 to '+DATA/DB_kix000/EFC648AED3D47FF5E0537F00000ACF7D/DATAFILE/users.328.1123434727';
set newname for datafile 14 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/system.331.1123485889';
set newname for datafile 15 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/sysaux.332.1123485889';
set newname for datafile 16 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/undotbs1.333.1123485889';
set newname for datafile 17 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/undo_2.334.1123485889';
set newname for datafile 18 to '+DATA/DB_kix000/EFD2343FB5691E64E0537F00000A804A/DATAFILE/users.335.1123485889';
restore database;
switch datafile all;
recover database until available redo;
release channel t1;
}
コマンド結果
allocated channel: t1
channel t1: SID=185 device type=SBT_TAPE
channel t1: Oracle Database Backup Service Library VER=21.0.0.1
executing command: SET NEWNAME
<< 中略 >>
channel t1: restored backup piece 1
channel t1: restore complete, elapsed time: 00:00:07
Finished restore at 14-JAN-23
datafile 1 switched to datafile copy
input datafile copy RECID=39 STAMP=1-00000000 file name=+DATA/DB_KIX000/DATAFILE/DATAFILE/system.289.1126089443
<< 中略 >>
starting media recovery
<< 中略 >>
Finished recover at 14-JAN-23
released channel: t1
block change trackingの修正
バックアップしたデータベースでブロック変更トラッキングが有効になっている場合、ブロック変更トラッキング・ファイルのディレクトリが作成したBase Databaseと違う場合があります。
今回は作成したBase Databaseのディレクトリを使用するように修正します。
alter database disable BLOCK CHANGE TRACKING;
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA';
実行例
RMAN> alter database disable BLOCK CHANGE TRACKING;
Statement processed
RMAN> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA';
Statement processed
Databaseのオープン
resetlogs付でデータベースをオープンします。
alter database open resetlogs ;
実行例
RMAN> alter database open resetlogs ;
Statement processed
RMAN> quit
Recovery Manager complete.
後処理
各PDBのオープン
リストア直後は、PDBがオープンしていない場合があります。
それぞれのPDBをオープンします。
また、次回起動時は自動オープンするように状態を保存します。
$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jan 14 10:00:00 2023
Version 19.17.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB2 MOUNTED
SQL> alter pluggable database pdb1 open;
Pluggable database altered.
SQL> alter pluggable database pdb2 open;
Pluggable database altered.
SQL> alter pluggable database all save state;
Pluggable database altered.
SQL> quit
Disconnected from Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.17.0.0.0
再起動後の自動起動の確認
ノードを再起動し、データベースの起動、PDBのオープンを確認します。
あわせて、各クライアントから接続できることを確認します。
接続できない場合、リスナーの状態、クライアントのtnsnames.oraの設定を確認します。
(オプション) REDOログファイルの最適化
今回は、2ノードRAC構成のデータベースバックアップをシングルインスタンスのデータベースにリストアしました。
Thread 2 のREDOロググループは利用しないので削除することが可能です。
v$log ビューを確認し削除可能なREDOロググループを確認し、削除します。
SQL> select * from V$LOG;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- ---------- --- ----------
1 1 5 4194304000 512 1 NO CURRENT
2 1 2 4194304000 512 1 YES ACTIVE
3 1 3 4194304000 512 1 YES ACTIVE
4 1 4 4194304000 512 1 YES ACTIVE
5 2 1 4194304000 512 1 YES INACTIVE
6 2 0 4194304000 512 1 YES UNUSED
7 2 0 4194304000 512 1 YES UNUSED
8 2 0 4194304000 512 1 YES UNUSED
8 rows selected.
SQL> alter database disable thread 2;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
SQL> alter database drop logfile group 6;
Database altered.
SQL> alter database drop logfile group 7;
Database altered.
SQL> alter database drop logfile group 8;
Database altered.
(オプション) データベースのクローン
リストアしたデータベースでは、プラガブル・データベースの状態がWebコンソールに反映されていません。
(実際はPDB1/PDB2の2つのPDBがあるにもかかわらずWebコンソール上は1つのみ)
DBシステムをクローンすることで、クローン先のデータベースのPDBはWebコンソールに反映されます。
クローンされたDBシステムのデータベースを確認
実際と同様にPDB1/PDB2の2つが表示されました。
おわりに
RMANバックアップを使用したObject Storageからのデータベースのリカバリができました。