Oracle Database Backup Cloud Service を使ってみた (DBが Standard Editionの場合)

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

今回は “Oracle Database Backup Cloud Service” を使用して
Oracleデータベースの Standard Edition のバックアップを Oracle Cloud上に取得してみます。

<前提条件>
・バックアップ対象のOracleデータベース(Standard Edition、以降SEに略)の
バージョンが 12.1.0.2 以降であること。
※12.1.0.1.x 以前の場合は 個別パッチの適用が必要となります。
・バックアップ対象のOracleデータベース がアーカイブログモードであること
・OTN または Oracle.com のアカウントを持っていること(モジュールのダウンロードに必要)
・java(1.7以上)がインストール済みであること(モジュールのインストールに必要)
・Oracle Cloud の”Oracle Storage Cloud Service”が使用可能であること(バックアップ先のオブジェクトストレージ)

※詳細な前提条件は下記サイトをご覧ください。
https://docs.oracle.com/cd/E83857_01/paas/db-backup-cloud/csdbb/installing-oracle-database-cloud-backup-module.html#GUID-FCA21247-3DD4-4510-B740-47DBB5506168

<今回の環境>
バックアップ元のデータベース:
・Red Hat Enterprise Linux 7.3
・Oracle Database 12c SE (12.1.0.2)
※前回のブログでは OSがWindows Serverでしたが、今回は Linuxで試してみます。

バックアップ先:
Oracle Cloud Storage Classic (東京リージョン)


1.モジュールのインストール

モジュールのダウンロードにつきましては以前のブログ
Oracle Database Backup Cloud Service を使ってみた
の「1.モジュールのインストール」を参照ください。

ダウンロードした opc_installer.zip をLinuxサーバ上の
任意の場所にアップロードし、展開します(今回は /data)。
※以降は 緑文字⇒コマンドを実行して出力されるメッセージとします。

cd /data
ls -l
-rw-r--r-- 1 root root 891380 11月 3 22:27 opc_installer.zip
unzip opc_installer.zip
Archive: opc_installer.zip
inflating: opc_install.jar
inflating: opc_readme.txt
ls -l
-rw-r--r-- 1 root root 944514 6月 12 2018 opc_install.jar
-rw-r--r-- 1 root root 891380 11月 3 22:27 opc_installer.zip
-rw-r--r-- 1 root root 11093 5月 7 2018 opc_readme.txt

opc_install.jar と opc_readme.txt が作成されていることを確認します。
oracleデータベースの管理者ユーザに変更します。(ここでは oracle ユーザです)

su - oracle

環境変数を確認します。

env | grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1

ORACLE_SID と ORCLE_HOMEは必須の模様ですので、もし設定されていない場合は
下記のように export を使って設定します。
※ここでは ORACLE_SID を orcl としていますが、適宜 環境に合わせてください。

export ORACLE_SID=orcl


モジュールのインストールを行います。

cd /data
java -jar opc_install.jar \
-host https://XXXXXXX.storage.oraclecloud.com/v1/Storage-XXXXXXX \
-opcId "[OracleCloudのログインユーザ名]" \
-opcPass "[OracleCloudのログインパスワード]" \
-walletDir $ORACLE_HOME/dbs/opc_wallet \
-libDir $ORACLE_HOME/lib \
-libPlatform linux64

※-host ⇒オブジェクトストレージのパスです。
 確認方法は以前のブログ
 Oracle Database Backup Cloud Service を使ってみた
 の「※バックアップ先については~」を参照ください
 -opcId ⇒OracleCloudのログインユーザ名
 -opcPass ⇒OracleCloudのログインパスワード

Oracle Database Cloud Backup Module Install Tool, build 12.2.0.1.0DBBKPCSBP_2018-06-12
Oracle Database Cloud Backup Module credentials are valid.
Oracle Database Cloud Backup Module wallet created in directory /u01/app/oracle/product/12.1.0/dbhome_1/dbs/opc_wallet.
Oracle Database Cloud Backup Module initialization file /u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora created.
Downloading Oracle Database Cloud Backup Module Software Library from file opc_linux64.zip.
Download complete.

