- 締切済み
再起動する事無くプロセスを消したい
PostgreSQL7.4.5 + FC4という環境でDBサーバを運用しています。 夜間にデータの切換などを行う際に、drop databaseをしたりするのですが、 その際に ERROR:source database "DB名" is being accessed by other users のエラーが出て処理が中断してしまいます。 これはpostgresプロセスがidle状態で残っている為なんですが、 postgresを再起動する事無く、drop databaseが出来る状態にしたいです。 (ちなみに、この処理を行っているユーザはpostgresユーザではありません) どなたか、良い策があればご教授して頂けますでしょうか。 以上です。宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- copymaster
- ベストアンサー率81% (83/102)
回答No.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の再起動する事無くプロセスを消す方法は無いものでしょうか。 我儘な内容で申し訳ないです。