[Oracle Cloud] Base DatabaseへOracle Database Cloud Backup Moduleのインストール (2024/02/04)

# はじめに
Oracle CloudのOracle Databaseサービス（Base Database/Exadata Database Service[ExaDB-D])のバックアップをユーザ管理のObject Storageバケットにバックアップを取得するには、Oracle Database Cloud Backup Moduleをインストールする必要があります。インストール方法のマニュアルが新しく更新されたので、新しい方法でインストールしてみました。

# RMANを使用したObject Storageへのデータベースのバックアップ
[Back Up a Database to Object Storage Using RMAN](https://docs.oracle.com/en-us/iaas/base-database/doc/back-database-object-storage-using-rman.html)のマニュアル記載が更新されています。

### ユーザ管理のObject Storageへのバックアップ
Base Databaseのバックアップをユーザ管理のObject Storageサービスにバックアップするステップ

- バックアップ用のObject Storageバケットを作成
- Oracle Database Cloud Backup Moduleをインストール
- RMANを構成

# 事前設定

- バックアップするDBシステムとデータベース
    - 今回はOracle Linux8で動作しているDBシステム・バージョン:19.21.0.0.0を使用
- DBシステムのクラウド・ネットワーク(VCN)から、Object Storageへのアクセス権構成
    - DBシステムと同じリージョンでのObject Storageアクセスの場合: Service Gatewayの使用を推奨
    - DBシステムとは異なるリージョンのObject Storageアクセスの場合: Internet Gatewatを使用
- バックアップ保存先として使用する既存のObject Storageバケット
- OCIによって生成された認証トークン
    - コンソールまたはIAM APIを使用して、認証トークンを生成
- ユーザー(Backup Moduleのインストール時および使用時に指定)には、Object Storageへのアクセス権

# DB SystemへのBackup Moduleのインストール

- DBシステムにSSH接続(opcユーザ)
- oracleユーザにスイッチ

```
sudo su - oracle
```

- Backup Moduleファイル(opc_install.jar)が存在するディレクトリに移動

```
cd /opt/oracle/oak/pkgrepos/oss/odbcs
```

- 以下のコマンドで Backup Module をインストール
 
```
java -jar opc_install.jar -opcId <user_id> -opcPass '<auth_token>' -container <bucket_name>;-walletDir ~/hsbtwallet/ -libDir ~/lib/ -configfile ~/config -host https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>
```

 ### 各パラメータの意味

 
| パラメータ | 意味 |
|:-:|:-|
|-opcId|OCIユーザー・アカウントのユーザー名。コンソールへのサインインに使用するユーザー名です。例: -opcId username@example.com |
|-opcPass|コンソールまたはIAM APIを使用して生成される認証トークン(一重引用符で囲みます)。これは、Oracle Cloud Infrastructureユーザーのパスワードではありません。|
|-container|バックアップ保存先として使用するObject Storageの既存のバケットの名前。例: -container DBBackups|
|-walletDir|Oracle Walletが作成されるディレクトリ。Backup Moduleのインストールツールによって作成されます。|
|-libDir|SBTライブラリが格納されるディレクトリ。コマンドを実行する前に、ディレクトリがすでに存在している必要があります。最新のSBTライブラリ(libopc.soファイル)がダウンロードされます。|
|-configfile|インストール・ツールによって作成される初期化パラメータ・ファイルの名前。|
|-host|バックアップを送信するエンドポイントURL:https://swiftobjectstorage.region_name.oraclecloud.com/v1/object_storage_namespace  object_storage_namespace：テナンシのObject Storageネームスペース(後にスラッシュを追加しない)  region_name：リージョン名|

### 実行例

```
$ sudo su - oracle
$ mkdir $HOME/hsbtwallet
$ mkdir $HOME/lib
$ mkdir $HOME/config
$ cd /opt/oracle/oak/pkgrepos/oss/odbcs
$ java -jar opc_install.jar -opcId 'username@example.com' -opcPass 'Password' -container dbbackup -walletDir ~/hsbtwallet/ -libDir ~/lib/ -configfile ~/config/backupconfig -host https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/namespace
Oracle Database Cloud Backup Module Install Tool, build 23.3.0.0.0_2023-08-25
Backups would be sent to container dbbackup2.
Oracle Database Cloud Backup Module wallet created in directory /home/oracle/hsbtwallet.
Oracle Database Cloud Backup Module initialization file /home/oracle/config/backupconfig created.
Downloading Oracle Database Cloud Backup Module Software Library from Oracle Cloud Infrastructure.
Download complete.
$
```

# RMANの構成
DBシステムにopcユーザでログインし、oracleユーザにスイッチし、RMANを使用してデータベースに接続

```
$ rman target /
```

SBTデバイスを使用し、バックアップ・モジュールのインストール時に作成された構成ファイルを指すようにRMANを構成します。

```
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config/backupconfig)';
```

デフォルトでSBT_TAPEを使用するようにRMANを構成します。
次のサンプルでは、SBT_TAPEへの制御ファイルおよびspfileの自動バックアップを有効にし、暗号化を構成します。圧縮、使用するバックアップおよびリカバリ・チャネルの数、バックアップ保存ポリシー、アーカイブ・ログ削除ポリシーなど、インストールに適用されるその他の設定があります。

```
CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F';
CONFIGURE ENCRYPTION FOR DATABASE ON;
```

# データベースのバックアップ
RMANの構成が完了したら、テープ・バックアップに定期的に使用するものと同じRMANコマンドを使用できます。

データベース暗号化を設定します。
この設定は永続的ではありません。新しいRMANセッションごとに設定する必要があります。

```
SET ENCRYPTION IDENTIFIED BY "password" ONLY;
```

データベースおよびアーカイブ・ログをバックアップの例

```
BACKUP INCREMENTAL LEVEL 0 SECTION SIZE 512M DATABASE PLUS ARCHIVELOG;
BACKUP INCREMENTAL LEVEL 1 SECTION SIZE 512M DATABASE PLUS ARCHIVELOG;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE SECTION SIZE 512M DATABASE PLUS ARCHIVELOG;
```

バックアップ・ジョブが完了したら、「ストレージ」ページのコンソールで「オブジェクト・ストレージ」を選択して、バケット内のバックアップ・ファイルを表示できます。

# おわりに

Base DatabaseのDBシステムにBackup Moduleがあらかじめ用意されるようになり、インストール手順が簡単になりました。


# 補足
これまでの[ダウンロードサイト](https://www.oracle.com/database/technologies/oracle-cloud-backup-downloads.html)も引き続き存在しています。
ダウンロードしたBackup Moduleのインストールには、Java SE8 が必要でした。