oracle过程修改日志,oracle – 如何扩展Liquibase以使用存储过程,函数和触发器生成更改日志?...

目前,当您尝试在现有数据库上生成更改日志时,Liquibase有一些限制.它不会导出以下类型的对象:

>存储过程,函数,包

>触发器

>类型

据我所知,我需要开发自己的liquibase.snapshot.SnapshotGenerator实现.我知道如何从Oracle获取这些类型的对象,但是我对如何从Liquibase实现这样的接口感到有点迷茫.

理想情况下,我想liquibase.database.Database接口也应该扩展为添加以下额外方法:

> public abstract boolean supportsPackages();

> public abstract boolean supportsFunctions();

> public abstract boolean supportsStoredProcedures();

> public abstract boolean supportsTriggers();

> public abstract boolean supportsTypes();

你是对的,一般的策略是创建一个实现SnapshotGenerator的新类,但是你还需要做其他几个步骤.一般快照过程是:

> Liquibase搜索SnapshotGenerator实现并为它在数据库中找到的每个对象调用addsTo().对于您的类型,您可能需要一个快速的“if if object objectof Schema”,因为它们是作为模式一部分的类型.>您将需要创建实现DatabaSEObject的新Package,StoredProcedure等对象.他们将喜欢liquibase.structure.core.Table类并捕获对象的状态.它们在您的SnapshotGenerator.addsTo()方法中创建,以便可识别(名称,架构等设置)>然后,通过您的SnapshotGenerator.snapshotObject()方法运行由addsTo()方法添加的所有对象,该方法将提取您最初未获得的任何其他元数据,例如存储过程文本等.>一旦liquibase有一个包含对象的快照,它会将快照与另一个快照(在generateChangeLog情况下为空快照)进行比较,以确定第二个快照中缺少,意外和更改的对象.然后,它查找MissingObjectChangeGenerator,UnexpectedObjectChangeGenerator和ChangedObjectChangeGenerator的实现.对于generateChangeLog,只会有“缺失”的对象,所以你要实现MissingTriggerChangeGenerator,MissingPackagedChangeGenerator等.他们的工作是创建Change实例来创建缺少的对象> Msising * ChangeGenerator类可以返回RawsqlChange实例,也可以创建Change的新实现,例如CreateTriggerChange.

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值