報錯信息:
windows下執行對Oracle數據庫的批操作腳本,因爲是遠程數據庫,速度較慢,腳本未正常結束被我不小心退出了,導致遠程服務器上的Oracle數據庫被鎖,之後執行腳本報錯:
Unexpected error running Liquibase: Could not acquire change log lock. Currently locked by PC-name since 18-07-23 下午2:22
報錯信息顯示數據庫被PC-name這臺電腦在18-07-23下午2:22鎖住.
解決方案:
數據庫的鎖的信息存儲在表 DATABASECHANGELOGLOCK表中,我們先去select這張表查看信息:
select * from DATABASECHANGELOGLOCK;
發現表中的信息就是報錯的內容。
接下來清除該表中的鎖信息即可
執行:
UPDATE DATABASECHANGELOGLOCK SET LOCKED=FALSE, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
或者:
delete from DATABASECHANGELOGLOCK;
這兩條語句均可清除鎖信息。
再去查看一下表:
此時再去操作數據庫即不會報被鎖的error了。
此方案參考以下英文網站並解決了我的問題,故結合實例翻譯成中文:
https://stackoverflow.com/questions/15528795/liquibase-lock-reasons