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


8

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

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

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は静止状態の間は接続できません。

回答:


9

リモートアプリがすぐにデータベースに再接続するため、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 forcedb2 terminateが必要かどうかはわかりませんが。それは私たちのベストプラクティスにすぎません。


データベースは、「静止」「EDとリモートユーザーがその権限を持っていないときにリモート接続が許可されているなぜ私は...得ることはありません
トミー

IBMのドキュメントから:publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic = / …-RESET-利用可能な場合、デフォルトのデータベースへの明示的な接続と同等です。デフォルトのデータベースが使用できない場合、アプリケーションプロセスの接続状態とその接続の状態は変更されません。-呼び出しによってデータベースに接続したようですDB2 connect reset
Peter Schuetze

DB2COMM =の設定は、データベースに接続するすべての接続プールを削除する唯一の方法でした。私だけの愛のDB2 ...
トミー

2

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


私は受け入れた答えを訂正しなければなりません。これは一度はうまくいきましたが、運が良かったのでしょう。ピーターの「トリック」に目を向けなければなりません
トミー

2

との違いが原因で問題が発生する可能性がconnect resetありterminateます。見ていこの議論を。また、IBMのドキュメントもご覧ください。したがって、のを実行するdb2 terminate insteadと、うまくいく場合がありますdb2 connect reset


1

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


0

コマンドラインからこれらの手順を実行します。これはdbを削除します:

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

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

drop db;


0

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

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


0

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

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.