web-dev-qa-db-ja.com

DB2 9.5でのデータベースのドロップ-SQL1035Nデータベースは現在使用中です

初めてこれを機能させることはできませんでしたが、今はまったくできません。

データベースを使用している場所に接続プールがあるため、アプリケーションがデータベースを使用しているときにデータベースを削除しようとすると、このエラーが発生します。問題は、次のコマンドを発行したときにデータベースへの接続がないことです。

db2 connect to mydatabase
db2 quiesce database immediate force connections
db2 connect reset
db2 drop database mydatabase

これは常に与える:

SQL1035N  The database is currently in use.  SQLSTATE=57019

このコマンドを実行すると、接続/アプリケーションは表示されません

DB2 list applications

データベースを非アクティブ化することもできますが、それでもドロップすることはできません。

db2 => deactivate database mydatabase
DB20000I  The DEACTIVATE DATABASE command completed successfully.
db2 => drop database mydatabase
SQL1035N  The database is currently in use.  SQLSTATE=57019
db2 =>

誰か手がかりはありますか?私はcmd-windowsをローカル管理者(windows 2008)として実行していますが、これはDB2の管理者でもあります。 connectionpool-userは静止状態の間は接続できません。

8
Tommy

リモートアプリが即座にデータベースに再接続するため、Arunのヒントが機能しない場合のヒントと同じです。

db2 force applications all 
db2 terminate 

db2set DB2COMM= 
db2stop 
db2start 

db2 force applications all 
db2 terminate 

... do your stuff here ...

db2set DB2COMM=TCPIP 
db2stop 
db2start 

db2 force そしてその db2 terminateが必要です。それは私たちのベストプラクティスにすぎません。

9
Peter Schuetze

connect resetterminateの違いが原因で問題が発生する可能性があります。 このディスカッション をご覧ください。また、IBMのドキュメントもご覧ください。したがって、db2 terminate insteaddb2 connect resetを実行すると、うまくいく場合があります。

2
Peter Schuetze

私は 'db2stop force'を使用し、次に 'db2start'を使用してから、dbをドロップします。この方法は、本来非同期である静止コマンドよりも優れています。

2
Arun Srini

静止すると、ドロップが機能しなくなります。私たちは大規模なクリーンアップ作業に関与し、取り消し/接続を実行してデータベースを静止した後、テストデータベースを削除するのに数か月待ちました。私たちのdropコマンドは、dbを休止解除してからドロップしない限り機能しません。

1
Lisa

コマンドラインからこれらの手順を実行します。これにより、dbが削除されます。

すべてのアプリケーションを強制します。

dbを非アクティブ化します。

drop db;

0
user56798

同様の問題がありますが、アプリケーションを強制的に停止しても、自動的に復帰します。

私の場合、それはデータベースをロックしているサービスです。

DB2アプリケーションリストにあるPIDを使用して、WindowsタスクマネージャーからPIDサービスを終了することで、これを解決できました。

PIDを見つけるには、DB2コントロールセンター、すべてのデータベース、データベース(ドロップしようとしているデータベース)、アプリケーションリスト、ロックチェーンの表示、ロックの詳細の表示を開き、下にスクロールしてクライアントプロセスIDを見つけ、このPIDを終了して再試行します。

これが将来の人々に役立つことを願っています。

0
Simon

Dbが静止されても、静止とマークされていても、データベースはdb managerを使用してデータベースのチェーン上にあります。ドロップしようとすると、このチェーン上にあるかどうかが確認されます。もしそうなら、それはまだ使用中です==>あなたはそれを落とすことはできません。

Unquiesce dbを発行するか、db2stopおよびdb2startを発行してから、それをドロップする必要があります。うまくいくはずです。

0
John