上記のように表示されれば モジュールのインストールは完了です。


2.バックアップ実行

rmanを起動します。

rman
Recovery Manager: Release 12.1.0.2.0 - Production on 日 MM月 DD HH:MM:SS YYYY
Copyright (c) 1982, 2015, Oracle and/or its affiliates. All rights reserved.


データベースへの接続を行います。

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


データベースがまだ起動していなかったため、起動します。

startup
Oracleインスタンスが起動しました
データベースがマウントされました。
データベースがオープンしました。

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

Fixed Size 2927048バイト
Variable Size 503318072バイト
Database Buffers 75497472バイト
Redo Buffers 5459968バイト

バックアップの設定を確認します。

show all;
db_unique_name ORCLのデータベースにおけるRMAN構成パラメータ:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=$ORACLE_HOME/lib/libopc.so,ENV=(OPC_PFILE=$ORACLE_HOME/dbs/opcorcl.ora)';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/snapcf_orcl.f'; # default

制御ファイルが自動バックアップされるようになっていなかったため、
下記コマンドを実行します。

CONFIGURE CONTROLFILE AUTOBACKUP ON;
新しいRMAN構成パラメータ:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新しいRMAN構成パラメータが格納できました

制御ファイルが自動バックアップされる設定になったことを確認します。

show all;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

バックアップを暗号化するにあたり、パスワードを設定します。
※ここでは XXXXXXXX としています。

SET ENCRYPTION ON IDENTIFIED BY 'XXXXXXXX' ONLY;
実行コマンド: SET encryption

下記コマンドによりバックアップの設定を行います。

CONFIGURE CHANNEL DEVICE TYPE sbt
PARMS='SBT_LIBRARY=$ORACLE_HOME/lib/libopc.so,
ENV=(OPC_PFILE=$ORACLE_HOME/dbs/opcorcl.ora)';
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
新しいRMAN構成パラメータ:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=$ORACLE_HOME/lib/libopc.so,ENV=(OPC_PFILE=$ORACLE_HOME/dbs/opcorcl.ora)';
新しいRMAN構成パラメータが格納できました

それでは、バックアップを実行します。

BACKUP DEVICE TYPE sbt DATABASE;
backupが開始されました(開始時間: XX-XX-XX)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backupコマンドがDD/MM/YYYY HH:MM:SSで失敗しました
ORA-19554: デバイスの割当て中にエラーが発生しました。デバイス型: SBT_TAPE、デバイス名:
ORA-27211: メディア管理ライブラリのロードに失敗しました
Additional information: 4058

失敗しました…。ライブラリのロードに失敗とのことです。
先ほどの “CONFIGURE CHANNEL ~” コマンド内にて
“$ORACLE_HOME/lib” などと環境変数を使用していることが原因のようですので
フルパスで指定して実行してみます。

CONFIGURE CHANNEL DEVICE TYPE sbt
PARMS='SBT_LIBRARY=/u01/app/oracle/product/12.1.0/dbhome_1/lib/libopc.so,
ENV=(OPC_PFILE=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora)';
古いRMAN構成パラメータ:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=$ORACLE_HOME/lib/libopc.so,ENV=(OPC_PFILE=$ORACLE_HOME/dbs/opcorcl.ora)';
新しいRMAN構成パラメータ:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/u01/app/oracle/product/12.1.0/dbhome_1/lib/libopc.so,ENV=(OPC_PFILE=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora)';
新しいRMAN構成パラメータが格納できました

再度、バックアップを実行します。

