【備忘録】Db2 アップグレード手順（v10.5 → v11.5）

# 1. はじめに

2020年11月現在、Db2 の最新バージョンは *v11.5* であり、
アップグレード方法として いくつかの手順が考えられます。

今回はDb2 *v10.5* から *v11.5* へ、
同じ インスタンス上での **db2iupgrade**・**upgrade**コマンドを使用した アップグレード手順をまとめます。

# 2. 準備

今回はDb2 *v10.5* から *v11.5* へのアップグレード手順を確認するため、
あらかじめ Linux環境に Db2 *v10.5* を導入し、インスタンス *db2inst1* を作成しています。

さらに、データベース *testdb* を作成し、以下のようなテーブル *tbl1* を準備しておきます。

```
[db2inst1@localhost ~]$ db2 "SELECT * FROM tbl1"

COL1        COL2
----------- ----
          1 A   

  1 record(s) selected.
```

# 3. 移行作業
## 3-1. Db2 v11.5 インストール

Db2 *v10.5* をインストールした 同じサーバー上に、Db2 *v11.5* をインストールします。
※ インスタンスは後で移行するので、新たに作成する必要はありません。

Db2のインストール手順について、詳細は以下リンク先の記事をご参照ください。

【備忘録】Db2 インストール手順まとめ（Linux）
https://qiita.com/Haruka-Ogawa/items/9576399209b32f3016ea

## 3-2. 移行前作業

Db2 アップグレード 前に、制約事項・推奨事項、また *v11.5*以降 サポートが廃止された機能 などを確認します。

Knowledge Center：Db2 サーバーのアップグレードに関する重要事項
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.qb.upgrade.doc/doc/c0023734.html

より確実に移行するためには、
アップグレード前の バックアップ、診断情報や構成パラメーターの取得、
アップグレード操作時に エラーが発生した際のリカバリー方法の検討、
テスト環境にてアップグレード操作の確認を
実施すると なお良いでしょう。

Knowledge Center：Db2 サーバーのアップグレード前タスク
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.qb.upgrade.doc/doc/t0050541.html


### ・ 状態確認

アップグレード作業の前に、
**db2ckupgrade** コマンドを実行し、データベースがアップグレード可能かを確認します。

コマンドは 以下の通りです。

```
db2ckupgrade <DB名> -l <ログファイル>
```

Knowledge Center：db2ckupgrade - アップグレードのためのデータベースの検査コマンド
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0002028.html

実行例は 以下の通りです。

```
[db2inst1@localhost bin]$ pwd
/opt/ibm/db2/V11.5/bin
[db2inst1@localhost bin]$ ./db2ckupgrade testdb -l /tmp/db2ckupgrade.log
DBT5508I  The db2ckupgrade utility completed successfully. The database or databases can be upgraded.

[db2inst1@localhost bin]$ cat /tmp/db2ckupgrade.log
Version of DB2CKUPGRADE being run: VERSION "11.5"

Database: "TESTDB"

DBT5508I  The db2ckupgrade utility completed successfully. The database or databases can be upgraded.
```

データベース *testdb* が、*v11.5* へ移行可能であることを確認できました。

## 3-3. インスタンス移行

Db2 *v10.5* のインスタンスを移行します。
インスタンスの移行には、**db2iupgrade** コマンド を使用します。

### ① Db2 停止

**db2stop** コマンドを実行し、Db2を停止します。

実行例は 以下の通りです。

```
[db2inst1@localhost ~]$ db2stop
2020-10-28 18:03:10     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
```

### ② インスタンス移行

**db2iupgrade** コマンドを実行し、インスタンスを移行します。
※ rootユーザーあるいは管理者権限で実行してください。

コマンドは 以下の通りです。

```
db2iupgrade -u <fenced ユーザー> <インスタンス名>
```

Knowledge Center：db2iupgrade - インスタンスのアップグレード・コマンド
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0002055.html

実行例は 以下の通りです。

