设置/拆除CI构建的Oracle模式,而不会破坏目录

时间:2011-11-29 18:42:17

标签: oracle hibernate jpa continuous-integration

我希望有一个CI构建(例如,Hudson)设置并拆除Oracle 11g架构,作为一个相当普通的JSF / JPA应用程序的每晚构建/测试周期的一部分。

最明显的方法是删除并重新创建所有表。虽然这感觉相当标准(至少,这就是Hibernate / JPA工具会为您自动完成的),但我已经让Oracle DBA警告我,在重复的对象创建/删除周期后,Oracle目录将会碎片化。最终这会导致性能问题,因为SYSTEM表空间无法进行碎片整理/合并。

我的问题是:

  • 是一个真正令人担忧的碎片,或者在典型的webapp开发环境中你不需要担心什么?
  • 如果碎片真的是一个问题,是否有更好的方法来拆除和重建Oracle中的模式而不是DROP TABLE / CREATE TABLE?

谢谢!

2 个答案:

答案 0 :(得分:7)

不要相信那些DBA

使用本地管理的表空间(LMT)时至少有10g及以上,这应该不是问题。

即使这确实造成任何碎片,我也非常怀疑你能否衡量其影响 - 尤其是在用于CI的数据库上。

答案 1 :(得分:2)

我正在为我的第二个Oracle项目安装CI构建流程。我不认为丢弃和重新创建一切都会造成任何伤害(如上所述a_horse_with_no_name)。我很高兴听到你正在考虑将CI扩展到数据库对象 - 太多的团队没有。

另一种方法可能是每晚从最近的备份恢复数据库(或使用闪回数据库),并在每次CI运行时将应用程序从“生产备份”迁移到当前的开发状态。通过这种方式,最终将应用于生产的代码将每晚进行测试,以反映与生产大致相同的内容。如果您已经考虑过CI,那么思考会有所改变,但不会有太多变化。

如果你喜欢尝试迁移方法,我有一个我一直在努力的工具可能会有所帮助 - http://dbgeni.com它仍处于开发阶段,但我设计了CI并通过迁移管理数据库更改记住。