すべての接続の強制切断(dbDisconnect)

dbDisconnectコマンドは、指定されたデータベースへのすべてのユーザー接続を強制的に切断します。これはメンテナンス操作の前に行うと便利です。スムーズに停止してデータ損失がないようにするには、接続を閉じる必要があります。

ttGridAdmin dbDisconnect name
                         -transactional|-immediate|-abort
                         [-nowait | -wait [timeout]]

コマンドを実行するまで、新しいトランザクションは許可されません。

切断リクエストがグリッド内の各データ・インスタンスに送信されます。

関連情報については、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「メモリーからのデータベースのアンロード」を参照してください。

ノート:

dbDisconnectコマンドはサブデーモン接続には影響しません。

オプション

dbDisconnectコマンドには、次のオプションがあります。

オプション 説明

name

データベースの名前。

-transactional|-immediate|-abort

切断処理のモードを指定します。次のいずれかのモードを指定する必要があります(デフォルトはありません)。

  • Transactional: 切断する前に実行中のトランザクションをコミットまたはロールバックできます。

  • Immediate: 即座に切断する前に実行中のトランザクションをロールバックします。

  • Abort: 切断するために、すべてのダイレクト・モードのアプリケーション・プロセスおよびクライアント/サーバー・エージェントを中断します。

推奨されるベスト・プラクティスは、必要に応じてdbDisconnectを2回実行することです。最初にtransactionalモードで実行します。その後、しばらくしてから、すべての接続がまだ閉じられていない場合は、immediateモードで実行します。dbStatus -connectionsを使用して、接続がクローズされたかどうかを確認します。

abortモードは、transactionalレベルおよびimmediateレベルですべての接続が閉じられない場合に、最後の手段としてのみ使用します。中断するとデータが失われる可能性があります。突然中断すると、データベースに接続されているすべてのユーザーおよびttcserverプロセスが終了します。これにより、トランザクションが失われる可能性があります。

ノート: 即時モードで実行すると、アイドル接続も切断されます。transactionalモードでの実行では切断されません。

-nowait | -wait [timeout]

コマンドがすぐに戻るようにするか(デフォルト)、すべての切断が終了するまで待機するかを指定します。-waitを使用すると、必要に応じて待機時間をtimeout秒に制限できます。

データベース管理コマンドは状態の変更を開始し、それはグリッドのアクティブ管理インスタンスに記録されます。具体的には、-nowaitオプションを指定すると、コマンドは状態の変更を待機しないで戻ります。dbDisconnectStatusを使用して、切断処理のステータスを確認します。

-waitオプションを指定すると、すべての切断が完了して状態が完了に変更されるまでコマンドが待機します。timeoutを指定しない場合、またはtimeoutが0に設定されている場合、制限はありません。

多数の接続がある場合は、-waitを使用しないことをお薦めします。そのようにする場合は、タイムアウトを設定することをお薦めします。指定した待機時間内に切断が完了せず、transactionalモードを使用している場合は、immediateモードを使用することを検討してください。

ノート: -waitを使用している場合でも、後でdbStatus -connectionsを使用して、接続が閉じられたことを確認することをお薦めします。

次に例を示します:

  1. dbStatusを使用して既存の接続を表示します。

  2. データベースをクローズして確認します。

  3. transactionalモード(待機なし)で切断します。

  4. dbDisconnectStatusdbDisconnectコマンドのステータス、およびdbStatusで接続のステータスを確認します。(dbDisconnectコマンドが進行中であり、接続がまだ存在します。)

  5. 接続が閉じられるように、immediateモード(待機なし)で切断します。

  6. dbDisconnectStatusdbDisconnectコマンドのステータス、およびdbStatusで接続のステータスを再度確認します。(dbDisconnectコマンドが完了し、接続がなくなります。)

% ttGridAdmin dbStatus database1 -connections
Host       Instance  ConnId Name      Pid   Type   CHost CAddr CPid
---------- --------- ------ --------- ----- ------ ----- ----- ----
mysys5host instance3      1 database1 20233 Direct
mysys4host instance2      1 database1 26529 Direct
mysys3host instance1      1 database1  1600 Direct
mysys6host instance4      1 database1  1678 Direct

% ttGridAdmin dbClose database1
Database database1 close started
 
% ttGridAdmin dbStatus database1
Database database1 summary status as of Tue Sep 27 16:12:16 PST 2021
 
created,loaded-complete,closed
Completely created elements: 4 (of 4)
Completely loaded elements: 4 (of 4)
Completely created replica sets: 2 (of 2)
Completely loaded replica sets: 2 (of 2)
 
Open elements: 0 (of 4)

最初にtransactionalモードで接続を切断することを試みます。

% ttGridAdmin dbDisconnect database1 -transactional
Database database1 dbDisconnect started

しばらくしてから、ステータスと接続がまだ存在しているかどうかを確認します。

% ttGridAdmin dbDisconnectStatus database1
Database  Host       Instance  Elem State         Started
--------- ---------- --------- ---- ------------- ------------------------
database1                           Disconnecting 2021-09-27T16:12:55.000Z
          mysys5host instance3    1 Disconnecting
          mysys4host instance2    2 Disconnecting
          mysys3host instance1    3 Disconnecting
          mysys6host instance4    4 Disconnecting
 
% ttGridAdmin dbStatus -connections
Database database1:
 
Host       Instance  ConnId Name      Pid   Type   CHost CAddr CPid
---------- --------- ------ --------- ----- ------ ----- ----- ----
mysys5host instance3      1 database1 20233 Direct
mysys4host instance2      1 database1 26529 Direct
mysys3host instance1      1 database1  1600 Direct
mysys4host instance4      1 database1  1678 Direct

immediateモードで再度試みます。

% ttGridAdmin dbDisconnect database1 -immediate
Database database1 dbDisconnect started

ステータスを再度確認し、接続がなくなったことを確認します。

% ttGridAdmin dbDisconnectStatus database1
Database  Host       Instance  Elem State        Started
--------- ---------- --------- ---- ------------ ------------------------
database1                           Complete     2021-09-27T16:14:03.000Z
          mysys5host instance3    1 Disconnected
          myshs4host instance2    2 Disconnected
          mysys3host instance1    3 Disconnected
          mysys6host instance4    4 Disconnected
 
% ttGridAdmin dbStatus database1 -connections
Host Instance ConnId Name Pid Type CHost CAddr CPid
---- -------- ------ ---- --- ---- ----- ----- ----
%

ノート

  • このコマンドを実行する前に、データベースがクローズ状態である必要があります。(データベースをクローズしても既存の接続には影響しませんが、新しい接続は確立されません)。

  • TimesTen Scaleoutでは、強制切断機能は常に有効であり、forceDisconnectEnabled接続属性は無視されます。