初めてこれを機能させることはできませんでしたが、今はまったくできません。
データベースを使用している場所に接続プールがあるため、アプリケーションがデータベースを使用しているときにデータベースを削除しようとすると、このエラーが発生します。問題は、次のコマンドを発行したときにデータベースへの接続がないことです。
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は静止状態の間は接続できません。
リモートアプリが即座にデータベースに再接続するため、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
が必要です。それは私たちのベストプラクティスにすぎません。
connect reset
とterminate
の違いが原因で問題が発生する可能性があります。 このディスカッション をご覧ください。また、IBMのドキュメントもご覧ください。したがって、db2 terminate instead
のdb2 connect reset
を実行すると、うまくいく場合があります。
私は 'db2stop force'を使用し、次に 'db2start'を使用してから、dbをドロップします。この方法は、本来非同期である静止コマンドよりも優れています。
静止すると、ドロップが機能しなくなります。私たちは大規模なクリーンアップ作業に関与し、取り消し/接続を実行してデータベースを静止した後、テストデータベースを削除するのに数か月待ちました。私たちのdropコマンドは、dbを休止解除してからドロップしない限り機能しません。
コマンドラインからこれらの手順を実行します。これにより、dbが削除されます。
すべてのアプリケーションを強制します。
dbを非アクティブ化します。
drop db;
同様の問題がありますが、アプリケーションを強制的に停止しても、自動的に復帰します。
私の場合、それはデータベースをロックしているサービスです。
DB2アプリケーションリストにあるPIDを使用して、WindowsタスクマネージャーからPIDサービスを終了することで、これを解決できました。
PIDを見つけるには、DB2コントロールセンター、すべてのデータベース、データベース(ドロップしようとしているデータベース)、アプリケーションリスト、ロックチェーンの表示、ロックの詳細の表示を開き、下にスクロールしてクライアントプロセスIDを見つけ、このPIDを終了して再試行します。
これが将来の人々に役立つことを願っています。
Dbが静止されても、静止とマークされていても、データベースはdb managerを使用してデータベースのチェーン上にあります。ドロップしようとすると、このチェーン上にあるかどうかが確認されます。もしそうなら、それはまだ使用中です==>あなたはそれを落とすことはできません。
Unquiesce dbを発行するか、db2stopおよびdb2startを発行してから、それをドロップする必要があります。うまくいくはずです。