```
[root@localhost instance]# pwd
/opt/ibm/db2/V11.5/instance
[root@localhost instance]# ./db2iupgrade -u db2fenc1 db2inst1
DBI1446I  The db2iupgrade command is running.

DB2 installation is being initialized.

 Total number of tasks to be performed: 4 
Total estimated time for all tasks to be performed: 309 second(s) 

Task #1 start
Description: Setting default global profile registry variables 
Estimated time 1 second(s) 
Task #1 end 

Task #2 start
Description: Initializing instance list 
Estimated time 5 second(s) 
Task #2 end 

Task #3 start
Description: Configuring DB2 instances 
Estimated time 300 second(s) 
Task #3 end 

Task #4 start
Description: Updating global profile registry 
Estimated time 3 second(s) 
Task #4 end 

The execution completed successfully.

For more information see the DB2 installation log at
"/tmp/db2iupgrade.log.30462".
DBI1070I  Program db2iupgrade completed successfully.

```

### ③ インスタンス 確認

インスタンス *db2inst1* にスイッチ、**db2start**コマンドでDb2を起動し、
**db2level** コマンドで Db2のバージョンを見て、インスタンスが *v11.5*に 移行されたことを確認します。

実行例は以下の通りです。

```
[root@localhost ~]# su - db2inst1
最終ログイン: 2020/11/08 (日) 18:56:24 JST日時 pts/0

[db2inst1@localhost ~]$ db2start
11/08/2020 19:03:04     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

[db2inst1@localhost ~]$ db2level
DB21085I  This instance or install (instance name, where applicable: 
"db2inst1") uses "64" bits and DB2 code release "SQL11050" with level 
identifier "0601010F".
Informational tokens are "DB2 v11.5.0.0", "s1906101300", "DYN1906101300AMD64", 
and Fix Pack "0".
Product is installed at "/opt/ibm/db2/V11.5".

```

インスタンス *db2inst1* が、*v11.5* に移行されていることを確認できました。

## 3-4. データベース移行

### ① データベース移行

Db2 v10.5 のデータベース *testdb*を 移行します。
インスタンスの移行には、**upgrade** コマンド を使用します。
※ インスタンスオーナーまたは、SYSADM権限を持つユーザー で実行してください。

コマンドは 以下の通りです。

```
upgrade db <DB名>
```

Knowledge Center:UPGRADE DATABASE コマンド
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001959.html

実行例は 以下の通りです。

```
[db2inst1@localhost ~]$ db2 upgrade db testdb

DB20000I  The UPGRADE DATABASE command completed successfully.
```

### ② データベース・テーブル確認

移行後 データベース*testdb*に接続、テーブルを確認して、
データベースが 移行されたことを確認します。

```
[db2inst1@localhost ~]$ db2 connect to testdb

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.0.0
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTDB

[db2inst1@localhost ~]$ db2 list tables

Table/View                      Schema          Type  Creation time             
------------------------------- --------------- ----- --------------------------
TBL1                            DB2INST1        T     2020-11-08-18.42.45.218754

  1 record(s) selected.

[db2inst1@localhost ~]$ db2 "SELECT * FROM tbl1"

COL1        COL2
----------- ----
          1 A   

  1 record(s) selected.
```

## 3-5. 移行後作業

アップグレード後は、データベースのアクティブ化、パフォーマンスの確認、パッケージの再バインド などを、必要に応じて実施します。

Knowledge Center：Db2 サーバーのアップグレード後タスク
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.qb.upgrade.doc/doc/t0050542.html

また、*v11.5*から変更された レジストリー変数、構成パラメーターを確認し、必要に応じて設定を行ってください。

Knowledge Center：Db2 サーバーの動作の変更点の管理
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.qb.upgrade.doc/doc/t0050543.html

# 4. おわりに

今回は、同じインスタンス上でDb2を移行する場合の
Db2 v10.5 から v11.5 へのアップグレード手順をまとめました。

移行 前/後 作業については 説明を省略しましたが、
確実にアップグレードを実施したい場合は、環境に合わせて 必要な手順をしっかり確認すると良いと思います。

# 参考情報

Knowledge Center：Db2 サーバーのアップグレード (Linux および UNIX)
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.qb.upgrade.doc/doc/t0007200.html