Question & Answer
Question
オフライン・バックアップを取得する時や、WRITE SUSPEND により取得したフラッシュ・コピーからデータベースをリストアする時などに、アプリケーションからデータベースへの接続を防ぐためにはどのようにすればよいですか。 注: すべてのアプリケーションを終了させてデータベースを非活動化させても、新規接続があればデータベースは自動的に活動化され、オフライン・バックアップは SQL1035N で失敗します。
Answer
いくつかの方法がありますが、それぞれに考慮点がありますので、要件にあった方法をご利用ください。
コマンドは UNIX および Linux ではインスタンス・オーナーで実行してください。Windows では Administrator としてログオンして「DB2 コマンド ウィンドウ - 管理者」から実行してください。
A) QUIESCE による静止
QUIESCE DATABASE コマンドでデータベースを静止状態にすると、現在のデータベース接続をすべて切断し、かつこれ以降の一般ユーザーからの接続を防ぐことができます。
インスタンスが静止された状態で起動しますので、一般ユーザーはインスタンス内の全てのデータベースへ接続が行えません。USER や GROUP オプションで、静止中でも接続を許可するユーザーやグループを指定できます。
[考慮点]
B) カタログ情報の変更
データベースへの接続に利用されるカタログ情報を一時的に変更して、データベースへの接続を防ぐことができます。
データベース・マネージャー構成パラメーターの DIR_CACHE が ON (デフォルト) の場合、カタログ情報はキャッシュされているため、カタログ情報の変更後にインスタンスの再起動が必要です。
DIR_CACHE が OFF の場合、インスタンスの再起動は不要です。
C) DB2COMM レジストリー変数の変更
アプリケーションからデータベースへの接続が TCP/IP によるリモート接続のみである場合、DB2COMM レジストリー変数を一時的に変更することで、データベースへのリモート接続を防ぐことができます。
[考慮点]
コマンドは 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
インスタンスが静止された状態で起動しますので、一般ユーザーはインスタンス内の全てのデータベースへ接続が行えません。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
- DIR_CACHE が ON の場合、インスタンスの再起動が必要です。詳細は以下のページを参照してください。
[Db2] データベース・カタログの変更を反映する方法
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 オプションにパスワードが必要なため使用できません。
[{"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)"}]
Was this topic helpful?
Document Information
Modified date:
04 June 2024
UID
swg21576686