db2set でレジストリ変数を設定して、db2set で読み返すと値も入っている。それなのに挙動が変わらない、という状態の話です。
先に切り分けの前提を書くと、変数名のタイポと値の誤りは、その場でエラーになります。DBI1302E(名前)と DBI1301E(値)です。何もエラーが出ていないのに効かないなら、疑うのは名前ではなくスコープ・反映タイミング・構成の3つです。
まず見る(結論)
確認は -all を付けてください。引数なしの db2set はインスタンスレベルの値しか返しません。環境変数で上書きされていても表示されないため、「値は正しい」と誤判定します。
db2set -all
db2set -info <変数名>
1つ目でどのスコープの値が効いているか、2つ目で再起動が要るかどうかが分かります。-info は Db2 が変数ごとの反映タイミングを答えるオプションです。
症状 → 原因 → 対処(逆引き)
| 症状 | 原因 | まず打つ手 |
|---|---|---|
db2set -all に [e] の行がある |
環境変数が設定値に勝っている | シェル・db2profile・systemd のユニットファイルから該当の環境変数を外す |
db2set -info が Immediate change supported : NO |
そもそも即時反映できない変数 | インスタンスを再起動する |
supported : YES だが Immediate by default : NO |
-im を付けずに設定した |
db2set -im <変数>=<値> で設定し直す |
DBI1302E(終了コード 254) |
変数名が存在しない(タイポ) | db2set -lr で正しい名前を確認する |
DBI1301E(終了コード 254) |
その変数に許されない値 | 値を修正する。設定は入っていない |
DBI1303W(終了コード 252) |
変数名は正しいが未設定 | 設定されていないだけ。名前の誤りと区別できる |
エラーは出ない。db2set -all にも出る。それでも効かない |
その構成では意味を持たない変数 | pureScale 専用変数などを設定していないか確認する |
db2set -g(グローバルレベル)は、設定も読み取りも root 権限が必要です。インスタンス所有者で叩くと DBI1052E(終了コード 28)になります。値そのものは db2set -all の [g] 行で読めます。
名前と値は検証されるのに、その変数が今の構成で意味を持つかどうかは検証されません。実際、CF が存在しない非 pureScale のインスタンスでも、DB2_SD_ALLOW_SLOW_NETWORK や DB2_DATABASE_CF_MEMORY といった pureScale 専用の変数が終了コード 0 で設定でき、db2set -all にも並びます。db2set -lr の一覧にも出るので、名前を調べた側からは有効な変数に見えます。
戻すときの注意も1つ。-null は削除ではありません。db2set -null <変数> は値を NULL にする操作で、db2set -all には残り続けます。消すのは db2set <変数>= の方です。
それでも切り分からないとき(実機ログつきの詳解)
対応変数 256 個すべてに -info を当てて調べた結果(即時反映できるのは 111 個、うち -im を明示しないと効かない 16 個の一覧)、-im を非対応の変数に付けたときに終了コードが 0 にならない件、スコープ記号の並び順まで含めた解説は、Zennのフル記事にまとめています。
関連: Db2が起動しない・接続だけ落ちる ― メモリ設定を疑うときの逆引き / Db2「SQL1032N」インスタンス未起動の原因を切り分ける
容量で止まらないための表スペース・ストレージグループの設計と、監視をどこに張るかを、本書 第2章「インスタンス・DB構成パラメーターの選定基準」で「なぜその値にするのか」から解説しています。
現場で引ける Db2 の教科書
現場で引ける!Db2実践エンジニア・バイブル
Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。
アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集。