So finden Sie heraus, was die Datenbank (DB2) in einem Sperrzustand verursacht hat

8

Ich weiß, wie ich überprüfen kann, ob sich die Datenbank in einem Sperrzustand befindet oder nicht, aber meine Frage ist, wie ich herausfinden kann, welche Abfrage die Sperre für Tabelle / Datenbank verursacht hat.

Wird eine Protokolldatei erstellt, wenn etwas Unerwartetes mit der Datenbank passiert?

Govind Kailas
quelle

Antworten:

3

Listen Sie die aktuellen Datenbankaktivitäten auf:

db2top -d [dbname]

Dieser Befehl zeigt Ihnen Datenbanksperren:

db2pd -d [dbname] -lock wait 
Govind Kailas
quelle
2

db2pd, wie in demselben Beitrag erläutert, ist eine sehr gute Option.

Fügen Sie dem hinzu, Sie können das Verfahren verwenden:

db2 "call monreport.lockwait()"

Dieses Verfahren zeigt Ihnen auf sehr organisierte Weise die derzeit in Ihrer Datenbank vorhandenen Sperren.

Versuchen Sie nach Überprüfung der Anwendungs-ID, die die Sperren enthält, die SQL-Anweisung zu identifizieren, die die Sperre verursacht. Wenn nicht vorhanden, versuchen Sie, den Snapshot für alle Anwendungen zu erstellen, suchen Sie nach der Anwendungs-ID und überprüfen Sie die ausgeführte Abfrage (und alle zusätzlichen Informationen, die Sie möglicherweise benötigen).

db2 get snapshot for applications on (DATABASE_NAME) > applications_snapshot.txt

Wenn Sie den Schnappschuss der Sperren überprüfen möchten, ist dies auch möglich:

db2 get snapshot for locks on (DATABASE_NAME) > locks_snapshot.txt

Last but not least ist db2top ein großartiges Tool, um die Sperren, Lockwaits usw. zu überwachen und "live" auszuführen:

db2top -d (database_name)

Option "U"

bei Bedarf Optionen "U, L"

Ich hoffe es hilft. Rodrigo Trombeta

Rodrigo Trombeta Brandão
quelle