IBM Support

[Db2] 一時的にデータベースへの接続を防ぐ方法

Question & Answer


Question

オフライン・バックアップを取得する時や、WRITE SUSPEND により取得したフラッシュ・コピーからデータベースをリストアする時などに、アプリケーションからデータベースへの接続を防ぐためにはどのようにすればよいですか。 注: すべてのアプリケーションを終了させてデータベースを非活動化させても、新規接続があればデータベースは自動的に活動化され、オフライン・バックアップは SQL1035N で失敗します。

Answer

いくつかの方法がありますが、それぞれに考慮点がありますので、要件にあった方法をご利用ください。
コマンドは UNIX および Linux ではインスタンス・オーナーで実行してください。Windows では Administrator としてログオンして「DB2 コマンド ウィンドウ - 管理者」から実行してください。

A) QUIESCE による静止

QUIESCE DATABASE コマンドでデータベースを静止状態にすると、現在のデータベース接続をすべて切断し、かつこれ以降の一般ユーザーからの接続を防ぐことができます。
  • 静止方法
    db2 connect to <データベース名>
    db2 quiesce database immediate
    db2 connect reset
  • 静止解除方法
    db2 connect to <データベース名>
    db2 unquiesce database
    db2 connect reset
フラッシュ・コピーからデータベースをリストアした後、データベースへの接続を制限した状態でインスタンスを起動したい場合は、ADMIN MODE オプションを付与して db2start を実行してください。
インスタンスが静止された状態で起動しますので、一般ユーザーはインスタンス内の全てのデータベースへ接続が行えません。USER や GROUP オプションで、静止中でも接続を許可するユーザーやグループを指定できます。
  • 静止状態での起動方法
    db2start ADMIN MODE
  • 静止解除方法
    db2 unquiesce instance <インスタンス名>

[考慮点]
  • データベースが静止状態であっても、SYSADM、SYSMAINT、SYSCTRL、DBADM のいずれかの権限、もしくはデータベースの QUIESCE_CONNECT の許可を持つユーザーは、データベースへの接続が可能です。
  • インスタンスが静止状態であっても、SYSADM、SYSMAINT、SYSCTRL のいずれかの権限を持つユーザーは接続が可能です。
  • V10.1 以降、データベースの静止中でも接続要求によりデータベースは一時的に短時間活動化されます。このため、オフラインバックアップが SQL1035N で失敗することがあります。
    [Db2] V10.1 以降、静止状態のデータベースのオフライン・バックアップが SQL1035N で失敗することがある
     

B) カタログ情報の変更

データベースへの接続に利用されるカタログ情報を一時的に変更して、データベースへの接続を防ぐことができます。
データベース・マネージャー構成パラメーターの DIR_CACHE が ON (デフォルト) の場合、カタログ情報はキャッシュされているため、カタログ情報の変更後にインスタンスの再起動が必要です。
DIR_CACHE が OFF の場合、インスタンスの再起動は不要です。
  • DIR_CACHEの現在の値を確認する方法
    $ db2 get dbm cfg
    
              データベース・マネージャー構成
    
     ディレクトリー・キャッシュ・サポート     (DIR_CACHE) = NO
  • カタログ情報の変更方法
    db2 uncatalog database <データベース名>
    db2 catalog database <データベース名> as <一時的な別名> on <データベース・ディレクトリーのパス>
    (以下は DIR_CACHE=ON の場合のみ必要)
    db2stop
    db2start
  • カタログ情報を元に戻す方法
    db2 uncatalog database <一時的な別名>
    db2 catalog database <データベース名> on <データベース・ディレクトリーのパス>
    (以下は DIR_CACHE=ON の場合のみ必要)
    db2stop
    db2start
[考慮点]
C) DB2COMM レジストリー変数の変更

アプリケーションからデータベースへの接続が TCP/IP によるリモート接続のみである場合、DB2COMM レジストリー変数を一時的に変更することで、データベースへのリモート接続を防ぐことができます。
  • DB2COMM レジストリー変数の現在の値を確認する方法
    db2set DB2COMM
    TCPIP
  • DB2COMM レジストリー変数の変更方法
    db2set DB2COMM=
    db2stop
    db2start
  • DB2COMM レジストリー変数を元に戻す方法
    db2set DB2COMM=TCPIP
    db2stop
    db2start

[考慮点]
  • この方法ではローカル接続を防ぐことはできません。
  • レジストリー変数の変更を反映させるためには、インスタンスの再起動が必要です。
D) Db2 トレースによる接続禁止
Db2 トレース (db2trc) は指定した関数で処理をサスペンドするデバッグ機能があります。これを利用して新規接続をサスペンドして接続を禁止できます。
  • 新規接続禁止 (インスタンス・オーナーで実行)
    db2trc on -debug DB2.SQLCC.sqlcctcpconnmgr_child.115 -suspend
  • 設定の解除
    db2trc off
[考慮点]
  • すべてのデータベースで接続が禁止されます。
  • トレースは Db2 システム全体に負荷がかかります。このため、たとえばバックアップ実行中も設定を解除しないとバックアップの処理時間がかなり長くなります。
  • Db2 10.5 FP9-FP10 と Db2 11.1 M2FP2-M4FP4 はトレースの debug オプションにパスワードが必要なため使用できません。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkdAAE","label":"Connectivity"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Version(s)"}]

Document Information

Modified date:
04 June 2024

UID

swg21576686