Autonomous Database の手動バックアップを作成する

Autonomous Database では基本的に自動バックアップが取得されます。しかしクローン時の元となるデータベースを作成したい場合等、特定の状態のバックアップを手動で実行したい場合があります。本記事ではAutonomous Database で手動バックアップを作成する手順をまとめました。Autonomous Database に対する接続情報以外に以下の情報が必要です。

|項目|必要な情報|
|:---|:---|
|アクセス・トークン|ユーザー名とトークンの値|
|リージョン名|リージョンID|
|バケット|バケット名とネームスペース|
|資格証明|資格証明の名前|

# トークンの作成
まずアクセストークンを作成します。Oracle Cloud のホーム画面、右上のプロファイルアイコンから「User Settings」をクリックします。画面上部に表示される「oracleidentitycloudservice」で始まるユーザー名を記録してください。次に左下のリンク「Auth Tokens」をクリックします。次に「Generate Token」ボタンをクリックします。

![Generate Token](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/619f5580-5f24-63d5-d350-11d74e0ac586.png)

表示された画面ではトークンの名前（Description）に任意の文字列を入力して「Generate Token」ボタンをクリックします。「Copy」リンクをクリックしてクリップボード内に保存されたトークンを記録しておきます。

# リージョン
接続リージョンのIDを取得します。Japan East (Tokyo) の場合は「ap-tokyo-1」です。
Oracle Cloud ホームページの上部「リージョン名」から「Manage Regions」をクリックすると、リージョンの一覧が表示されます。「Region Identifier:」部分に表示されますので記録しておきます。

![Region](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/15b90df3-1149-d3e4-52fd-9a0e127f94e0.png)

# バケット
手動バックアップはバケットに保存されます。このためバックアップ保存用バケットを作成しておきます。メニューから「Storage」⇒「Object Storage & Archive」⇒ 「Buckets」をクリックします。表示された画面から「Create Bucket」ボタンをクリックします。バックアップ用ストレージとして設定が必要な属性は特にありません。バケットの名前「Bucket Name」を記録し、「Create」ボタンをクリックします。

![Bucket](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/cb8b4997-e4e4-0985-f84a-8e92d6f6204f.png)

作成されたバケット名をクリックし、バケットの詳細を表示します。「Namespace」に表示される文字列を記録してください。

![Namespace](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/150494ab-e73a-bdfd-e499-f1ae7e96fca9.png)

# データベース設定
Autonomous Database に管理者権限で接続します。資格証明の作成とデータベース属性を変更します。

## 資格証明の作成
　資格証明の作成には DBMS_CLOUD パッケージのCREATE_CREDENTIAL プロシージャを実行します。以下のパラメーターを指定します。usernameパラメーターには「oracleidentitycloudservice/ユーザー名」の形式で指定します。[オンライン・マニュアル](https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/backup-manual.html#GUID-DD2F1114-72F4-4FA9-8524-49A5931057B8)の例では、oracleidentitycloudservice 部分がありません。単純にユーザー名のみ指定した場合、手動バックアップの設定が完了していないとみなされました。

|パラメーター名|設定値|備考|
|:---|:---|:---|
|credential_name|資格証明の名前|任意の名前|
|username|Oracle Cloudユーザー名|oracleidentitycloudservice/ユーザー名|
|password|アクセストークン|

```SQL:
SQL> BEGIN
  2    DBMS_CLOUD.CREATE_CREDENTIAL(
  3      credential_name => 'backup_credential1',
  4      username => 'oracleidentitycloudservice/test@example.com',
  5      password => 'A9aA9a;<]y+AAaaAAAA)'
  6  );
  7  END;
  8  /

PL/SQLプロシージャが正常に完了しました。
```

次にデータベース属性を変更します。設定が必要なデータベース属性は以下の通りです。

|属性名|説明|設定フォーマット|
|:---|:---|:---|
|DEFAULT_BACKUP_BUCKET|バックアップ用バケット情報|バケットのURI|
|DEFAULT_CREDENTIAL|接続クレデンシャル情報|{スキーマ名}.{資格証明名}|

DEFAULT_BACKUP_BUCKET 属性はバケットを指す URI を指定します。以下のフォーマットです。

```
https://swiftobjectstorage.{リージョン名}.oraclecloud.com/v1/{ネームスペース名}/{バケット名}
```

それぞれの属性を変更します。

```SQL
SQL> ALTER DATABASE PROPERTY SET default_backup_bucket='https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/zzzzzzz9zzzz/bucket-20220412-1434';

データベースが変更されました。

SQL> ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'admin.backup_credential1';

データベースが変更されました。
```

処理が完了すると、Autonomous Database のホームページ下部の「Manual Backup Store」部分にバケット名が表示されます。「Not Configured」と表示される場合は設定が完了していません。

![Manual Backup Store](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/24654b16-c7f8-1614-9671-a399492ac1f9.png)

# バックアップの実行
手動バックアップを実行するには、Autonomous Database のホーム画面、左下の「Backups」リンクをクリックし、表示された画面から「Create Manual Backup」ボタンをクリックします。バックアップの名前「Display Name」に任意の名前を入力します。理由はわかりませんが、バックアップ名前には記号がほぼすべて使用できません。漢字やひらがな等も使えないので、半角アルファベットの大文字／小文字と数字のみで入力します。

![Create Backup](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/ad6c266d-105d-c525-c8a0-497f2da815ea.png)

取得したバックアップはデータベースのリストアやクローンに使用できます。Autonomous Database の「More Actions」メニュー内の「Restore」や「Create Clone」の画面からバックアップの一覧に表示されます。

残念ながらこれらの設定は Always Free 環境では利用できません。