LoginSignup
96
84

More than 5 years have passed since last update.

PostgreSQL のサーバー側でセッションを切断する方法

Last updated at Posted at 2013-09-12

サーバー側でクエリの実行を中断するには SIGINT を当該プロセス( pspg_stat_activity から探す)に送ります(kill -INT PID)が、これではセッションは切断されません。メンテナンスなどで切断して欲しい場合には pg_terminate_backend(procpid) を使います。

当該の PID がわかっている場合には

SELECT pg_terminate_backend(当該PID);

で切断できます。

特定のDBのセッションをすべて切断するには

9.2
SELECT pg_terminate_backend(procpid)
  FROM pg_stat_activity
 WHERE datname = 'DB名'
   AND procpid <> pg_backend_pid() -- 自分自身を切断しないように
;

PostgreSQL 9.3 からは procpid ではなく pid に変わっているようなので

9.3以降
SELECT pg_terminate_backend(pid)
  FROM pg_stat_activity
 WHERE datname = 'DB名'
   AND pid <> pg_backend_pid();

特定のユーザーなら usename で絞ります。切断後に再接続されたくない場合は pg_hba.conf で reject するようにしておきましょう。

96
84
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
96
84