Db2と、Db2 on Cloudと、Db2 Warehouse on Cloudは何が違う？ ~導入構成編~

## はじめに

2022年現在、Db2には多くの提供形態があります。
参考：[2022年6月のDb2製品ラインナップを整理してみる](https://qiita.com/mi-kana/items/f995a924ac6e3368d1db)

10年前まではオンプレミス環境での利用が圧倒的に多かったDb2も、IaaS環境での稼働はすっかり一般的になり、DBaaSであるDb2 on Cloud, Db2 Warehouse on Cloud（略称：Db2WoC）の利用検討も増えているようです。

そこで、オンプレミス版やIaaSにDb2を導入構成する場合と、Db2 on Cloud, Db2WoC を使う場合とでは、初期セットアップ/パラメータ変更/Fix適用の方法が具体的にどう違ってくるのか、整理してみました。


## 目次
1. 初期セットアップ方法
2. パラメータ変更方法
3. Fix適用方法

## 1. 初期セットアップ方法
この点が最も大きな違いで、Db2 on Cloud, Db2WoC の利点となります。
オンプレミス版のDb2製品は、インストールや初期構築作業が必要となりますが、
DBaaSであるDb2 on Cloud, Db2WoC は、DB作成が完了した状態でユーザーに環境提供されることは大きなメリットです。
HW, OSの調達/設定も不要で、Db2のインストールも不要なことから、環境構築に必要なスキルセットは最小限に抑えることができます。
また、環境構築期間を大幅に短縮することができます。

#### オンプレミス版Db2
オンプレミス環境のDb2構築では、利用開始までに、大まかに以下の手順が必要となります。
IaaSで構築する場合も同様です。
(1) OS設定
(2) Db2導入のための前提となるOSパッケージの導入
(3) インストールイメージをダウンロード/展開
(4) Db2バイナリを導入
(5) ライセンス適用
(6) Db2で利用するOSグループ、ユーザ作成
(7) Db2インスタンス作成
(8) データベース作成
(9) (高可用性構成が必要な環境である場合) クラスタソフトのインストール、構成

参考：
[Db2 11.5 製品マニュアル「インストール」](https://www.ibm.com/docs/ja/db2/11.5?topic=fundamentals-installing)
[[Db2] Db2 製品のダウンロードとインストール方法](https://www.ibm.com/support/pages/db2-db2-%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95)
[【備忘録】Db2 インストール手順まとめ（Linux）](
https://qiita.com/Haruka-Ogawa/items/9576399209b32f3016ea)


#### Db2 on Cloud, Db2WoC
以下のようにごく短いステップで利用を開始することができます。
(1) IBM Cloudユーザ作成
(2) IBM Cloudユーザーに適切な権限を付与
(3)IBM Cloud カタログから Db2 / Db2 Warehouse のプランを選択
(4)「作成」ボタン押下


## 2. パラメータ変更方法

### オンプレミス版Db2
Db2のパラメータはレジストリー変数、DBマネージャー構成パラメータ、DB構成パラメータの3種類が存在します。
Db2の管理者権限を持つユーザからコマンドを実行することで、パラメータ値を変更することができます。

##### レジストリ変数
[db2setコマンド](https://www.ibm.com/docs/ja/db2/11.5?topic=commands-db2set-db2-profile-registry)を実行して変更します。

実行例：
```
db2set [ -g | -i <instance_name> ] DB2COMM=SSL,TCPIP
```
補足：
 * -gオプションでは、すべてのインスタンスに対して有効になります
 * インスタンス個別に変更したい場合、-i オプションで対象としたいインスタンス名を指定します
 * 同じレジストリ変数が -g, -i オプション両方で設定されている場合、-i オプションの設定内容が利用されます


##### DBマネージャー(DBM)構成パラメータ
[UPDATE DATABASE MANAGER CONFIGURATION コマンド](https://www.ibm.com/docs/ja/db2/11.5?topic=commands-update-database-manager-configuration) を実行して変更します。

実行例：
```
db2 attach to <db2_instance_name>
db2 update dbm cfg using DIAGLEVEL 1
db2 detach 
```
補足：
インスタンスへのアタッチは、必ずしも必要ではありません。
アタッチが必要になるのは以下のケースです。
 * リモートサーバ上に存在するDb2インスタンスのDBM構成パラメータを更新したい場合
 * オンラインで更新したい場合

##### DB構成パラメータ
[UPDATE DATABASE CONFIGURATION コマンド](https://www.ibm.com/docs/ja/db2/11.5?topic=commands-update-database-configuration) を実行して変更します。

実行例：
```
db2 update db cfg for <db_name> using maxappls 50
```
補足：
Db2では1つのインスタンスに複数のデータベースを作成することができます。
そのため、実行例のように for オプションでデータベース名を指定してパラメータ更新を行います。
あらかじめデータベースに接続してから update db cfg コマンドを実行する場合には、forオプションは不要です。


##### ◆ Tips: コマンドを使わないパラメータ変更方法
DBマネージャー構成パラメータ、DB構成パラメータについては、[ADMIN_CMD プロシージャー](https://www.ibm.com/docs/ja/db2/11.5?topic=procedure-admin-cmd-run-administrative-commands)を実行することによって、リモートクライアントから変更することもできます。
プロシージャ呼び出しであるため、Db2コマンドラインプロセッサからコマンドラインで実行することもできますし、Db2 Data Management Console(※) などのGUIツールのSQL実行画面からも実行可能です。

実行例：
```
CALL SYSPROC.ADMIN_CMD ('UPDATE DB CFG USING locktimeout 30')
```
(※) Db2 Data Management Console(DMC)：
* 無償で利用可能な、GUIベースのDb2の管理・モニタリングツール
* 参考：[【SIL】【IM】IBM Db2 Data Management Console 利用ガイド](https://www.ibm.com/support/pages/%E3%80%90sil%E3%80%91%E3%80%90im%E3%80%91ibm-db2-data-management-console-%E5%88%A9%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89)




### Db2 on Cloud, Db2WoC
ユーザーによるパラメータ更新は、Db2 on CloudやDb2WoCではサポートされません。
変更が必要な場合には、サポートに問い合わせを行い変更の可否を確認します。
ひとつ上の「◆ Tips」に記載したようなプロシージャを用いることで、Webコンソールからの変更もできそうに思われますが、サポートが得られない操作となりますので実施不可です。


## 3. Fix適用方法

### オンプレミス版Db2
オンプレミス版Db2のFix適用方法にはいくつかのパターン、やり方がありますが、以下の手順でFixを適用することが一般的です。

(1) 事前にDBバックアップ取得
(2) ServerFixPackインストールイメージをダウンロード/展開
(3) db2setup, もしくは db2_install コマンドを実行し、ServerFixPackのDb2バイナリを導入
(4) Db2インスタンスのアップグレード(db2iupdtコマンド)
(5) データベースのアップグレード(db2updv115 コマンド)

参考：
[Db2 11.5 製品マニュアル「Db2 データベース環境におけるフィックスパックの適用」](https://www.ibm.com/docs/ja/db2/11.5?topic=installing-applying-fix-packs-in-db2-database-environments)
[【備忘録】Db2 アップグレード手順（v11.5GA → v11.5MOD5）](
https://qiita.com/Haruka-Ogawa/items/084fe4068905ce17615d)



### Db2 on Cloud
Db2 on Cloud のインスタンス(エンタープライズ・インスタンス、標準インスタンス、DR インスタンス)に対する更新の多くは、セルフサービス更新として提供されます。
セルフサービスですので、ユーザが任意のタイミングで適用することができます。
適用可能な更新についてはWebコンソール上で通知され、Eメール通信は送信されませんので、コンソールの通知画面を定期的に確認する必要があります。

更新を適用しなければならない時間制限が存在する場合があります(通常は30日)。
期限を過ぎると自動的にインスタンスに適用されます。
ただし、この制限時間には例外があります。
セキュリティ上の問題など、すぐに適用する必要がある更新もあります。
こういった更新はスケジュールができず自動適用されることもあります。

https://cloud.ibm.com/docs/Db2onCloud?topic=Db2onCloud-self_serve_update


### Db2WoC
Db2WoCの場合、Fix適用はユーザーによる作業は不要で、自動的に行われます。
定期的な保守期間がスケジュールされます。
IBM Cloud 運用保守ページ(※)にて、各ロケーションごとに計画されている保守期間のスケジュールを確認することができます。
また、保守が必要な場合にIBMから直接、ユーザーに連絡が入ることもあるようです。

(※) [IBM Cloud の状況: 計画保守](https://cloud.ibm.com/status/maintenance?component=dashdb)
 　　注：IBM Cloudアカウントでログイン後に閲覧可能なページです

自動適用となるためユーザー側の作業が不要となる一方、更新適用のタイミングはIBMによって決定されることになりますが、保守期間のスケジュールに影響を受けるビジネス・シチュエーションまたは条件がある場合、サポート部門への相談をすることはできるようです。

https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-maintenance_window