Db2 のバージョンは、インスタンスユーザーで db2level を打つと分かります。インスタンスが止まっていても使えます。
$ db2level
DB21085I This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and DB2 code release "SQL12014" with level
identifier "02050110".
Informational tokens are "DB2 v12.1.4.0", "s2602211313", "DYN2602211313AMD64",
and Fix Pack "0".
Product is installed at "/opt/ibm/db2/V12.1".
まず見る(結論)
- 版は
Informational tokensの先頭(DB2 v12.1.4.0)。4つの数字はバージョン・リリース・モディフィケーション・フィックスパックの順 - エディション(Community か有償版か)は
db2licm -lのProduct name - SQL で取るなら
SELECT SERVICE_LEVEL, FIXPACK_NUM FROM SYSIBMADM.ENV_INST_INFO
目的 → 使うもの(逆引き)
| 知りたいこと・状況 | 使うもの | 注意 |
|---|---|---|
| 版と Fix Pack | db2level |
停止中・未接続でも使える(db2pd -v は停止中だと表示が出ても rc=2) |
| エディション・ライセンス | db2licm -l |
Version information は 12.1 までしか出ない |
| 複数の版が入っているか | db2ls |
どれを使っているかは db2level の最後の行 |
| 監視スクリプトで値を拾う | SYSIBMADM.ENV_INST_INFO |
未接続だと SQL1024N |
| 接続した先のサーバーの版 | db2 connect to の Database server 行 |
例: DB2/LINUXX8664 12.1.4.0 |
よくある取り違え
検索で見かける GETVARIABLE('SYSIBM.VERSION') は、Db2 12.1.4(LUW)では使えませんでした。
SQL0440N No authorized routine named "GETVARIABLE" of type "FUNCTION" having
compatible arguments was found. SQLSTATE=42884
SQL で版を取るなら SYSIBMADM.ENV_INST_INFO を使います。
GET DBM CFG / GET DB CFG の release level(0x1600)は構成ファイルとデータベースの形式の版で、12.1.4.0 のような製品の版とは別物です。製品の版は db2level で見ます。
それでも分からないとき(実機ログつきの詳解)
ENV_INST_INFO と ENV_PROD_INFO の列の読み方、インスタンスを止めた状態で各コマンドを打った結果、OS の版を SQL で取る方法は、Zennのフル記事にまとめています。
関連: Db2「SQL1032N」インスタンス未起動 / PostgreSQLのバージョン確認 / MySQLのバージョン確認
この記事のような現場のTIPSを、Db2運用の全体像として12章に体系化しました。公式マニュアルには載らない「あのとき知っていれば」を減らすための1冊です。
現場で引ける Db2 の教科書
現場で引ける!Db2実践エンジニア・バイブル
Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。
アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集。