DB2 4 min read

Db2のオフラインバックアップがFORCE APPLICATIONしても通らない ― 接続が切れないときの逆引き

オフラインの BACKUP DATABASE や RESTORE、DROP DATABASE が、次のエラーで止まることがあります。

SQL1035N  要求されたモードでは指定されたデータベースに接続できないため、操作が失敗しました。

オフライン操作はデータベースに排他で接続します。他の接続が1本でも残っていると、このエラーになります。FORCE APPLICATION ALL の後でも、LIST APPLICATIONS が空でも出ることがあります。

まず見る(結論)

次の2つを見ます。どちらもデータベースに接続せずに実行できます。

db2 list applications for db <DB名>
db2 list active databases

LIST APPLICATIONS が空なのに LIST ACTIVE DATABASES に DB 名が出ていれば、ACTIVATE DATABASE で活動化されたままです。DEACTIVATE DATABASE してからバックアップします。

症状 → 原因 → 対処(逆引き)

症状 よくある原因 まず打つ手
LIST APPLICATIONS に行がある 他の接続が残っている FORCE APPLICATION ALL
LIST APPLICATIONS は空。LIST ACTIVE DATABASES に出る 明示的に活動化されている DEACTIVATE DATABASE <DB名>
FORCE 直後のバックアップだけ失敗する FORCE は非同期。切られた接続がロールバック中 LIST APPLICATIONS が空になるまで待つ
FORCE しても数秒で接続が戻る アプリが自動で再接続してくる QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS → バックアップ → UNQUIESCE
DEACTIVATE が SQL1495W 接続が残っている。活動化されたまま 先に接続を切る
LIST APPLICATIONS SHOW DETAIL に db2taskd などが並ぶ Db2 内部の接続。切る対象ではない SHOW DETAIL なしの一覧で相手を探す
アプリ側に SQL1035N オフラインバックアップ中、または別ユーザーが IN EXCLUSIVE MODE で接続中 バックアップの終了を待つ。排他接続を切る
静止の後、アプリが SQL20157N のまま UNQUIESCE のし忘れ UNQUIESCE DATABASE

自分の CLP が接続したままでも、SQL1035N にはなりませんでした。バックアップの実行で自分の接続は切れます。QUIESCE はインスタンス所有者(SYSADM グループ)の接続を止めないので、インスタンス所有者で動くバッチは先に止めておきます。FORCE されたアプリ側に出るエラーは「SQL1224N」で扱っています。

それでも切り分けられないとき(実機ログつきの詳解)

ロールバック中の接続が消えるまでの時間、再接続してくるアプリに FORCE が効かなかった回数、QUIESCE でバックアップを通した手順と、排他接続が許可 ID ごとにどう効くかは、Zennのフル記事にまとめています。

▶ Zennで続きを読む(無料)

Db2のSQL1035Nでオフラインバックアップが失敗する ― 接続ゼロでも通らない5つの原因


実機ログつきの詳解を読む →

この記事のような現場のTIPSを、Db2運用の全体像として12章に体系化しました。公式マニュアルには載らない「あのとき知っていれば」を減らすための1冊です。

現場で引ける Db2 の教科書

現場で引ける!Db2実践エンジニア・バイブル

Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。

アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集。

Zennで読む →