1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[備忘録] Db2 ネイティブ暗号化DBバージョンアップ(別サーバーへのリストア)

1
Last updated at Posted at 2026-01-30

目的

暗号化済DBを別の新規サーバーへ移行・バージョンアップする手順を確認すること。

環境

単一サーバー上で、Db2バージョンをアップグレードする

1台め:

  • Ubuntu 22.04 on WSL2
  • Db2 11.5.9
    • 暗号化データベース
    • マスターキーはDB作成時にDb2が自動生成したものを利用

2台め:

  • Ubuntu 22.04 on WSL2
  • Db2 12.1.1
    • 暗号化データベース
    • マスターキーはDB作成時にDb2が自動生成したものを利用

手順

マニュアルに沿って実施
Db2 V12.1マニュアル「暗号化されたバックアップ・イメージをローカル鍵マネージャーで別のシステムへリストアする操作」

Step1. 必要なファイルの転送

暗号化されたデータベース・バックアップを別システムにリストアするには、リストア先のシステム上のローカル鍵ストアファイルに、マスター鍵を追加しておく必要があります。

以下のファイルを、リストア先のシステムへ転送します。

(1) 鍵ストア・ファイル
(2) stashファイル
(3) バックアップ・イメージ(暗号化)

Step2. DBマネージャー構成パラメータ KEYSTORE_LOCATION の構成

Step1.で転送してきた(1),(2)のファイルの置き場所を指定します。

(変更前)
$ db2 get dbm cfg | grep -i key
 SSL サーバー keydb ファイル             (SSL_SVR_KEYDB) =
 SSL クライアント keydb ファイル        (SSL_CLNT_KEYDB) =
 鍵ストア・タイプ                           (KEYSTORE_TYPE) = NONE
 鍵ストアのロケーション                   (KEYSTORE_LOCATION) =
$

変更コマンド

$ db2 update dbm cfg using KEYSTORE_TYPE PKCS12
DB20000I  UPDATE DATABASE MANAGER CONFIGURATION
コマンドが正常に完了しました。
$ db2 update dbm cfg using KEYSTORE_LOCATION /home/uk1210/uktmp/ne-keystore.p12
DB20000I  UPDATE DATABASE MANAGER CONFIGURATION
コマンドが正常に完了しました。
SQL1362W  即時変更のためにサブミットされた 1
つ以上のパラメーターが動的に変更されませんでした。
クライアントの変更は、次回のアプリケーション始動時、
または TERMINATE
コマンドが発行されるまで有効になりません。 次の DB2START
コマンドまで、サーバーの変更は有効になりません。
(変更後)
[uk1210@ISEI20241029-1945-fun-1 uktmp]$ db2 get dbm cfg | grep -i key                                                SSL サーバー keydb ファイル             (SSL_SVR_KEYDB) =
 SSL クライアント keydb ファイル        (SSL_CLNT_KEYDB) =
 鍵ストア・タイプ                           (KEYSTORE_TYPE) = PKCS12
 鍵ストアのロケーション                   (KEYSTORE_LOCATION) = /home/uk1210/uktmp/ne-keystore.p12
[uk1210@ISEI20241029-1945-fun-1 uktmp]$

Step3. データベースのリストア

[uk1210@ISEI20241029-1945-fun-1 uktmp]$ ls -ltr
合計 126660
drwxr-xr-x. 5 uk1210  db2iadm1        48 10月 18 14:23 adv_vpc
-rwxrwxrwx. 1 uk1210  db2iadm1     27163 11月 27 15:53 12.1reg.txt
-rwxrwxrwx. 1 uk1210  db2iadm1      8141 11月 27 15:53 12.1dbm.txt
-rwxrwxrwx. 1 uk1210  db2iadm1     14007 11月 27 15:54 12.1db.txt
drwx------. 2 uk1210  db2iadm1        81  2月 18 19:09 adminmove
-rw-r--r--. 1 kutsumi kutsumi        193  3月 25 19:10 ne-keystore.sth
-rw-r--r--. 1 kutsumi kutsumi       3512  3月 25 19:35 ne-keystore.p12
-rw-r--r--. 1 kutsumi kutsumi  129638400  3月 25 20:04 ENCDB.0.v1159mig.DBPART000.20250325200422.001
[uk1210@ISEI20241029-1945-fun-1 uktmp]$
[uk1210@ISEI20241029-1945-fun-1 uktmp]$ db2 list db directory

 システム・データベース・ディレクトリー

 ディレクトリー中の項目数 = 3

