在Liquibase中执行回滚操作时,相关运行日志及回滚历史可在哪里查询?
Liquibase 回滚操作历史查询渠道
Liquibase 的 DATABASECHANGELOG 表默认仅存储当前已生效、未被回滚的 changeSet 记录,回滚操作执行后会直接删除对应 changeSet 的记录,不会在该表中留存历史,你可以从以下几个渠道查询回滚操作的相关日志:
1. Liquibase 执行日志
- 执行
rollbackCount等回滚命令时,控制台默认会输出完整的回滚操作明细,包括被回滚的 changeSet ID、作者、变更内容、执行时间、执行结果。如果你执行命令时开启了日志持久化,可直接查询对应的日志文件:- 可以通过启动参数
liquibase.logFile=指定日志文件路径配置 Liquibase 自动将所有操作(含 update、rollback 等所有命令)的全量日志写入指定文件,该日志不会随回滚操作被删除,会永久留存所有操作记录。
- 可以通过启动参数
2. 数据库层面操作记录
如果你的 Oracle 数据库开启了对应的审计或闪回功能,可从数据库侧追溯回滚操作:
- 闪回查询:如果回滚操作发生的时间仍在闪回查询窗口期,可直接查询 DATABASECHANGELOG 表的历史数据,找回被删除的 changeSet 记录,示例命令如下:
SELECT * FROM DATABASECHANGELOG AS OF TIMESTAMP TO_TIMESTAMP('回滚操作的大致时间', 'YYYY-MM-DD HH24:MI:SS'); - 审计日志:如果数据库开启了 AUDIT 审计功能,可查询
DBA_AUDIT_TRAIL视图,筛选对 DATABASECHANGELOG 表执行 DELETE 操作的记录,获取回滚操作的执行时间、操作用户等信息。
3. 自定义审计表(可选配置方案)
如果需要后续自动留存所有变更(含回滚)的历史记录,可自行配置针对 DATABASECHANGELOG 表的 DELETE 触发器,每次有记录被删除(即触发回滚)时,自动将被删除的 changeSet 信息、操作时间、操作人等字段写入自定义的变更历史审计表中,后续可直接查询该审计表获取全量变更和回滚历史。
内容的提问来源于stack exchange,提问作者Qabany
相关产品推荐
相关产品推荐

