Db2 Starter Editionの制限事項の確認（ポイント・イン・タイム・リカバリ）


# Db2 12.1からのDb2 Starter Editionの特徴
Db2 LUW (Db2 for Linux, UNIX and Windows) の新しいバージョンである「Db2 12.1」が2024年11月よりGAになっていますが、Db2 12.1から始めて提供された新しいエディションが「Db2 Starter Edition」です。


- Db2 LUW のテクニカル・フラッシュ[「Db2 V12.1 公開のお知らせ」](https://www.ibm.com/support/pages/node/7177438)より引用：

>既存のDb2 Advanced Edition、Db2 Standard Edition に加えて、新エディション Db2 Starter Edition が登場
>* 新しいアプリケーションやサービスのコア・データ管理機能を必要とするユーザー向けエディション
    * 1 台の物理サーバーまたは仮想サーバーにつき最大 4 コア、最大 16 GB のメモリの容量制限あり、使用制限機能あり
    * 上位のDb2エディションにシームレスにアップグレード可能

Db2 12.1からは、無料の「Db2 Community Edition」が「非生産環境(非プロダクション環境)でのみ使用可能」となったこともあり、Db2 Starter Edtitionはその後継として、規模の小さいデータベース環境に適したエディションになっています。

コアなデータベース機能をシンプルに安価に提供するということで「使用制限機能あり」となっていますが、
その中に、「バックアップ＆リストア（ポイント・イン・タイム・リカバリ）」という項目があるので、バックアップ・リストア関連の制限機能について見てみました。
※使用制限機能の参照は文末におきました。



# Db2 Starter Editionの「バックアップ＆リストア（ポイント・イン・タイム・リカバリ）」制限
「バックアップ＆リストア（ポイント・イン・タイム・リカバリ）」は制限されているということで、データベースのバックアップ/リストア時にどのようなメッセージがでるのか見てみました。

## 環境
- RHEL 9.4 (4コア、16Gメモリ）
- [Db2 fixpackサイト](https://www.ibm.com/support/pages/download-db2-fix-packs-version-db2-linux-unix-and-windows)よりDb2 12.1.1(Db2 Version 12.1 Mod 1 Fix Pack 0) server fixpackをダウンロードしてDb2をインストール
```
$ db2level
DB21085I  This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and DB2 code release "SQL12011" with level
identifier "02020110".
Informational tokens are "DB2 v12.1.1.0", "s2412161033", "DYN2412161033PPCLE",
and Fix Pack "0".
Product is installed at "/opt/ibm/db2/V12.1".
```
- Db2 Starter Editionのライセンス・ファイル(db2starter_vpc.lic)を登録

Db2を導入すると、デフォルトでDb2 Community Editionのライセンスが含まれていますので、Db2 Community Editionのライセンスは除去し、Db2 Starter Editionのライセンスを登録します。
```
$ db2licm -r db2dec

LIC1403I  License removed successfully.


$ db2licm -a db2starter_vpc.lic

LIC1402I  License added successfully.


$ db2licm -l
Product name:                     "DB2 Starter Edition"
License type:                     "Virtual Processor Core"
Expiry date:                      "Permanent"
Product identifier:               "db2starter"
Version information:              "12.1"
Max amount of memory (GB):        "16"
Max number of cores:              "4"
Enforcement policy:               "Hard Stop"
Features:
IBM DB2 Performance Management Offering:              "Not licensed"
```
- Db2付属のSAMPLEデータベースを作成
```
$ db2sampl -sql

  Creating database "SAMPLE"...
  Connecting to database "SAMPLE"...
  Creating tables and data in schema "DB2INST1"...

  'db2sampl' processing complete.
```
## オフライン・データベース・バックアップ/リストア

まずは一番基本的な、オフライン・バックアップ（DBに誰も接続していない状態でのデータベース全体のバックアップ取得）を行い、それをリストアしてみます。
これは「バックアップ＆リストア（ポイント・イン・タイム・リカバリ）」の制限事項には該当しないため、普通に実行できます。



##### 1. バックアップを取得
SAMPLEデータベースを作った直後はロギング方式は循環ログです。
オフライン・バックアップであればこの循環ロギングのままで実行できます。
<br>
データベースに誰も接続していない状態で、データベース全体のバックアップを取得します。

```
$ db2 backup db sample to /home/db2inst1/work/backup

Backup successful. The timestamp for this backup image is : 20250320224447
```
##### 2. リストアします

取得したバックアップをリストアしてみます。
RESTORE DATABASE コマンドで リストアを実行します。
既存のDBを上書きしてよいかという確認メッセージが出ますので、今回はy(yes)とします。

```
$ db2 restore database sample from /home/db2inst1/work/backup taken at 20250320224447
SQL2539W  The specified name of the backup image to restore is the same as the
name of the target database.  Restoring to an existing database that is the
same as the backup image database will cause the current database to be
overwritten by the backup version.
Do you want to continue ? (y/n) y
DB20000I  The RESTORE DATABASE command completed successfully.
```
無事リストアできました。

## オンライン・バックアップ/リストア

次に、データベース全体のオンライン・バックアップ/リストアを試してみます。

オンライン・バックアップとは、DBに接続中もしくは更新中に、バックアップを取得することです。
バックアップ取得中にもデータは更新されている可能性があるため、リストア後にその変更分を反映するためには、ログを適用する（rollforwardする）必要があります。
そのためには、ログを保存式（アーカイブ）方式にしておく必要があります。

#### オンライン・バックアップの準備
##### 1. DB構成パラメーターのアップデート
SAMPLEデータベースの構成パラメーターを、デフォルトの循環ロギングから、ログを保存するアーカイブ・ロギングに変更します。
```
 $ db2 update db cfg for sample using LOGARCHMETH1 LOGRETAIN
```
上記変更により「BACKUP PENDING」ステイタスとなり、DBバックアップを取得する必要があるため、バックアップを取得します。

```
$ db2 backup db sample to /home/db2inst1/work/backup

Backup successful. The timestamp for this backup image is : 20250320230108
```
これで、SAMPLEデータベースはログが保存されるアーカイブ・ロギング方式になりました。

##### 2. オンライン・バックアップを取得
Db2のコマンド・ウィンドウを2つ開きます。

1つのコマンド・ウィンドウでSAMPLE DBに接続しておきます（DBをオンライン状態にする）。
```
$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXPPC64LE 12.1.1.0
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

$ db2 list applications

Auth Id  Application    Appl.      Application Id                                                 DB       # of
         Name           Handle                                                                    Name    Agents
-------- -------------- ---------- -------------------------------------------------------------- -------- -----
DB2INST1 db2bp          1669       *LOCAL.db2inst1.250321031445                                   SAMPLE   1
```


別のコマンド・ウィンドウでオンライン・バックアップを取得します。


```
[db2inst1@itzpvs-pgohgrg ~]$ db2 backup db sample ONLINE to /home/db2inst1/work/backup

Backup successful. The timestamp for this backup image is : 20250320231610

```

##### 3. リストアします

取得したオンライン・バックアップをリストアしてみます。
RESTORE DATABASE コマンドで リストアを実行します。
既存のDBを上書きしてよいかという確認メッセージが出ますので、今回はy(yes)とします。

```
$ db2 restore database sample from /home/db2inst1/work/backup taken at 20250320231610
SQL2539W  The specified name of the backup image to restore is the same as the
name of the target database.  Restoring to an existing database that is the
same as the backup image database will cause the current database to be
overwritten by the backup version.
Do you want to continue ? (y/n) y
DB20000I  The RESTORE DATABASE command completed successfully.
```
無事リストアできましたが、オフライン・バックアップと異なり、この直後にDBに接続しようとすると「ROLL-FORWARD PENDING」状態となっているため、ロールフォワードしてログを適用する必要があります。
```
$ db2 connect to sample
SQL1117N  A connection to or activation of database "SAMPLE" cannot be made
because of ROLL-FORWARD PENDING.  SQLSTATE=57019
```
##### 4. 制限事項にあたる、「ポイント・イン・タイム・リカバリ」を試行
ここで、制限事項にあたる、「ポイント・イン・タイム・リカバリ」を試してみます。
rollforwardコマンドの中で、特定のタイムスタンプを指定します。
また、rollforwardコマンドの中で、ログの最後までという時点（END OF LOGS）を指定してみます。
どのようなメッセージが出るのかを見てみます。
```
$ db2 rollforward database sample to 2025-03-21.03.16.12 and stop
SQL8029N  A valid license key cannot be found for the requested functionality.
Reference numbers: "10".

$ db2 rollforward database sample to end of logs and stop
SQL8029N  A valid license key cannot be found for the requested functionality.
Reference numbers: "10".
```
SQL8029N 「有効なライセンス・キーが登録されていないフィーチャーまたは機能が使用されている」というメッセージが出ましたので、Db2 Starter Editionの制限事項に該当しているという予想通りの動作です。

##### 5. END OF BACKUPまでのロールフォワードで回復
END OF BACKUPまでのロールフォワードを実施して、データベースを復旧します。
```
$ db2 rollforward database sample to end of backup and complete

                                 Rollforward Status

 Input database alias                   = sample
 Number of members have returned status = 1

 Member ID                              = 0
 Rollforward status                     = not pending
 Next log file to be read               =
 Log files processed                    = S0000000.LOG - S0000002.LOG
 Last committed transaction             = 2025-03-21-03.16.11.000000 UTC

DB20000I  The ROLLFORWARD command completed successfully.
```

END OF BACKUPまでのロールフォワードは制限事項に該当せず、これで無事にSAMPLE DBをオンライン・データベース・バックアップから復旧できました。

##### 6. 注意点まとめ
Db2 Starter Editionでは、END OF BACKUPへのロールフォワードのみがサポートされます。

Db2 Starter Editionでは、時刻を指定したロールフォワード（ポイント・イン・タイム・リカバリ）や、END OF LOGS（ログの最後まで）を指定したロールフォワードは、制限事項に該当するため行えません。

※これらの機能が必要な場合は、ライセンス・ファイルを入れ替えることによって、上位のDb2エディションにシームレスにアップグレード可能です。



#  参照：Db2 12.1 Starter Editionの制限事項（抜粋）
- Db2 12.1 マニュアル
[Db2データベース製品のエディションと展開オプション](https://www.ibm.com/docs/ja/db2/12.1?topic=editions-db2-database-product-deployment-options#c0058536__db2_starter)
>Db2Starter Edition (12.1.1の新機能)
    Db2Starter Edition は、新しいアプリケーションやサービスのコアとなるデータ管理機能を必要とするユーザー向けに設計されています。 
    高度な機能を利用するために、お客様は上位のDb2エディションにシームレスにアップグレードすることができます。 
    Db2 Starter Edition は、1 台の物理サーバーまたは仮想サーバーあたり、最大 4 コア、16 GB のメモリという容量制限があります。 
    さらに、高可用性ディザスタリカバリ（HADR）、ネイティブ暗号化および監査ログ、フェデレーション、バックアップ＆リストア（ポイント・イン・タイム・リカバリ）、Db2 pureScale,データベース・パーティショニング機能（DPF）などの高度な機能が制限される。 

- [Db2 12.1.1 Starter Edition ライセンス・インフォメーション](https://www.ibm.com/support/customer/csol/terms/?id=L-YTPL-NZU2K6&lc=ja)

>1. 禁止コンポーネント

>本契約のいかなる規定にもかかわらず、「ライセンシー」は、「プログラム」の以下のコンポーネントまたは機能の使用を禁止されています。

>・
>・
>- pureScaleクラスタリング・テクノロジー 
>- データベース・パーティショニング・フィーチャー (DPF) 
>- 高可用性/災害復旧 
>- フェデレーション 
>- バックアップ(ポイント・イン・タイム・リカバリー)  
>- セキュリティー(ネイティブ暗号化と監査ロギング) 
>・
・

#  Db2 12.1 マニュアルのトップページ
- 日本語
    - https://www.ibm.com/docs/ja/db2/12.1
- 英語
    - https://www.ibm.com/docs/en/db2/12.1
    - 最新情報は英語で更新されていますので英語で確認するのがお薦めです

# Db2 12.1 システム要件
稼働環境の前提要件等の確認はこちらです（英語）
- [System requirements for IBM Db2 for Linux, UNIX, and Windows](
https://www.ibm.com/support/pages/system-requirements-ibm-db2-linux-unix-and-windows)

# 日本のサポート部門によるFAQ集

こちらのサイトには、IBMのソフトウェア・テクニカル・サポートによく寄せられる質問 (FAQ) の一覧があり、非常に有用な情報が数多く記載されています。

[[Db2] Db2 サポートによく寄せられる質問](https://www.ibm.com/support/pages/node/471995)