[pgsql-jp: 30710] Re: DB接続中のユーザー名を見る方法

sugita @ sra.co.jp sugita @ sra.co.jp
2003年 8月 6日 (水) 23:28:22 JST


  杉田です。

From: "Koichi Kokura" <kokimail @ nifty.com>
Subject: [pgsql-jp: 30709] DB接続中のユーザー名を見る方法
Date: Wed, 6 Aug 2003 22:22:37 +0900

;;; 現在Postgresを業務で本格的に使用しようとしております。
;;; その際困った問題が発生しています。
;;; 時々CREATE DATABASEにて新規データベースを作成しよう
;;; とすると、template1が使用中というメッセージが出て
;;; 新規DBを作成できないことがあります。

  template1 に接続されているときにはそうなりますが、運用中に CREATE DATABASE 
を多用するような使い方をするのはどうしてですか?

;;; 使用中のユーザを見たいのですが、
;;; 特定データベースを使用しているユーザ名を知るコマンドは
;;; ありませんでしょうか?

  template1 をテンプレートにして CREATE DATABASE する必要がないならば、template0 を 
テンプレートにするという方法もあります。

  見る方法は、アクセス統計情報による方法、

    stats_command_string = true

    => select * from pg_stat_activity;
     datid | datname | procpid | usesysid | usename | current_query 
    -------+---------+---------+----------+---------+---------------
     16976 | sugita  |    1419 |        1 | sugita  | <IDLE>
    (1 row)

    => 

  コネクションログとエラークエリーのログによる方法、

    log_connections = true
    log_pid = true
    log_timestamp = true
    log_min_error_statement = error

    2003-08-06 23:25:36 [2218]   LOG:  connection received: host=[local]
    2003-08-06 23:25:36 [2218]   LOG:  connection authorized: user=sugita database=template1
    2003-08-06 23:25:36 [2218]   ERROR:  CREATE DATABASE: source database "template1" is being accessed by other users
    2003-08-06 23:25:36 [2218]   LOG:  statement: SET autocommit TO 'on';CREATE DATABASE "void"

  以上は、PostgreSQL 7.3 での設定です。


Kenji Sugita                                      




pgsql-jp メーリングリストの案内