Db2
アカウントはOSアカウントに依存
階層?
instance
db
(tablespace 表スペース ディスク上のボリューム・セット)
(schema)
table
index space 索引スペース
default schema は instance名(user名)と同じらしい
管理用
schema
syscat
Docker / Podman
環境変数が多いのでファイルに書き出し
# vi .env_list
code:.env_list
LICENSE=accept
DB2INSTANCE=db2inst1
DB2INST1_PASSWORD=password
DBNAME=testdb
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=false
REPODB=false
IS_OSXFS=false
PERSISTENT_HOME=true
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=
カスタマイズできそうなところ
DB2INSTANCE DB2インスタンス名 コンテナ内Linux userアカウント
DB2INST1_PASSWORD そのパスワード
DBNAME データベース名 あとから複数作成可能 空にすると作成しない
Pod にしてみる
# podman create --name db2 --restart=always --privileged=true -p 50000:50000 --env-file .env_list -v db2database:/database icr.io/db2_community/db2
# podman generate kube db2 -f db2pod.yaml
# podman rm db2
開始
# podman kube play db2pod.yaml
停止
# podman kube down db2pod.yaml
docker compose / podman compose 用
11と12でenvironmentは同じでよい
code:compose.yaml
services:
db:
image: icr.io/db2_community/db2:latest
container_name: db2
privileged: true
ports:
- "50000:50000"
environment:
LICENSE: "accept"
DB2INSTANCE: "siisise"
SIISISE_PASSWORD: "password"
DBNAME: "tomcat"
BLU: "false"
ENABLE_ORACLE_COMPATIBLITY: "false"
UPDATEAVAIL: "NO"
TO_CREATE_SAMPLEDB: "false"
REPODB: "false"
IS_OSXFS: "false"
PERSISTENT_HOME: "true"
HADR_ENABLED: "false"
ETCD_ENDPOINT:
ETCD_USERNAME:
ETCD_PASSWORD:
volumes:
- db2database:/database
volumes:
db2database:
DB2INSTANCE と DB2INST1_PASSWORD, DBNAME を変えて podman compose 用にしてみたり (Windows Podman で動作確認済み)
container_name は kube generate したい場合につけるといいかも
volume は db2database 以外に何か作られるので不要なら消せばいい?
ComposeからPodにしてしまうのもよい
# podman compose up -d
# podman kube generate db2 -f db2pod.yaml
# podman compose down
管理
# podman exec -it コンテナ名 bash -c "su - siisise"
su でDB2INSTANCE名のユーザになる
db2 コマンドで管理
$ db2
引数なしでdb2対話モードになるが、引数付きコマンドで実行も可能
db2 => CLPコマンド
db2 => SQL
$ db2 CLPコマンド
$ db2 SQL
db2 => CONNECT TO tomcat
$ db2 CONNECT TO tomcat
db2 TERMINATE まで状態が維持される
Docker/Podmanコンテナ環境(Community)ではインスタンスは1つ
table:db2
db2ilist インスタンス一覧
db2stop インスタンス停止
db2idrop インスタンス削除 (コンテナでは利用できない)
db2icrt -U アカウント,password -p Path 名前 インスタンス作成 (コンテナでは利用できない)
db2start インスタンス起動
db2 CLPコマンド CLPコマンドの実行
db2 SQL SQLの実行 (データベース接続中)
db2 -tvf SQLファイル SQLファイルの実行
table:CLP
get instance インスタンス確認
LIST DB DIRECTORY データベース一覧
CREATE DB db名 データベース作成
ACTIVATE DB db名 データベース活性化
DEACTIVATE DB db名 データベース非活性化
CONNECT TO db名 データベース接続
CONNECT RESET データベース切断
TERMINATE データベース切断、db2の終了
QUIT セッションの終了
接続中可能なコマンド
LIST TABLESPACES テーブルスペース一覧の取得
CREATE TABLESPACE tablespace名 テーブルスペース作成
LIST TABLES テーブル一覧の取得
LIST TABLES FOR SCHEMA syscat syscatのシステムテーブル一覧
SELECT * FROM SYSCAT.SCHEMATA スキーマ一覧
SQLファイル
-- コメント ハイフン2つ
JDBCドライバ
/database/config/インスタンス名/sqllib/java/ くらいにあるdb2jcc4.jar
table:JDBC
Class com.ibm.db2.jcc.DB2Driver
JDBC URL jdbc:db2://host:port/db Port 50000
DataSource com.ibm.db2.jcc.DB2SimpleDataSource
com.ibm.db2.jcc.DB2ConnectionPoolDataSource
com.ibm.db2.jcc.DB2XADataSource
jdbcx.db2.DB2DataSource (旧?)
jdbc.db2.DB2Driver (旧?)
db DBNAMEの値
user DB2INSTANCE の値
password ${user}_PASSWORD の値
code:Maven
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.9.0</version>
<type>jar</type>
</dependency>