SET WRITE コマンド

SET WRITE コマンドを使用すると、ユーザーは、データベースに対する入出力書き込み操作を中断したり、入出力書き込み操作を再開したりすることができます。 通常このコマンドは、ミラーリングされたデータベースを分割するという目的で使用します。 このタイプのミラーリングは、ディスク・ストレージ・システムを使って行われます。

この新規の状態 SUSPEND_WRITE は、スナップショット・モニターから認識されます。 この状態により、既存の書き込み操作は完了し、新規の書き込み操作は実行できないようになります。 コマンドを正常に実行するためにすべての表スペースが NORMAL 状態になっている必要はありません。

範囲

このコマンドは、それが発行されたデータベース・パーティションに対してだけ影響を与えます。 パーティション・データベース環境では、すべてのデータベース・パーティションにこれを発行する必要があります。 Db2® pureScale® 環境では、任意のメンバーからこのコマンドを発行して、すべてのメンバーの入出力書き込み操作を中断したり、すべての中断状態のメンバーの入出力書き込み操作を再開したりすることができます。

許可

このコマンドの許可には、発行者が次の特権のうち 1 つを持っていることが必要です。
  • SYSADM
  • SYSCTRL
  • SYSMAINT

必要な接続

データベース

コマンド構文

Read syntax diagramSkip visual syntax diagramSET WRITE SUSPENDFORDATABASEDBINCLUDE LOGSEXCLUDE LOGSRESUMEFORDATABASEDB

コマンド・パラメーター

SUSPEND
ログへの書き込み、表の拡張、および後続の入出力書き込みアクション/機能などの 入出力書き込み操作を中断します。 すべてのデータベース操作は、入出力書き込み操作の中断中に、 オンライン・バックアップおよびリストアから離れて正常に機能します。 しかし、操作によっては、バッファー・プールまたはログ・バッファーからログへの ダーティー・ページのフラッシュ試行中に待機するものもあります。 それらの操作は、データベースに対する入出力書き込み操作を再開した後に続行されます。
RESUME
入出力書き込み操作を再開します。 Db2 pureScale 環境では、このパラメーターはすべての中断状態のメンバーの入出力書き込み操作を再開します。
INCLUDE LOGS
データベースが書き込み中断状態にある場合はログ・ファイルへの書き込みを禁止することを指定します。 これがデフォルトです。
EXCLUDE LOGS
データベースが書き込み中断状態にある場合に、ログ・ファイルに書き込みできる (ただし、ログ・ファイル・ヘッダー・ファイルやミラー・ログ・ファイル・ヘッダー・ファイルには書き込みできない) ようにすることを指定します。 これにより、データベースに対して実行中の更新トランザクションが完了できるようにするための期間が設けられます。 これは、データベースが書き込み中断状態になっているときに通常発生するはずの、ワークロードへの影響を削減するのに役立ちます。 データベースが書き込み中断状態になっており、EXCLUDE LOGS オプションが指定されているときに取られたデータベースのコピーには、ログ・ファイルが含まれていてはなりません。
注:
  • EXCLUDE LOGS オプションは、循環ロギング・データベースでは使用できません。
  • 状況によっては、ログに記録された操作の処理がブロックされたままになることがあります。 これは例えば、現在のアクティブなログ・ファイルが満杯の場合などに起こります。

使用上の注意

Db2 V10.1以降、 db2 list tablespaces show detail などの特定のコマンドが set write suspend中にハングすることがあります。 このハングは予期される動作であり、最新の使用ページ・データを取得するために使用される Db2 ラッチ・プロトコルが V9.7 と V10.1; の間で変更されたことが原因です。 Db2 V9.7 db2 list tablespaces コマンドは推奨されないため、 db2pd -d dbname -tablespaces コマンドを使用して同じ情報を取得することをお勧めします。

suspend_ioデータベース構成パラメーターの設定を表示することにより、入出力書き込み操作が中断されたかどうかを判別できます。 データベース構成情報を表示するには、 GET DATABASE CONFIGURATION コマンド、DBCFG 管理ビュー、 -dbcfg パラメーターを指定した db2pd コマンド、または db2CfgGet API を使用できます。

SET WRITE コマンドを使用する前に FLUSH BUFFERPOOLS ステートメントを使用して、スプリット・ミラー・データベースのリカバリー時間を最小化することができます。 スプリット・ミラー・データベースをバックアップ・イメージとして使用することを計画している場合や、スプリット・ミラー・データベースを使用してバックアップ・イメージを作成することを計画している場合には、このステートメントを発行することが役立ちます。

ダーティー・ページをバッファー・プールからディスクにフラッシュする必要があるのに、SET WRITE コマンドを使用して入出力書き込み操作を再開することができない場合には、接続の試行が失敗します。 接続の失敗を解決するには、RESTART DATABASE コマンドに WRITE RESUME パラメーターを付けて発行します。 このシナリオでは、RESTART DATABASE コマンドは、クラッシュ・リカバリーを実行せずに書き込み操作を再開します。 RESTART DATABASE コマンドに WRITE RESUME パラメーターを指定して使用すると、データベースのクラッシュ後にコマンドを使用する場合にのみ、クラッシュ・リカバリーを実行します。

このコマンドが正常に実行されるには、表スペースが SQLB_MOVE_IN_PROGRESS または SQLB_BACKUP_IN_PROGRESS などの過渡状態になっていても構いません。

高可用性災害時リカバリー (HADR) 環境では、 SET WRITE SUSPEND 操作は HADR 1 次データベースでのみサポートされます。 SET WRITE SUSPEND 操作をスタンバイ・データベースに対して実行しようとすると、SQL1550N エラーになります。

注: ブロックされた 表書き込みイベント・モニターは、 SET WRITE SUSPEND コマンドを発行する前に明示的に使用不可にし、書き込み操作が再開されたときに再度使用可能にする必要があります。 書き込み操作が中断されている間、ブロックされたイベント・モニターがアクティブのままであると、イベント・モニターがディスクにレコードを書き込むことができないため、遅延が発生する可能性があります。 例えば、以下の条件下で ブロックされた 表書き込み接続イベント・モニターがアクティブのままである場合、新しい接続試行は遅延されます。
  • 書き込み操作が中断されている間。
  • 一方、着信接続のボリュームは、イベント・モニター・バッファー内のすべての使用可能スペースを満たすのに十分です。