Windows 11 WSL2でUbuntu, Db2を動かす

WSL(windows Subsystem for Linux)は、構築手順が簡単で動作も軽いため、Db2 Linux版のちょっとしたテスト環境として使いやすい。
この記事では、Windows 11のWSL2を使用してDb2 V11.5を動かす手順をまとめている。
2024年11月に発表されたDb2 V12.1を使用する場合は、
[Windows WSL2でDb2 12.1を動かす](https://qiita.com/kayokok/items/87843a7c1ac00b9e9f9b)をご覧いただきたい。

以下、WSL2でDb2 11.5環境を構築する手順を説明する。(2023/09/12現在)
大まかなステップは以下のとおりである。
[1. Db2の準備](#1-db2の準備)：Db2 11.5の導入モジュールを入手する
[2. WSL2環境の構築](#2-wsl2環境の構築)：WSL2を使用可能にし、Ubuntuの導入、カストマイズを行う
[3. Db2の導入](#3-db2の導入)：1で入手したDb2モジュールをUbuntuに導入する
[4. Db2インスタンスとデータベースの作成](#4-db2インスタンスとデータベースの作成)：Db2のインスタンスおよびSAMPLEデータベースを作成する


# 1. Db2の準備
## (1). Db2 Community Editionのダウンロード
Db2には、有償版(AdvancedおよびStandard Edition)と、無償版(Community Edition)がある。
機能はどれも変わらない。無償版はサポートの対象にならない他、使用できるマシンに制限(CPU4コア、メモリ16GB以下)がある。
自分で使うには十分のため、Community Editionを導入することにする。

Db2 11.5 Community Editionは、ここからダウンロードできる。
[IBM Db2 Database](https://www.ibm.com/jp-ja/products/db2/database)
![Db2 Database.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189034/99017551-e8ac-37cb-c9b1-42974b16cf18.png)
[IBM Db2 Community Editionを無償でダウンロード]を押すと、以下の画面に遷移し、ダウンロードするためのIBMid(IBMアカウント)を求められる。
![db2communityedition.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189034/322ad0d7-31da-352e-95d6-1d91a1eae3bb.png)
IBMidは、無償版製品や障害フィックスパックのダウンロードの他、IBM Cloudへのアクセス、IBM製品サポートからの情報入手等広く用いられる、いわばIBMの個人顧客IDのようなものである。時々IBM製品を使うなら、持っていて損はない。
すでにIBMidを持っていればそれを使用、なければ新規に登録して次へ。
名前や、電話番号など聞かれるが、答えて進むとダウンロードページにたどり着く。
![Db2DownloadCenter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189034/3a1758c3-c98b-ba34-bb8d-885636390164.png)
最初の[Sign up to download the Db2 Community Edition](https://www.ibm.com/account/reg/jp-ja/signup?formid=urx-33669)ページでは、Db2 v11.5.5となっていたが、このページではv11.5.8になっている。いい加減だ。Db2 v11.5.8(v11.5 Mod8)は当記事執筆時点で最新レベルであるため、不都合はない。
今回導入したいのは、64bitのLinux版なので、Linux(x64)のDownloadを選択する。
導入モジュール　`v11.5.8_linuxx64_server_dec.tar.gz`　がダウンロードされる。
ここでは、Windowsの以下のパスに置いておく。

```
C:\temp\v11.5.8_linuxx64_server_dec.tar.gz
```

ちなみに、Db2のフィックスパック一覧はここにあるので、Db2の最新バージョン、モディフィケーション、フィックスパックレベルを確認したい場合は、チェックするとよい。
この文書のリンク先からフィックスパックをダウンロードすることもできる。
[Download Db2 Fix Packs by version for DB2 for Linux, UNIX and Windows](https://www.ibm.com/support/pages/node/318421)

## (2). Db2導入前提の確認
Linux環境を構築する前に、Db2の導入前提を確認しておく。
導入前提はここに記載されている。

どのバージョン、エディションの前提条件を表示するか選択するようになっているが、今回導入するのはDb2 V11.5.8なので、Db2 V11.5.8 Advanced Editionなどを選ぶ。上述のように、Advanced Editionも、Community Editionも機能の差は無く、前提も同じなので、エディション名は気にしなくてよい。
現時点でサポートしているLinuxは、以下とわかる。(導入する前に、必ず確認のこと。)
- CentOS 7.9、または8.1
- RHEL 7.9、または8.1以上
- SLES 12 SP4以上、または15 Sp1以上
- Ubuntu 16.04 LTS, 18.04 LTS, 20.04 LTS

H/W前提としては、メモリ1GB、ディスクは導入モジュールの展開分なども合わせて10GB程度の空きは欲しい。

# 2. WSL2環境の構築
## (1). WSLとUbuntuのインストール
WSL(Windows Subsystem for Linux)を使えば、Windows上に簡単にLinux環境を構築できる。
WSLの導入方法については、以下の文書を見る。
[WSL のインストール](https://docs.microsoft.com/ja-jp/windows/wsl/install)
この文書によると、Windows 10 バージョン2004以降 (ビルド19041以降) では、PowerShellで`wsl --install`コマンドを実行することにより、wslコンポーネントの有効化から、Linux ディストリビューションのインストールの実行まで一気に行うことができる。
導入可能なバージョンの一覧は、`wsl --list --online`コマンドで取得する。
PowerShellターミナルで以下のように実行する。
```
PS C:\> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
 'wsl --install -d <Distro>'を使用してインストールします。

  NAME                                   FRIENDLY NAME
* Ubuntu                                 Ubuntu
  Debian                                 Debian GNU/Linux
  kali-linux                             Kali Linux Rolling
  Ubuntu-18.04                           Ubuntu 18.04 LTS
  Ubuntu-20.04                           Ubuntu 20.04 LTS
  Ubuntu-22.04                           Ubuntu 22.04 LTS
  OracleLinux_7_9                        Oracle Linux 7.9
  OracleLinux_8_7                        Oracle Linux 8.7
  OracleLinux_9_1                        Oracle Linux 9.1
  openSUSE-Leap-15.5                     openSUSE Leap 15.5
  SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
  SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
  openSUSE-Tumbleweed                    openSUSE Tumbleweed
PS C:\>
```

`wsl --instal -d <Distribution Name>`のように、-dオプションをつけることにより、導入するLinuxディストリビューションを指定できる(デフォルトはUbuntu)。
Db2では、Ubutuのサポートレベルに制約があるため、導入バージョンを Ubuntu 20.04 LTSと明確にして導入する。
```
wsl --install -d Ubuntu-20.04
```
管理者権限の確認を要求されるので、適宜確認する。
```
PS C:\> wsl --instal -d Ubuntu-20.04
要求された操作には管理者特権が必要です。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu 20.04 LTS
Ubuntu 20.04 LTS はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
PS C:\>
```
導入完了メッセージが出されるので、PCを再起動する。
再起動後、Ubuntuが自動的に起動され、デフォルトユーザーIDとパスワードの登録を求めるプロンプトが出されるので、これに応えてユーザーIDを作成する。
![スクリーンショット 2023-09-11 175831.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189034/172d5484-05c8-4f89-1c38-10d1e16e1c43.png)
ユーザーID, パスワードを作成すると、以下のようにUbuntuの導入が完了した状態となる。
![Ubuntu-install-complete.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189034/2e3f7014-33f4-e1c1-37b2-075e3cb5fad3.png)

## (2). Ubuntuパッケージの更新と日本語化
Ubuntuを導入しただけの状態では、ロケールがCなので、Ubutuのパッケージを最新化して、日本語化する。
この記事を参考にさせていただいた。
[WSL2のUbuntu 20.04を日本語化する](https://qiita.com/myalpine/items/fb45b222924b2e61ea9f)

### 手順 1 - パッケージを最新にする
まずパッケージリストを更新する。

```shell-session
sudo apt update
```

リストにしたがって、パッケージを更新する。

```shell-session
sudo apt upgrade
```

### 手順 2 - 日本語パックを導入する

```shell-session
sudo apt -y install language-pack-ja
```

### 手順 3 - ロケールを日本語に設定する

```shell-session
sudo update-locale LANG=ja_JP.UTF8
```


ここで、Ubuntuの再起動を行う。
Ubuntuのウィンドウを、［Ctrl］＋［D］で終了。Windowsのアプリケーションリストから、「Ubuntu 20.04 LTS」を選択して起動する。
コマンドプロンプトで、localeコマンドを実行し、ロケールがja_JPに変更されていることを確認する。
![Ubuntu-locale.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189034/3b0a1ff5-3522-f46c-1e89-0216fcbfa732.png)
これで、Ubuntu 20.04環境は一応完成。

# 3. Db2の導入
Db2の導入作業は、以下のステップからなる。
1. Db2前提パッケージの確認
2. Db2前提パッケージの導入
3. Db2の導入

## (1). Db2前提パッケージの確認
Db2の前提パッケージをマニュアルの以下のページで確認する。
[インストールに関するその他の注意点 (Linux)](https://www.ibm.com/docs/ja/db2/11.5?topic=servers-linux)
より正確には、導入モジュールに同梱されている、db2prereqcheckツールを使用してチェックを行う。

### 手順 1 - Db2導入モジュールの解凍
db2prereqcheckツール実行のために、導入モジュールを解凍する。
WSLでは、Linuxの中から、WindowsのCドライブを/mnt/cとして参照できる。
最初に、ダウンロードしたDb2 Community Editionの導入モジュールを、
C:\temp\v11.5.8_linuxx64_server_dec.tar.gz
に置いたので、これを、Ubuntu側から解凍する。(例では、/workに解凍。)

```shell-session
mkdir /work
cd /work
tar -zxvf /mnt/c/temp/v11.5.5_linuxx64_server_dec.tar.gz
```
解凍すると、server_decというディレクトリができる。
解凍内容を確認する。
```shell-session
test:/$ ls -l /work
合計 4
drwxr-xr-x 3 root root 4096  9月 21  2022 server_dec
test:/$ ls -l /work/server_dec
合計 88
drwxr-xr-x 6 bin bin  4096  9月 21  2022 db2
-r-xr-xr-x 1 bin bin  5207  9月 21  2022 db2_deinstall
-r-xr-xr-x 1 bin bin  5077  9月 21  2022 db2_install
-r--r--r-- 1 bin bin 16794  9月 21  2022 db2checkCOL.tar.gz
-r--r--r-- 1 bin bin  4987  9月 21  2022 db2checkCOL_readme.txt
-r-xr-xr-x 1 bin bin  5254  9月 21  2022 db2ckupgrade
-r-xr-xr-x 1 bin bin  5041  9月 21  2022 db2ls
-r-xr-xr-x 1 bin bin  5059  9月 21  2022 db2prereqcheck
-r-xr-xr-x 1 bin bin  5059  9月 21  2022 db2setup
-r-xr-xr-x 1 bin bin  5095  9月 21  2022 installFixPack
test:/$
```
### 手順 2 - db2prereqcheckの実行
server_decの下にある、db2prereqcheckを実行する。
-vオプションで、検査するDb2のバージョンを指定するが、今回は11.5.8.0となる。
```
test:/work/server_dec# ./db2prereqcheck -v 11.5.8.0

==========================================================================

Tue Sep 12 16:21:54 2023
DB2 インストールの前提条件を検査しています。バージョン「11.5.8.0」。オペレーティング・システム「Linux」

「カーネル・レベル 」の妥当性検査を実行しています...
   最小の必須オペレーティング・システム・カーネル・レベル: 「3.10.0」。
   実際のオペレーティング・システム・カーネル・レベル: 「5.15.90.1」。
   要件が一致しました。

「Linux ディストリビューション 」の妥当性検査を実行しています...
   最小必須「UBUNTU」バージョン: 「16.04」
   実際のバージョン: 「20.04」
   要件が一致しました。

「ksh symbolic link」の妥当性検査を実行しています...
   WARNING : 要件が一致しませんでした。
ERROR:
   The 'strings' utility that is used to detect prerequisite libraries
   is not present on this system.  Please use your package or software
   manager to install the GNU Binary Utilities.

「C++ ライブラリー・バージョン 」の妥当性検査を実行しています...
   最小必須 C++ ライブラリー: 「libstdc++.so.6」
   標準 C++ ライブラリーは次のディレクトリーにあります: 「/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28」。
DBT3512W  db2prereqcheck ユーティリティーは、C++ 標準ライブラリー libstdc++ の現在インストールされているバージョンの判別に失敗しました。
   要件が一致しました。

「libaio.so バージョン 」の妥当性検査を実行しています...
DBT3553I  db2prereqcheck ユーティリティーは正常に libaio.so.1 ファイルをロードしました。
   要件が一致しました。

「libnuma.so バージョン 」の妥当性検査を実行しています...
DBT3610I  db2prereqcheck ユーティリティーは正常に libnuma.so.1 ファイルをロードしました。
   要件が一致しました。

「/lib/i386-linux-gnu/libpam.so*」の妥当性検査を実行しています...
   DBT3514W  db2prereqcheck ユーティリティーは次の 32 ビット・ライブラリー・ファイルの検出に失敗しました: 「/lib/i386-linux-gnu/libpam.so*」。
   WARNING : 要件が一致しませんでした。
DB2 データベース「Server」 の要件と一致しませんでした。バージョン:「11.5.8.0」。
現行システムで満たされていない前提条件の要約:
   DBT3514W  db2prereqcheck ユーティリティーは次の 32 ビット・ライブラリー・ファイルの検出に失敗しました: 「/lib/i386-linux-gnu/libpam.so*」。


DBT3619W db2prereqcheck ユーティリティーは、ksh が ksh または ksh93 にリンクされていないことを検出しました。 これは、Tivoli SA MP を使用する Db2 高可用性フィーチャーに必要です。

test:/work/server_dec#
```
エラーまたは警告となっているのは、以下のパッケージ。
- ksh, ksh93
- binutils (GNU Binary Utilities)
- lib32stdc++6: 32ビット版の非SQLルーチンや、JDBCタイプ2ドライバーの32ビットアプリケーションがなければ不要。
- libpam0g: エラーメッセージで/lib/i386-linux-gnu/libpam.so*となっている32bit版のlibpam. 64bit版のlibpamは標準で導入されているが、32bitの非SQLルーチンや、32bit JDKを用いたType2 JDBCアプリケーションがある場合は、この32bit版が必要。

## (2). Db2前提パッケージの導入
### 手順 1 - 32bitライブラリの追加を可能にする
上述のように、Db2は一部32bit版のライブラリを前提とする。しかし、32bit版のライブラリは、単にapt-get installするだけでは導入されないので、32bitアーキテクチャのライブラリが許容されるようにして、ライブラリ情報を更新する。
以下は、Ubuntuのコマンドウィンドウで実行する。

```shell-session
sudo dpkg --add-architecture i386
sudo apt update
```

### 手順 2 - パッケージの導入
以下のコマンドを実行し、必要なパッケージを導入する。

```shell-session
sudo apt -y install ksh ksh93
sudo apt -y install binutils
sudo apt -y install lib32stdc++6
sudo apt -y install libpam0g:i386
```

### 手順 3 - db2prereqcheckによる再確認

`db2prereqcheck -v 11.5.8.0`を再実行して、エラーが無いことを確認。

## (3). Db2の導入
Db2の導入は通常rootで実行する。他のユーザーでも可能だが、rootの方が一般的であるので、以下の手順は
`sudo su`
を実行し、rootユーザーとして実行する。

### 手順 1 - db2_installの実行
「(1). Db2前提パッケージの確認」で導入モジュールを解凍してできた、server_decディレクトリにある、db2_installコマンドを以下のように実行する。
db2_installコマンドの-f NOTSAMPはクラスタソフトであるTivoli System Automation for Multiplatformsを導入しないため、-L JPは日本語パックを導入するための指定である。

```shell-session
cd /work/server_dec
./db2_install -f NOTSAMP -L JP
```
db2_installコマンドを実行すると、最初にいくつかの質問への回答を求められるが、以下のように回答する。
- ライセンスへの同意：yes
- 導入ディレクトリ：デフォルトを受け入れるならyes。変更する場合はnoと答えて、新しいパス名を指定する。
- 導入する製品の種類：SERVER

以下は実行例である。

```
root:/work/server_dec# ./db2_install -f NOTSAMP -L JP
db2/license ディレクトリーにある使用許諾契約書ファイルをお読みください。

***********************************************************
ご使用条件に同意する場合は、「yes」と入力します。同意しない場合は、「no」と入力してインストール処理をキャンセルします。[yes/no]
yes

製品をインストールするデフォルト・ディレクトリー - /opt/ibm/db2/V11.5

***********************************************************
デフォルト・ディレクトリー (/opt/ibm/db2/V11.5) にインストールしますか? [yes/no]
yes

DB2 製品をインストールために次の中からキーワードを 1 つ指定してください。

  SERVER
  CONSV
  CLIENT
  RTCL

製品名を再度表示するには「help」と入力してください。

終了するには「quit」と入力してください。

***********************************************************
SERVER
DB2 インストールを初期化しています。

 実行されるタスクの合計数: 58
実行される全タスクの合計見積もり時間: 2412 秒

タスク #1 を開始します。
説明: ご使用条件受諾のチェック
見積もり時間 1 秒
タスク #1 が終了しました。

タスク #2 を開始します。
説明: root 特権を使用したインストールのための基本クライアント・サポート
見積もり時間 3 秒
タスク #2 が終了しました。

タスク #3 を開始します。
説明: 製品メッセージ - 英語
見積もり時間 14 秒
タスク #3 が終了しました。

　　　　　：
         中略
　　　　　：

タスク #58 を開始します。
説明: グローバル・プロファイル・レジストリーの更新
見積もり時間 3 秒
タスク #58 が終了しました。

正常に実行が完了しました。

詳しくは、「/tmp/db2_install.log.50893」にある DB2
インストール・ログを参照してください。
root:/work/server_dec#

```

以上で、Db2が導入できた。

# 4. Db2インスタンスとデータベースの作成
Db2を使用するには、インスタンスが必要である。
インスタンスは、Db2の起動/停止の単位であり、Linux上では、db2syscというプロセスとして稼働する。
同一OS上に、複数のインスタンスを作成することができる。インスタンスは、同じバージョン、フィックスパックレベルであってもよいし、異なっていてもよい。
一つのインスタンスには、複数のデータベースを作成することができる。
インスタンスを作成するためには、インスタンス用のユーザー(インスタンスオーナー)を用意する必要がある。インスタンス環境は、インスタンスオーナーのホームディレクトリに作成される。
インスタンスを作成したら、Db2に付属のスクリプトを実行して、SAMPLEデータベースを作る。自分で作りたいデータベースがあれば、SAMPLEデータベースを作る必要はない。何かデータベースを作成してみて、ちょっとしたSQLを実行確認して、完了である。
## (1). インスタンス用ユーザーの作成
Db2のインスタンスを作成するために、インスタンスオーナーと、フェンスユーザー(プロシージャ実行用ユーザー)を作成する。
インスタンスオーナーのデフォルト名はdb2inst1であるが、ここでは、同一WSL上に異なるバージョンのDb2を追加導入する可能性を考え、複数インスタンスを区別できるようにバージョン名のついた名前(db2i115)とする。
以下のユーザーID、グループIDを作成する。

| ユーザーの種類        | ユーザー名| UID| グループ名| GID |
|:--------------------:|:---------:|:--:|:--------:|:---:|
| インスタンスオーナー  | db2i115  |1001 |db2iadm1  |1001 |
|  フェンスユーザー     | db2fenc1 |1002 |db2fgrp1  |1002 |

ユーザー名、グループ名は8文字以下、英小文字、数字、_ (下線) が使用できる。一般のユーザー名は、128文字以下で、使用可能な記号も多いが、インスタンスオーナーとフェンスユーザーは特別である。GIDは100-65535の範囲で割り振る。
追加したユーザーはデフォルトでは、sudoできない。インスタンスオーナーは特権コマンドを使用したい場合もあるので、sudoグループに追加しておくと便利である。

Ubuntu上で以下を実行する。

```shell-session
sudo groupadd -g 1001 db2iadm1
sudo groupadd -g 1002 db2fgrp1
sudo useradd -m -u 1001 -g 1001 -G sudo db2i115
sudo useradd -m -u 1002 -g 1002 db2fenc1
```

## (2). インスタンスの作成
### 手順 1 - インスタンス作成コマンドの実行
db2icrtコマンドを実行して、インスタンスを作成する。
インスタンスを作成するコマンド`db2icrt`のシンタックスは、
`db2icrt -u フェンスユーザー名 インスタンス名`
である。

```shell-session
cd /opt/ibm/db2/V11.5/instance
sudo ./db2icrt -u db2fenc1 db2i115
```

以下は実行例。

```
test:/opt/ibm/db2/V11.5/instance$ sudo ./db2icrt -u db2fenc1 db2i115
DBI1446I    db2icrt コマンドの実行中です。


DB2 インストールを初期化しています。

 実行されるタスクの合計数: 4
実行される全タスクの合計見積もり時間: 309 秒

タスク #1 を開始します。
説明: デフォルト・グローバル・プロファイル・レジストリー変数の設定
見積もり時間 1 秒
タスク #1 が終了しました。

タスク #2 を開始します。
説明: インスタンス・リストの初期化
見積もり時間 5 秒
タスク #2 が終了しました。

タスク #3 を開始します。
説明: DB2 インスタンスの構成
見積もり時間 300 秒
タスク #3 が終了しました。

タスク #4 を開始します。
説明: グローバル・プロファイル・レジストリーの更新
見積もり時間 3 秒
タスク #4 が終了しました。

正常に実行が完了しました。

詳しくは、「/tmp/db2icrt.log.1243」にある DB2
インストール・ログを参照してください。
DBI1070I    プログラム db2icrt は正常に完了しました。
```

### 手順 2 - インスタンスホームの確認
ここで、db2i115ユーザーとして、ホームディレクトリ(/home/インスタンスオーナーのユーザー名)の下にsqllibディレクトリが作成されていることを確認する。
以下は実行例。

```shell-session
test:/opt/ibm/db2/V11.5/instance$ sudo su - db2i115
$ pwd
/home/db2i115
$ ls -l
合計 4
drwxrwsr-t 20 db2i115 db2iadm1 4096  9月 12 18:14 sqllib
$ ls -la
合計 44
drwxr-xr-x  7 db2i115 db2iadm1 4096  9月 12 18:15 .
drwxr-xr-x  5 root    root     4096  9月 12 18:12 ..
-rw-r--r--  1 db2i115 db2iadm1  220  2月 25  2020 .bash_logout
-rw-r--r--  1 db2i115 db2iadm1 3919  9月 12 18:13 .bashrc
drwxr-xr-x  3 db2i115 db2iadm1 4096  9月 12 18:13 .config
drwxr-xr-x  3 db2i115 db2iadm1 4096  9月 12 18:13 .ibm
-rw-r--r--  1 db2i115 db2iadm1 2278  1月 28  2020 .kshrc
drwxr-xr-x  2 db2i115 db2iadm1 4096  9月 12 18:15 .landscape
drwxr-xr-x  3 db2i115 db2iadm1 4096  9月 12 18:13 .local
-rw-r--r--  1 db2i115 db2iadm1    0  9月 12 18:15 .motd_shown
-rw-r--r--  1 db2i115 db2iadm1  974  9月 12 18:13 .profile
drwxrwsr-t 20 db2i115 db2iadm1 4096  9月 12 18:14 sqllib
$
```

### 手順 3 - Db2インスタンスの起動
インスタンスオーナーのユーザーで、Db2インスタンスを起動してみる。

```shell-session
$ db2start
09/12/2023 18:21:31     0   0   SQL1063N  DB2START の処理が正常に終了しました。
SQL1063N  DB2START の処理が正常に終了しました。
```

稼働プロセスの一覧を見ると、db2syscプロセスが起動している。

```shell-session
$ ps -ef | grep db2
root       96904       1  0 18:13 ?        00:00:00 /opt/ibm/db2/V11.5/bin/db2fmcd
root      107090     548  0 18:15 pts/0    00:00:00 sudo su - db2i115
root      107091  107090  0 18:15 pts/0    00:00:00 su - db2i115
db2i115   107093       1  0 18:15 ?        00:00:00 /lib/systemd/systemd --user
db2i115   107094  107093  0 18:15 ?        00:00:00 (sd-pam)
db2i115   107099  107091  0 18:15 pts/0    00:00:00 -sh
db2i115   107319     547  0 18:19 pts/0    00:00:00 /home/db2i115/sqllib/bin/db2bp 107099A1001 5 A
root      107390     547  0 18:21 pts/0    00:00:00 db2wdog 0 [db2i115]
db2i115   107392  107390  0 18:21 pts/0    00:00:00 db2sysc 0
root      107406  107390  0 18:21 pts/0    00:00:00 db2ckpwd 0
root      107407  107390  0 18:21 pts/0    00:00:00 db2ckpwd 0
root      107408  107390  0 18:21 pts/0    00:00:00 db2ckpwd 0
db2i115   107410  107390  0 18:21 pts/0    00:00:00 db2vend (PD Vendor Process - 1) 0
db2i115   107422  107390  0 18:21 pts/0    00:00:00 db2acd 0 ,0,0,0,1,0,0,00000000,0,0,0000000000000000,0000000000000000,00000000,00000000,00000000,00000000,00000000,00000000,0004,0000000f,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000344e12000,0000000000000000,0000000000000000,1,0,0,,,,,a89f30,14,1e014,2,0,1,0000000000041fc0,0x240000000,0x240000000,1600000,3,2,18
db2i115   107500  107099  0 18:24 pts/0    00:00:00 ps -ef
db2i115   107501  107099  0 18:24 pts/0    00:00:00 grep db2
$
```

## (3). SAMPLEデータベースの作成
### 手順 1 - (オプション) Db2 SAMPLEデータベースの作成
Db2には、SAMPLEデータベースの作成スクリプトが付いているので、これを実行してSAMPLEデータベースを作成する。作りたいデータベースが決まっている場合は必要ない。
インスタンスオーナーで`db2sampl`コマンドを実行する。

```
$ db2sampl

  Creating database "SAMPLE"...
  Connecting to database "SAMPLE"...
  Creating tables and data in schema "DB2I115"...
  Creating tables with XML columns and XML data in schema "DB2I115"...

  'db2sampl' processing complete.
```

### 手順 2 - (オプション) Db2 SAMPLEデータベースに接続する
SAMPLEデータベースに接続して、正常稼働を確認する。
データベースへの接続や、表のリスト方法など、基本的な操作は、以下の記事を参照していただきたい。
[はじめて使うDb2 - コマンドの実行、基本操作](https://qiita.com/kayokok/items/ffd37a6f40cb714412f6)
表の一覧(list tables)で、employee, departmentなどの表があれば正常。
SAMPLEデータベースの表情報は以下にある。
[SAMPLE データベース](https://www.ibm.com/docs/ja/db2/11.5?topic=samples-sample-database)

```shell-session
$ db2 connect to sample

   データベース接続情報

 データベース・サーバー = DB2/LINUXX8664 11.5.8.0
 SQL 許可 ID            = DB2I115
 ローカル・データベース別名 = SAMPLE

$ db2 list tables

表/ビュー                       スキーマ        タイプ 作成時刻
------------------------------- --------------- ----- --------------------------
ACT                             DB2I115         T     2023-09-12-18.25.32.543708
ADEFUSR                         DB2I115         S     2023-09-12-18.25.33.405373
CATALOG                         DB2I115         T     2023-09-12-18.25.34.988905
CL_SCHED                        DB2I115         T     2023-09-12-18.25.31.494195
CUSTOMER                        DB2I115         T     2023-09-12-18.25.34.648159
DEPARTMENT                      DB2I115         T     2023-09-12-18.25.31.569487
DEPT                            DB2I115         A     2023-09-12-18.25.31.713896
EMP                             DB2I115         A     2023-09-12-18.25.31.848690
EMPACT                          DB2I115         A     2023-09-12-18.25.32.543063
EMPLOYEE                        DB2I115         T     2023-09-12-18.25.31.714636
EMPMDC                          DB2I115         T     2023-09-12-18.25.33.554107
                         :
                        中略
                         :
VPROJACT                        DB2I115         V     2023-09-12-18.25.32.860900
VPROJRE1                        DB2I115         V     2023-09-12-18.25.32.881016
VPSTRDE1                        DB2I115         V     2023-09-12-18.25.32.884842
VPSTRDE2                        DB2I115         V     2023-09-12-18.25.32.889274
VSTAFAC1                        DB2I115         V     2023-09-12-18.25.32.895564
VSTAFAC2                        DB2I115         V     2023-09-12-18.25.32.899618

  47 レコードが選択されました。

$
```

以上で、WSL環境の構築からDb2の稼働までが完了した。
後は、自由にテスト可能である。

注意：この記事では、Db2 11.5 Community Editionの環境を簡単に構築することを目的とし、導入時のオプションや、インスタンス構成の詳細は省略している。より詳しい情報を必要とする場合は、マニュアルを参照いただきたい。
[Db2 サーバーおよび IBM データ・サーバー・クライアント](https://www.ibm.com/docs/ja/db2/11.5?topic=installing-db2-database-servers)
[インスタンス](https://www.ibm.com/docs/ja/db2/11.5?topic=administration-instances)

以上