データベース 1 項目:

 データベース別名                     = TESTDB
 データベース名                             = TESTDB
 ローカル・データベース・ディレクトリー = /data/uk1210/testdb/dbpath
 データベース・リリース・レベル       = 16.00
 コメント                       =
 ディレクトリー項目タイプ             = 間接
 カタログ・データベース・パーティション番号 = 0
 代替サーバー・ホスト名               =
 代替サーバーのポート番号             =

データベース 2 項目:

 データベース別名                     = SESSION
 データベース名                             = SESSION
 ローカル・データベース・ディレクトリー = /home/uk1210
 データベース・リリース・レベル       = 16.00
 コメント                       =
 ディレクトリー項目タイプ             = 間接
 カタログ・データベース・パーティション番号 = 0
 代替サーバー・ホスト名               =
 代替サーバーのポート番号             =

データベース 3 項目:

 データベース別名                     = NOCONAD
 データベース名                             = NOCONAD
 ローカル・データベース・ディレクトリー = /home/uk1210
 データベース・リリース・レベル       = 16.00
 コメント                       =
 ディレクトリー項目タイプ             = 間接
 カタログ・データベース・パーティション番号 = 0
 代替サーバー・ホスト名               =
 代替サーバーのポート番号             =

[uk1210@ISEI20241029-1945-fun-1 uktmp]$

リストア実行。
今回は元DBとは異なるパスにリストアするため、on句とdbpath句を指定。

[uk1210@ISEI20241029-1945-fun-1 uktmp]$ db2 restore database ENCDB on /home/uk1210 dbpath on /home/uk1210 encrypt
SQL2555I  データベースがリストアされた後、RESTORE DATABASE
コマンドの発行元である現行の DB2
リリースに正常にアップグレードされました。
[uk1210@ISEI20241029-1945-fun-1 uktmp]$

list db directoryコマンドでデータベース・リリース・レベルを確認すると、16.00(Db2 v12.1)と出力されている。
(旧バージョンDBをRESTORE DATABASEコマンドでV12.1にリストアすると、V12データベースとしてリストア・構成されるため、upgrade db コマンドの実行は不要)

$ db2 list db directory

 システム・データベース・ディレクトリー

 ディレクトリー中の項目数 = 4

(中略)

データベース 2 項目:

 データベース別名                     = ENCDB
 データベース名                             = ENCDB
 ローカル・データベース・ディレクトリー = /home/uk1210
 データベース・リリース・レベル       = 16.00
 コメント                       =
 ディレクトリー項目タイプ             = 間接
 カタログ・データベース・パーティション番号 = 0
 代替サーバー・ホスト名               =
 代替サーバーのポート番号             =

Step4.(オプション) Db2 V12.1インスタンスオーナーへの権限付与

バックアップ取得元とリストア先のDb2インスタンスユーザーが違う場合では、
旧インスタンスユーザーから、新インスタンスユーザーに対して権限を付与する手順が追加で必要となります。

理由は、V12.1インスタンスオーナーに必要な権限の付与のためには、V11.5.9インスタンスオーナーの権限が必要であるため。
Db2では内部にユーザーを持たずOSユーザーとパスワードを用いてDb2に接続可能。

Step4-1.OSユーザー追加

V11.5.9インスタンスオーナーと同一名称のOSユーザーを作成する。

# useradd -g db2iadm1 v1159mig
# passwd v1159mig
(パスワードは任意に設定。現行環境と統一する必要はない)

Step4-2.旧インスタンスオーナーのOSユーザで暗号化データベースに接続し、新インスタンスオーナーに対し、必要な権限を付与

$ db2 connect to encdb user v1159mig using v1159mig
$ db2 grant dbadm with dataaccess with accessctl on database to user uk1210
$ db2 grant secadm on database to user uk1210
$ db2 terminate

Step5. リストアしたデータベースへの接続・操作

暗号化データベースに接続できました。

$ db2 connect to encdb

   データベース接続情報

 データベース・サーバー = DB2/LINUXX8664 12.1.0.0
 SQL 許可 ID            = UK1210
 ローカル・データベース別名 = ENCDB
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?