BACKUP DEVICE TYPE sbt DATABASE;
backupが開始されました(開始時間: XX-XX-XX)
チャネル: ORA_SBT_TAPE_1が割り当てられました
チャネルORA_SBT_TAPE_1: SID=69 デバイス・タイプ=SBT_TAPE
チャネルORA_SBT_TAPE_1: Oracle Database Backup Service Library VER=12.2.0.2
チャネルORA_SBT_TAPE_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_SBT_TAPE_1: バックアップ・セットにデータファイルを指定しています
入力データファイル・ファイル番号=00001 名前=/u01/app/oracle/oradata/orcl/system01.dbf
入力データファイル・ファイル番号=00003 名前=/u01/app/oracle/oradata/orcl/sysaux01.dbf
入力データファイル・ファイル番号=00004 名前=/u01/app/oracle/oradata/orcl/undotbs01.dbf
入力データファイル・ファイル番号=00006 名前=/u01/app/oracle/oradata/orcl/users01.dbf
チャネルORA_SBT_TAPE_1: ピース1(XX-XX-XX)を起動します
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backupコマンド(ORA_SBT_TAPE_1チャネル上)がDD/MM/YYYY HH:MM:SSで失敗しました
ORA-19506: シーケンシャル・ファイルの作成に失敗しました。ファイル名="03tn7e9h_1_1"、パラメータ=""
ORA-27028: skgfqcre: sbtbackupからエラーが戻されました。
ORA-19511: RMAN以外の、メディア・マネージャまたはベンダー固有の障害。エラー・テキスト:
KBHS-01404: See trace file /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/log/sbtio_3759_XXXXXXXXXXXXXXX.log for d

別のエラーが出るようになりました…。
フルパスで指定したのはよかった模様ですが、
今度は trace fileを見よ、とのことです。
実際にファイルを確認すると下記の記載がありました。


You are not allowed to perform a tagging operation on a container that has objects in it, accountName: Storage-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3759_XXXXXXXXXXXXXXX; Sun, 13 Jan 2019 HH:MM:SS
KBHS-01404: See trace file /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/log/sbtio_3759_XXXXXXXXXXXXXXX.log for details
KBHS-00719: Error 'unknown'; You are not allowed to perform a tagging operation on a container that has objects in it, accountName: Storage-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
KBHS-00700: HTTP response error 'Conflict'

「container that has objects in it」とのことで コンテナの指定がよくない模様です。
そこで、バックアップ先のコンテナを指定してみます。
指定するには次のファイル

/u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora
の末尾へ下記を追加します。(コンテナ名は LINUX_BK_TEST としています)
OPC_CONTAINER=LINUX_BK_TEST

また、オブジェクトストレージに 上記の LINUX_BK_TEST コンテナも手動で作成しておきます。
※コンテナの作成方法は 以前のブログ
Storage Classic にファイルバックアップをとってみた
の「1.オブジェクトストレージの作成」を参照ください。

再度 バックアップを実行してみます。

CONFIGURE CHANNEL DEVICE TYPE sbt
PARMS='SBT_LIBRARY=/u01/app/oracle/product/12.1.0/dbhome_1/lib/libopc.so,
ENV=(OPC_PFILE=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora)';
古いRMAN構成パラメータ:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/u01/app/oracle/product/12.1.0/dbhome_1/lib/libopc.so,ENV=(OPC_PFILE=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora)';
新しいRMAN構成パラメータ:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/u01/app/oracle/product/12.1.0/dbhome_1/lib/libopc.so,ENV=(OPC_PFILE=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/opcorcl.ora)';
新しいRMAN構成パラメータが格納できました
チャネル: ORA_SBT_TAPE_1がリリースされました
BACKUP DEVICE TYPE sbt DATABASE;
backupが開始されました(開始時間: XX-XX-XX)
チャネル: ORA_SBT_TAPE_1が割り当てられました
チャネルORA_SBT_TAPE_1: SID=69 デバイス・タイプ=SBT_TAPE
チャネルORA_SBT_TAPE_1: Oracle Database Backup Service Library VER=12.2.0.2
チャネルORA_SBT_TAPE_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_SBT_TAPE_1: バックアップ・セットにデータファイルを指定しています
入力データファイル・ファイル番号=00001 名前=/u01/app/oracle/oradata/orcl/system01.dbf
入力データファイル・ファイル番号=00003 名前=/u01/app/oracle/oradata/orcl/sysaux01.dbf
入力データファイル・ファイル番号=00004 名前=/u01/app/oracle/oradata/orcl/undotbs01.dbf
入力データファイル・ファイル番号=00006 名前=/u01/app/oracle/oradata/orcl/users01.dbf
チャネルORA_SBT_TAPE_1: ピース1(XX-XX-XX)を起動します
チャネルORA_SBT_TAPE_1: ピース1(XX-XX-XX)が完了しました
ピース・ハンドル=04tn7fg1_1_1 タグ=TAGXXXXXXXXTXXXXXX コメント=API Version 2.0,MMS Version 12.2.0.2
チャネルORA_SBT_TAPE_1: バックアップ・セットが完了しました。経過時間: HH:MM:SS
backupが完了しました(完了時間: XX-XX-XX)

