报错信息:
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