強制切断

オプション

ttAdminには、強制切断のための次のオプションがあります。

オプション 説明

-connStr connection_string

データベースの場所、ドライバ、および必要に応じてその他の接続属性設定を指定するODBC接続文字列。

DSN

管理するデータベースのODBCデータソース名。

-disconnect urgency [granularity]

接続されているアプリケーションをデータベースから非同期に切断します。必要に応じて、アイドル状態または応答しないものを含めます。

urgency (必須)の許容値は次のとおりです。

-transactional - 切断する前に実行中のトランザクションをコミットまたはロールバックできます。アイドル接続には影響しません。

-immediate - 即座に切断する前に、実行中のトランザクションをロールバックします。これにより、アイドル接続も切断されます。

-abort - すべてのダイレクト・モードのアプリケーション・プロセスおよびクライアント/サーバー・プロセス(ttcserver)を中断して切断します。

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

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

granularityの許容値は次のとおりです。

-users (デフォルト) - データベースへのすべてのユーザー接続を切断します。これは、管理者がデータベースのメンテナンスを実行する場合に役立ちます。

-unload - データベースへのすべての接続を切断します(サブデーモンを含む)。これにより、データベースが正常にアンロードされます。

ノート: RAMポリシーalways (「RAM操作の実行」を参照)は、強制切断のgranularityのunloadと競合します。両方を同時に使用するとエラーが発生し、切断要求は無視されます。

このサンプル・スクリプトでは、-disconnectを使用してdatabase1へのすべての接続を切断します。urgencyレベルを最初はtransactional、次にimmediateにして実行します。

#!/bin/sh
 
# close the databae
ttAdmin -close database1
 
# disconnect users and unload the database
ttAdmin -disconnect -transactional -unload database1
 
# wait 10 seconds for the disconnects to finish
COUNT = 0
while [ ttStatus | grep "pending disconnection" ] || [ $COUNT -ne 10 ]
do
  sleep 1
  COUNT=$((COUNT+1))
done
 
# increase urgency to immediate
if [ ttStatus | grep "pending disconnection" ]; then
  ttAdmin -disconnect -immediate -unload database1
fi

ttStatusを使用して進捗状況を確認します。強制切断中、出力には保留中の切断が示されます。

TimesTen status report as of Wed Jul 18 09:55:20 2018
 
Daemon pid 10457 port 6627 instance user1
TimesTen server pid 10464 started on port 6629
------------------------------------------------------------------------
------------------------------------------------------------------------
Closed to user connections
Data store /databases/database1
Daemon pid 10457 port 6627 instance user1
TimesTen server pid 10464 started on port 6629
There are 14 connections to the data store, ***14 pending disconnection***
Shared Memory KEY 0x0210679b ID 949092358
PL/SQL Memory KEY 0x0310679b ID 949125127 Address 0x5000000000
Type            PID     Context             Connection Name              ConnID
Process         10484   0x00007f3ddfeb4010  database1 1
...

ノート

強制切断機能を有効にするには、TimesTen接続属性設定ForceDisconnectEnabled=1を使用します。「ForceDisconnectEnabled」を参照してください。

-disconnectオプションは非同期です。制御はコマンド・プロンプトにすぐに戻りますが、強制切断操作は完了までに数秒または数分かかることがあります。このため、前述のスクリプトではttStatusを使用して強制切断操作のステータスを監視しています。

granularityレベルをusersにすると、サブデーモン以外のすべての接続が含まれます。たとえば、ユーザー接続に加えて、ttcserverおよびttstatsの接続も含まれます。

強制的な切断プロセスを試行する前に、データベースをクローズします。強制的な切断プロセス中、メイン・デーモンによってすべての新規接続リクエストが拒否されます。ただし、強制的な切断が完了した後は、データベースがクローズ状態でない場合、接続リクエストが再度受け付けられます。