ジオデータベースからのダイレクト コネクションの削除
接続がハングして、レコードが 1 つ以上のジオデータベース リポジトリ テーブルで孤立する場合があります。この状態が発生した場合、強制的に接続を終了する必要があることがあります。これを行うには、sdemon 管理コマンドを使用します。
kill オプションを使用して sdemon コマンドを実行すると、ジオデータベースへの接続が削除され、PROCESS_INFORMATION およびロック テーブルのレコードがクリーンナップされます。
この処理は現在 PostgreSQL の ArcSDE ジオデータベースに対しては実行できません。
kill オプションを使用した sdemon コマンドの構文は次のようになります。
sdemon –o kill –t {all | <pid>} [–D <database_name>] [-s <datasource>] -i <direct_connect_string> –u <user_name> –p <password>
–t オプションでは、ジオデータベースからすべての接続を削除する(all)か、特定の接続のみを削除する(<pid>)かを指定します。通常は、ジオデータベース リポジトリに残された特定の接続のプロセス識別子(pid)を入力します。
-i オプションは、ダイレクト コネクションを作成するために使用します。正しい構文については、「ArcSDE コマンドから Oracle のジオデータベースへのダイレクト コネクション」をご参照ください。
Oracle 以外のデータベースに接続している場合は、-D オプションを使用してデータベースの名前を入力します(Oracle に接続している場合は、-D オプションを指定しないでください)。
Oracle データベースへのダイレクト コネクションの場合は、パスワードの後に @ 記号と Oracle ネットワーク サービス名を追加します。たとえば、データベース パスワードが「hokeysmokes」であり、Oracle サービス名が「myoracle」である場合は、「hokeysmokes@myoracle」と入力します。
リモート サーバ上のデータベースに接続している場合は、-s オプションを使用してそのデータベースが配置されているサーバの名前を指定します。
データベースへのダイレクト コネクションを終了するための十分な権限を付与されたデータベース ユーザのユーザ名およびパスワードを指定するには、-u オプションと -p オプションを使用します。これらの権限については、「Oracle のジオデータベースのユーザ権限」をご参照ください。
アクティブな(孤立していない)接続を強制終了することはお勧めできません。接続しているユーザがデータを編集中である場合は特に強制終了しないようにしてください。ユーザが編集内容を保存していなければ、接続の強制終了時に保存されていなかった編集内容がすべて失われ、データが破損する可能性があります。
- MS-DOS(Windows の場合)またはシェル(UNIX または Linux の場合)のコマンド プロンプト ウィンドウを開きます。
- SE_connection_get_instance_users 関数を使用するか、PROCESS_INFORMATION テーブルを照会するか、または info オプションと user あるいは users_long オプションを使用して sdemon コマンドを実行することで、接続しているユーザに関する情報を収集します。sdemon コマンドを使用して接続のリストを取得する方法については、「接続されているセッションの表示」をご参照ください。
- 取得した情報から、削除対象となる接続の SDE ID を特定します。sdemon –o info で users オプションを使用する場合は S–ID を調べ、users_long オプションを使用する場合は Server task ID を調べます。SE_connection_get_instance_users 関数を使用する場合は svr_id を調べます。PROCESS_INFORMATION テーブルを照会する場合は sde_id を調べます。
- kill オプションと、このトピックでこれまでに説明したオプションのうち適切なオプションを使用して、sdemon コマンドを入力します。-t オプション を使用して削除する接続の SDE ID の値を指定します。
sdemon コマンドの詳細については、『ArcSDE コマンド リファレンス』をご参照ください。