Db2 on CP4Dへの接続 - NodePort サービスを使用して接続する

Cloud Pak for Data 内のDb2サービスへ接続できた4つの方法をご紹介しています。 使用頻度が高いと思われる順に記事を並べました。

1. ["データベース詳細"を使用して"プラットフォーム接続"を作成する](https://qiita.com/mi-shimo/items/7abf2bb699c7c4267cce)
1. [NodePort サービスを使用して接続する](https://qiita.com/mi-shimo/items/f52aea45dad0835b29cc)
1. [ClusterIP サービスを使用して接続する](https://qiita.com/mi-shimo/items/2f0d5caa654e5721271d)
1. [Db2 Podに直接接続する](https://qiita.com/mi-shimo/items/32f8609975caf0015b56)


ここでは Db2 NodePort サービスを使用して接続を作成します。
ROKS (Red Hat OpenShift Kubernetes Service)に 2つ Db2 デプロイメントを作成し、１つを Db2 サーバー１つをクライアントとみなして、Db2 NodePort サービスを使用してDb2 サーバー上のデータベースに接続します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/6a808520-9c54-3df3-fdfd-a5855e35503f.png)


## Db2 NodePort サービスの接続情報を得る

Db2サービスへの接続情報は Cloud Pak for Data コンソールの"データベース詳細"から入手できます。

ここでは　あえてコマンドでDb2サービスへの接続情報を入手しています。
事前準備として　作業するOpenShiftクラスターに`oc login`しておきましょう。
Cloud Pak for Data 内の 接続したいDb2 サービス (Db2 デプロイメント ID) を db2ucluster変数に登録します。 Db2 がデプロイされている OpenShift プロジェクトは zen です。
```
[user99@bastion7 ~]$ db2ucluster=db2oltp-1668582373852911
[user99@bastion7 ~]$ echo ${db2ucluster}
db2oltp-1668582373852911
[user99@bastion7 ~]$
```
プロジェクトをzenに切り替え　確認のため Db2uCluster カスタム・リソースをリストします。
```
# 実行コマンド
oc get db2ucluster $db2ucluster

# 実行結果例
[user99@bastion7 ~]$ oc project zen
Already on project "zen" on server "https://c101-e.jp-osa.containers.cloud.ibm.com:32291".
[user99@bastion7 ~]$ oc get db2ucluster $db2ucluster
NAME                       STATE   MAINTENANCESTATE   AGE
db2oltp-1668582373852911   Ready   None               7d16h
[user99@bastion7 ~]$
```
### NODE 
Db2 Podは　c-${db2ucluster}-db2u-0 ( c-db2oltp-1668505262111014-db2u-0 )となります。
ここで このPodがNODE 10.248.64.30にあることを確認します。
```
[user99@bastion7 ~]$ oc get pod c-${db2ucluster}-db2u-0 -o wide
NAME                                READY   STATUS    RESTARTS   AGE     IP              NODE           NOMINATED NODE   READINESS GATES
c-db2oltp-1668582373852911-db2u-0   1/1     Running   0          2d11h   172.17.49.247   10.248.64.30   <none>           <none>
[user99@bastion7 ~]$
```
### データベース名 : BLUDB 

Db2 Pod に入ってDb2 インスタンスユーザー db2inst1に切り替えデータベース名を確認します。
データベース名は BLUDBです。
```
[user99@bastion7 ~]$ oc exec -it c-${db2ucluster}-db2u-0 -- bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2oltp-1668582373852911-db2u-0 /]$ su - db2inst1
Last login: Wed Nov 23 23:28:40 UTC 2022
[db2inst1@c-db2oltp-1668582373852911-db2u-0 - Db2U db2inst1]$ db2 list db directory

 System Database Directory

 Number of entries in the directory = 1

Database 1 entry:

 Database alias                       = BLUDB
 Database name                        = BLUDB
 Local database directory             = /mnt/blumeta0/db2/databases
 Database release level               = 15.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

[db2inst1@c-db2oltp-1668582373852911-db2u-0 - Db2U db2inst1]$
```

### Db2 NodePortサービス　
c-${db2ucluster}-db2u-engn-svc (c-db2oltp-1667551495166538-db2u-engn-svc)　が Db2 on Cloud Pak for Data が提供するDb2 NodePortサービスです。
```
# 実行コマンド
oc get service -o wide c-${db2ucluster}-db2u-engn-svc

# 実行結果例
[user99@bastion7 ~]$ oc get service -o wide c-${db2ucluster}-db2u-engn-svc
NAME                                       TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                           AGE     SELECTOR
c-db2oltp-1668582373852911-db2u-engn-svc   NodePort   172.21.148.93   <none>        50000:31279/TCP,50001:31138/TCP   7d16h   app=db2oltp-1668582373852911,component=db2oltp,formation_id=db2oltp-1668582373852911,role=db,type=engine
[user99@bastion7 ~]$
```
Db2 NodePortサービスで使用するポートを取得します。　各Db2デプロイメントで割り当てられているポートの値は異なるので、異なるDb2デプロイメントへ接続するときはするときは必ず確認するようにします。
#### 非 SSL ポート取得　
非 SSL ポート情報はDb2 NodePortサービス(c-${db2ucluster}-db2u-engn-svc)に`legacy-server`として登録されています。
次の結果から　非 SSL ポートは この環境では`31279`になります。
```
# 実行コマンド
oc get svc c-${db2ucluster}-db2u-engn-svc -o jsonpath='{.spec.ports[?(@.name=="legacy-server")].nodePort}{"\n"}'

# 実行結果例
[user99@bastion7 ~]$ oc get svc c-${db2ucluster}-db2u-engn-svc -o jsonpath='{.spec.ports[?(@.name=="legacy-server")].nodePort}{"\n"}'
31279
[user99@bastion7 ~]$
```

#### SSL ポート取得　
SSL ポートも確認しておきましょう。　SSL ポート情報はDb2 NodePortサービス(c-${db2ucluster}-db2u-engn-svc)に`ssl-server`として登録されています。
次の結果から　SSL ポートは この環境では`31138`になります。
```
# 実行コマンド
oc get svc c-${db2ucluster}-db2u-engn-svc -o jsonpath='{.spec.ports[?(@.name=="ssl-server")].nodePort}{"\n"}'

# 実行結果例
[user99@bastion7 ~]$ oc get svc c-${db2ucluster}-db2u-engn-svc -o jsonpath='{.spec.ports[?(@.name=="ssl-server")].nodePort}{"\n"}'
31138
[user99@bastion7 ~]$
```



## 接続情報のまとめ
### 接続情報取得のためのリソース情報
| Db2サービスリソース情報                          | 値           |
| -------------------------------- | ------------ | 
| OpenShift プロジェクト         | zen | 
| Db2uCluster カスタム・リソース     | ${db2ucluster}         |
| Db2 Pod                         | c-${db2ucluster}-db2u-0 | 
| Db2 インスタンスユーザー       | db2inst1        |  
| Db2 NodePortサービス　       | c-${db2ucluster}-db2u-engn-svc   | 

### 取得した接続情報
| 接続情報               　| 値           |                                                |
| ------------------------| ------------ | ---------------------------------------------- |
| host_name_or_IP_address | 10.248.64.33 | Cloud Pak for Dataインスタンスのホスト名または IP アドレス。    |
| Database_name           | BLUDB        | Db2 データベース           |
| db2_port                | 31279        | Db2 インスタンスのポート番号|
| db2_ssl_port            | 31138        | Db2 の Secure Sockets Layer (SSL) インスタンスのポート番号。 |

- SSL接続用の証明書ファイルは  "データベース詳細"からダウンロードしておきましょう。


## Db2 データベースをカタログして接続する。
ここでは　Cloud Pak for Data にもう一つDb2サービスをデプロイして　Db2クライアントとして使用します。
今回 Db2 Clientとして使用する Db2のPodは `c-db2oltp-1668505262111014-db2u-0` です。
Db2 Client Podに入ってDb2 インスタンスユーザー db2inst1に切り替えておきます。

```
[user99@bastion7 ~]$ oc exec -it c-db2oltp-1668505262111014-db2u-0 -- bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2oltp-1668505262111014-db2u-0 /]$ su - db2inst1
Last login: Thu Nov 24 00:34:59 UTC 2022
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```

次の値を使用して　Dbサーバー上にあるデータベース BLUDBに接続します。

| 設定項目                          | 値           |                                                    |
| -------------------------------- | ----------- | -------------------------------------------------- |
| database_alias_name | bludbsvc    | リモート Db2 データベースのエイリアス名     |
| Server_alias_name   | db2svc      | Db2 インスタンスのリモート・サーバーのエイリアス |
| authentication_method |ユーザー名とパスワード – SERVER_ENCRYPT       | リモート・データベースに接続するための認証方式:                           |

### Catalog TCP/IP Node
今回はdb2_port(非SSL Port)を使用して Nodeをカタログします。
```
# 実行コマンド
db2 catalog tcpip node server_alias_name remote host_name_or_IP_address server db2_port

# 本環境での実行コマンド
db2 catalog tcpip node db2svc remote 10.248.64.33 server 31279

# 実行結果
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 catalog tcpip node db2svc remote 10.248.64.33 server 31279
DB20000I  The CATALOG TCPIP NODE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 list node directory

 Node Directory

 Number of entries in the directory = 1

Node 1 entry:

 Node name                      = DB2SVC
 Comment                        =
 Directory entry type           = LOCAL
 Protocol                       = TCPIP
 Hostname                       = 10.248.64.33
 Service name                   = 31279

[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```
### Catalog Database
```
# 実行コマンド
db2 catalog db database_name as database_alias_name at node server_alias_name authentication authentication_method

# 本環境での実行コマンド
db2 catalog db BLUDB as bludbsvc at node DB2SVC authentication SERVER_ENCRYPT

# 実行結果
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 catalog db BLUDB as bludbsvc at node DB2SVC authentication SERVER_ENCRYPT
DB20000I  The CATALOG DATABASE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 list db directory

 System Database Directory

 Number of entries in the directory = 2
(省略)

Database 2 entry:

 Database alias                       = BLUDBSVC
 Database name                        = BLUDB
 Node name                            = DB2SVC
 Database release level               = 15.00
 Comment                              =
 Directory entry type                 = Remote
 Authentication                       = SERVER_ENCRYPT
 Catalog database partition number    = -1
 Alternate server hostname            =
 Alternate server port number         =

[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```
### データベースへ接続

ユーザーIDとパスワードを指定して　データベースに接続します。
```
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 connect to BLUDBSVC user user02 using xxxxxx

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.7.0
 SQL authorization ID   = USER02
 Local database alias   = BLUDBSVC

[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```

接続できました。

## JDBC接続
クライアントとして利用したDb2 PodからJDBC接続を行ってみましょう。
Db2サービスなので　Podには　JavaやIBM Data Server Driver for JDBC and SQLJが導入されています。
Db2データベースへの接続テストができるDb2Jccを利用して接続を確認します。

今回 Db2 Clientとして使用する Db2のPod `c-db2oltp-1668505262111014-db2u-0` に入ります。

```
[user99@bastion7 ~]$ oc exec -it c-db2oltp-1668505262111014-db2u-0 -- bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2oltp-1668505262111014-db2u-0 /]$ 
```
PATH, CLASSPATHを設定します。
```
DB2JDBCPATH=/mnt/bludata0/home/db2inst1/sqllib/java
export PATH=${PATH}:.:${DB2JDBCPATH}/jdk64/bin
export CLASSPATH=${DB2JDBCPATH}/db2java.zip:${DB2JDBCPATH}/sqlj.zip:${DB2JDBCPATH}/db2jcc_license_cu.jar:${DB2JDBCPATH}/db2jcc4.jar:.
```

### 非 SSL ポートを使用して接続する場合

基本の接続文字列は　非 SSL ポートで接続する場合　 `jdbc:db2://<host_name_or_IP_address>:<db2_port>/<Database_name>` この環境では `jdbc:db2://10.248.64.33:31279/BLUDB` となります。

Db2Jccで接続確認を行ってみましょう。
```
# 実行コマンド
java com.ibm.db2.jcc.DB2Jcc \
-url "jdbc:db2://10.248.64.33:31279/BLUDB" \
-user user02 -password xxxxx \
-version

# 実行結果
[db2uadm@c-db2oltp-1668505262111014-db2u-0 ~]$ java com.ibm.db2.jcc.DB2Jcc \
> -url "jdbc:db2://10.248.64.33:31279/BLUDB" \
> -user user02 -password xxxxx \
> -version


[jcc][10521][13706]Command : java com.ibm.db2.jcc.DB2Jcc -url jdbc:db2://10.248.64.33:31279/BLUDB -user user02 -password ******** -version


IBM Data Server Driver for JDBC and SQLJ 4.31.10
[jcc][10516][13709]Test Connection Successful.

DB product version = SQL110570
DB product name = DB2/LINUXX8664
DB URL = jdbc:db2://10.248.64.33:31279/BLUDB
DB Drivername = IBM Data Server Driver for JDBC and SQLJ
DB OS Name = Linux
[db2uadm@c-db2oltp-1668505262111014-db2u-0 ~]$
```

### SSL ポートを使用して接続する場合

セキュリティーの要件で接続プロパティーを追加します。例えばこの環境で
- SSL接続　`sslConnection=true`
  - Db2 の Secure Sockets Layer (SSL) インスタンスのポート番号(db2_ssl_port) `31138`を使用
- 証明書ファイル db2-ssl.cert `sslCertLocation=db2-ssl.cert`
  - "データベース詳細"からダウンロードして現行ディレクトリーに保管
- 暗号化されたユーザー ID およびパスワード `securityMechanism=9`
- 256 ビット AES 暗号化 `encryptionAlgorithm=2`
を接続文字列に追加すると次のようになります。
```
jdbc:db2://10.248.64.33:31138/BLUDB:sslConnection=true;sslCertLocation=db2-ssl.cert;encryptionAlgorithm=2;securityMechanism=9;
```
Db2Jccで接続確認を行ってみましょう。
```
# 実行コマンド
java com.ibm.db2.jcc.DB2Jcc \
-url "jdbc:db2://10.248.64.33:31138/BLUDB:sslConnection=true;sslCertLocation=db2-ssl.cert;encryptionAlgorithm=2;securityMechanism=9;" \
-user user02 -password isel4you \
-version

# 実行結果例
[db2uadm@c-db2oltp-1668505262111014-db2u-0 ~]$ java com.ibm.db2.jcc.DB2Jcc \
> -url "jdbc:db2://10.248.64.33:31138/BLUDB:sslConnection=true;sslCertLocation=db2-ssl.cert;encryptionAlgorithm=2;securityMechanism=9;" \
> -user user02 -password isel4you \
> -version


[jcc][10521][13706]Command : java com.ibm.db2.jcc.DB2Jcc -url jdbc:db2://10.248.64.33:31138/BLUDB:sslConnection=true;sslCertLocation=db2-ssl.cert;encryptionAlgorithm=2;securityMechanism=9; -user user02 -password ******** -version


IBM Data Server Driver for JDBC and SQLJ 4.31.10
[jcc][10516][13709]Test Connection Successful.

DB product version = SQL110570
DB product name = DB2/LINUXX8664
DB URL = jdbc:db2://10.248.64.33:31138/BLUDB
DB Drivername = IBM Data Server Driver for JDBC and SQLJ
DB OS Name = Linux
[db2uadm@c-db2oltp-1668505262111014-db2u-0 ~]$
```

## db2dsdriver.cfgでSSL接続を構成する。
次は　SSL接続を構成したdb2dsdriver.cfgを作成し データベースに接続してみましょう。
### SSL接続のためのdb2dsdriver.cfgを作成する。
ここでも　Cloud Pak for Data にデプロイしたDb2サービスを　Db2クライアントとして使用します。
今回 Db2 Clientとして使用する Db2のPodは `c-db2oltp-1668505262111014-db2u-0` です。

Db2 Client Podに入ってDb2 インスタンスユーザー db2inst1に切り替えておきます。
```
[user99@bastion7 ~]$ oc exec -it c-db2oltp-1668505262111014-db2u-0 -- bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2oltp-1668505262111014-db2u-0 /]$ su - db2inst1
Last login: Thu Nov 24 00:34:59 UTC 2022
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```
db2cli を使用してdb2dsdriver.cfgを作成することができます。

```
# 実行コマンド例
#- db2cli writecfg add -database <Database_name> -host <host_name_or_IP_address> -port <db2_ssl_port> 
db2cli writecfg add -database BLUDB -host 10.248.64.33 -port 31138 

#- db2cli writecfg add -dsn <Database_alias>  -database <Database_name> -host <host_name_or_IP_address> -port <db2_ssl_port>
db2cli writecfg add -dsn BLUDBDSN  -database BLUDB -host 10.248.64.33 -port 31138

#- db2cli writecfg add -database BLUDB -host <host_name_or_IP_address> -port <db2_ssl_port> -parameter "<parameter>"
#-- Authentication 設定
db2cli writecfg add -database BLUDB -host 10.248.64.33 -port 31138 -parameter "Authentication=SERVER_ENCRYPT"
#-- SSLを使用する
db2cli writecfg add -database BLUDB -host 10.248.64.33 -port 31138 -parameter "SecurityTransportMode=SSL"
#-- SSL接続用の証明書ファイルを指定。完全パスファイル名で指定する。
db2cli writecfg add -database BLUDB -host 10.248.64.33 -port 31138 -parameter "SSLServerCertificate=/mnt/blumeta0/home/db2inst1/ssl/db2-ssl.cert" 
```
上に示したコマンドを実行して得られるdb2dsdriver.cfg($HOME/sqllib/cfg/db2dsdriver.cfg)が次です。
```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<configuration>
  <databases>
    <database host="10.248.64.33" name="BLUDB" port="31138">
      <parameter name="Authentication" value="SERVER_ENCRYPT"/>
      <parameter name="SecurityTransportMode" value="SSL"/>
      <parameter name="SSLServerCertificate" value="/mnt/blumeta0/home/db2inst1/ssl/db2-ssl.cert"/>
    </database>
  </databases>

  <dsncollection>
    <dsn alias="BLUDBDSN" host="10.248.64.33" name="BLUDB" port="31138"/>
  </dsncollection>



</configuration>
```
### db2cliを使ってデータベース接続
db2cli を使用してデータベースへのSSL接続を検証します。

```
# 実行コマンド
db2cli validate -dsn <Database_alias> -connect -user <userid> -passwd <password>


# 実行結果
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2cli validate -dsn BLUDBDSN -connect -user user02 -passwd xxxxx

===============================================================================
Client information for the current copy:
===============================================================================

Client Package Type       : IBM DB2 Enterprise Server Edition
Client Version (level/bit): DB2 v11.5.7.0 (s2209070818/64-bit)
Client Platform           : Linux/X8664
Install/Instance Path     : /opt/ibm/db2/V11.5.0.0
DB2DSDRIVER_CFG_PATH value: <not-set>
db2dsdriver.cfg Path      : /mnt/blumeta0/home/db2inst1/sqllib/cfg/db2dsdriver.cfg
DB2CLIINIPATH value       : <not-set>
db2cli.ini Path           : /mnt/blumeta0/home/db2inst1/sqllib/cfg/db2cli.ini
db2diag.log Path          : /mnt/blumeta0/db2/log/NODE0000/db2diag.log

===============================================================================
db2dsdriver.cfg schema validation for the entire file:
===============================================================================

Success: The system db2dsdriver.cfg schema validation completed successfully without any errors.

===============================================================================
db2cli.ini validation for data source name "BLUDBDSN":
===============================================================================

Note: The validation utility could not find the configuration file db2cli.ini.
The file is searched at "/mnt/blumeta0/home/db2inst1/sqllib/cfg/db2cli.ini".

===============================================================================
db2dsdriver.cfg validation for data source name "BLUDBDSN":
===============================================================================

[ Parameters used for the connection ]

Keywords                  Valid For     Value
---------------------------------------------------------------------------
DATABASE                  CLI,.NET,ESQL BLUDB
HOSTNAME                  CLI,.NET,ESQL 10.248.64.33
PORT                      CLI,.NET,ESQL 31138
AUTHENTICATION            CLI,.NET      SERVER_ENCRYPT
SECURITYTRANSPORTMODE     CLI,.NET,ESQL SSL
SSLSERVERCERTIFICATE      CLI,.NET,ESQL /mnt/blumeta0/home/db2inst1/ssl/db2-ssl.cert

===============================================================================
Connection attempt for data source name "BLUDBDSN":
===============================================================================

[SUCCESS]

===============================================================================
The validation is completed.
===============================================================================

[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```
接続できました。

### db2clpを使ってデータベース接続 (2022/11/30 追記)
db2dsdriver.cfgの構成をdb2clpで使えると　読者の方からコメントいただきました。やってみました。
```
[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$ db2 connect to BLUDBDSN user user02 using xxxxx

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.7.0
 SQL authorization ID   = USER02
 Local database alias   = BLUDB

[db2inst1@c-db2oltp-1668505262111014-db2u-0 - Db2U db2inst1]$
```
確かに接続できました。


参考文書は次のようなものになります。
- [db2cli - Db2 interactive CLI command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli)
- [SERVER_ENCRYPT authentication in CLPPlus](https://www.ibm.com/docs/en/db2/11.5?topic=clpplus-server-encrypt-authentication-in)
- [Testing the CLI connectivity with the database](https://www.ibm.com/docs/ja/db2/11.5?topic=systems-testing-cli-connectivity-database)



## おわりに
ここでは コマンドでDb2 NodePort サービスを使用するための接続情報を入手してデータベースへの接続を作成しました。


### 実施環境
- IBM Cloud VPC Gen2
- OCP 4.10.32
- CP4D 4.5.3 
  - Db2 Version 11.5.7.0-cn7

### 参照文献　（まとめ）
- [Retrieving the Db2 port number](https://www.ibm.com/docs/en/cloud-paks/cp-data/4.5.x?topic=services-retrieving-db2-port-number)
- [Cataloging the Db2 database](https://www.ibm.com/docs/en/cloud-paks/cp-data/4.5.x?topic=clients-cataloging-database)
- - [db2cli - Db2 interactive CLI command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli)
- [SERVER_ENCRYPT authentication in CLPPlus](https://www.ibm.com/docs/en/db2/11.5?topic=clpplus-server-encrypt-authentication-in)
- [Testing the CLI connectivity with the database](https://www.ibm.com/docs/ja/db2/11.5?topic=systems-testing-cli-connectivity-database)
- [DB2Jcc - IBM Data Server Driver for JDBC and SQLJ diagnostic utility](https://www.ibm.com/docs/en/db2/11.5?topic=pddsdjs-db2jcc-data-server-driver-jdbc-sqlj-diagnostic-utility)