オフラインの 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のフル記事にまとめています。
この記事のような現場のTIPSを、Db2運用の全体像として12章に体系化しました。公式マニュアルには載らない「あのとき知っていれば」を減らすための1冊です。
現場で引ける Db2 の教科書
現場で引ける!Db2実践エンジニア・バイブル
Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。
アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集。