重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PostgreSQL7.4.5 + FC4という環境でDBサーバを運用しています。
夜間にデータの切換などを行う際に、drop databaseをしたりするのですが、
その際に
ERROR:source database "DB名" is being accessed by other users
のエラーが出て処理が中断してしまいます。
これはpostgresプロセスがidle状態で残っている為なんですが、
postgresを再起動する事無く、drop databaseが出来る状態にしたいです。
(ちなみに、この処理を行っているユーザはpostgresユーザではありません)

どなたか、良い策があればご教授して頂けますでしょうか。

以上です。宜しくお願い致します。

A 回答 (1件)

定期的にdrop databaseをする運用が生じるシステムもどうかとは思いますが、それはさておき、ご質問のエラーがでる時には、postgresプロセスがidle状態で残っているというより、そのデータベースをアプリケーションが使用中(接続中)である可能性はないでしょうか。


Webアプリケーションなどでは、起動するだけでコネクションを張るものもあります。
もし、JSPなどであれば、Tomcatなどのサーブレットコンテナを、PHPならばApacheなどのWebサーバを、drop前後で停止・起動することによってPostgreSQLを停止せずとも、dropできると思います。

この回答への補足

回答ありがとうございます。
説明が全く足りなかったので、補足しますと
  WEBサーバ WinXP-Apache&Tomcat
  DBサーバ FedoraCore4-PostgreSQL
このシステムは24時間稼動のシステムでDBサーバを2台持ち、
日毎に接続先のDBサーバを変える(pgforest使用)システムなので、
tomcatの再起動は極力控えたいのです。
後、drop databaseする理由としては、データ量が非常に多いので、
12ヶ月のデータをデータベース単位で保持し、
月が変わると最古のデータベースを削除して残りを一ヶ月づつrenameし、
最新月用のデータベースをcreateするといった形になるからです。

これをふまえて、postgresqlとtomcatの再起動する事無くプロセスを消す方法は無いものでしょうか。
我儘な内容で申し訳ないです。

補足日時:2006/04/13 10:14
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す