Control File and SPFILE Autobackupが開始されました(開始時間: XX-XX-XX)
ピース・ハンドル=c-1525172311-YYYYMMDD-00 コメント=API Version 2.0,MMS Version 12.2.0.2
Control File and SPFILE Autobackupが完了しました(完了時間: XX-XX-XX)

今度は正常にバックアップを取得できました!

バックアップにあたり、コンテナを特に指定していないと
“oracle-data-storageb-1″というコンテナを使おうとする模様ですが、
既に別のデータベースのバックアップが取得されていたため、
明示的に別のコンテナを指定する必要があったようです。

今後は事前に バックアップ先のコンテナ名を決めて作成しておき、
指定するのがよさそうですね。


次のコマンドにてバックアップの結果を確認します。

list backup;

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

BS Key Type LV Size Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
1 Full 1.18G SBT_TAPE 00:05:52 XX-XX-XX
BPキー: 1 ステータス: AVAILABLE 圧縮: NO タグ: TAGXXXXXXXXTXXXXXX
ハンドル: 04tn7fg1_1_1 メディア: XXXXXXX.storage.oraclecloud.com/v1/Storage-XXXXXXX/LINUX_BK_TEST
バックアップ・セット1のデータファイルのリスト
File LV Type Ckp SCN Ckp時間 Name
---- -- ---- ---------- -------- ----
1 Full 1700616 XX-XX-XX /u01/app/oracle/oradata/orcl/system01.dbf
3 Full 1700616 XX-XX-XX /u01/app/oracle/oradata/orcl/sysaux01.dbf
4 Full 1700616 XX-XX-XX /u01/app/oracle/oradata/orcl/undotbs01.dbf
6 Full 1700616 XX-XX-XX /u01/app/oracle/oradata/orcl/users01.dbf

BS Key Type LV Size Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
2 Full 9.75M SBT_TAPE 00:00:04 XX-XX-XX
BPキー: 2 ステータス: AVAILABLE 圧縮: NO タグ: TAGXXXXXXXXTXXXXXX
ハンドル: c-1525172311-YYYYMMDD-00 メディア: XXXXXXX.storage.oraclecloud.com/v1/Storage-XXXXXXX/LINUX_BK_TEST
SPFILEも含まれます: 修正時間: XX-XX-XX
SPFILE db_unique_name: ORCL
含まれている制御ファイル: Ckp SCN: 1700813 Ckp時間: XX-XX-XX


今回は 1.18 GBのバックアップに 5分52秒でした。(3.43MB/sec)
こちらは やはり回線の太さに比例すると思われます。


最後に、今回のデータベースのエディション、バージョンも確認しておきます。

select * from v$version;
BANNER
--------------------------------------------------------------------------------
CON_ID
----------
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
0
PL/SQL Release 12.1.0.2.0 - Production
0
CORE 12.1.0.2.0 Production
0
TNS for Linux: Version 12.1.0.2.0 - Production
0
NLSRTL Version 12.1.0.2.0 - Production
0

もちろん Standard Edition でした。

RMANを終了します。

exit

Recovery Managerが完了しました。

以上で作業は終了です。

いかがでしょうか?
Standard Edition でもRMANを使って、簡単にクラウドへDBバックアップを取得することができたと思います。
もし DBのバックアップ先に悩むことがあった場合、
“Oracle Database Backup Cloud Service” を検討されてみてはいかがでしょうか?