392 Stimmen

Liquibase-Sperre - Gründe?

Ich bekomme das, wenn ich viele Liquibase-Skripte gegen einen Oracle-Server ausführe. SomeComputer bin ich.

Warten auf Changelog-Sperre....
Warten auf Changelog-Sperre....
Warten auf Changelog-Sperre....
Warten auf Changelog-Sperre....
Warten auf Changelog-Sperre....
Warten auf Changelog-Sperre....
Warten auf Changelog-Sperre....
Liquibase-Update fehlgeschlagen: Änderungsprotokollsperrung konnte nicht erworben werden. Aktuell gesperrt durch SomeComputer (192.168.15.X) seit 2013-03-20 13:39
SCHWERWIEGEND 2013-03-20 16:59:liquibase: Änderungsprotokollsperrung konnte nicht erworben werden. Aktuell gesperrt durch SomeComputer (192.168.15.X) seit 2013-03-20 13:39
liquibase.exception.LockException: Änderungsprotokollsperrung konnte nicht erworben werden. Aktuell gesperrt durch SomeComputer (192.168.15.X) seit 2013-03-20 13:39
        at liquibase.lockservice.LockService.waitForLock(LockService.java:81)
        at liquibase.Liquibase.tag(Liquibase.java:507)
        at liquibase.integration.commandline.Main.doMigration(Main.java:643)
        at liquibase.integration.commandline.Main.main(Main.java:116)

Könnte es sein, dass die Anzahl der gleichzeitigen Sitzungen/Transaktionen erreicht ist? Hat jemand Ideen?

1voto

Ramya Musunuru Punkte 89

Standardtabelle für das Liquibase-Änderungsprotokoll ist DATABASECHANGELOCK, jedoch kann dies überschrieben oder auf eine benutzerdefinierte Tabelle eingestellt werden, indem die untenstehende Eigenschaft festgelegt wird.

in der application.properties

database-change-log-lock-table=

Wenn die Anwendung diese Eigenschaft gesetzt hat, dann

UPDATE  SET LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;     

oder die Tabelle löschen

drop table

0voto

malek yahyaoui Punkte 379

Wenn die Lösung, die von @Adrian gepostet wurde, nicht funktioniert hat, können Sie versuchen dasselbe in der Tabelle INTERFACE_DATABASECHANGELOGLOCK zu tun, die zusätzliche Informationen zum Lock enthält.

UPDATE INTERFACE_DATABASECHANGELOGLOCK SET LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null WHERE ID=1;

oder einfach die Tabelle leeren

TRUNCATE TABLE INTERFACE_DATABASECHANGELOGLOCK

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X