将Oracle 10g数据库迁移到Microsoft SQL 2008 R2的最佳实践是什么?应用程序正在使用Hibernate

时间:2011-04-19 20:02:34

标签: java sql-server oracle hibernate migration

基本上标题是什么。展望未来,我们需要开始支持两个数据库平台(并将开始相应地编写迁移),但我们需要做第一个初始“端口”。

我们的DBA相信他们可以转换架构,表格,数据类型等,但我们的开发人员对DAO“只是工作”的信心不足。有人能指出我们可以审查的一些资源吗?理想情况下要避免的常见陷阱,运行的特定测试等等。我们当然会在应用程序层运行全套数据库测试,但希望在此之前做尽可能多的准备工作。

3 个答案:

答案 0 :(得分:4)

注意并测试负载下的性能。 Oracle在某些方面与其他数据库供应商有着根本的不同。 Tom Kyte出色的书籍Expert Oracle Database Architecture指出了一些不同之处。几个亮点:

  1. Oracle从不锁定数据只是为了阅读它。许多其他数据库都可以。
  2. Oracle中的数据编写者从不阻止读者。数据读者永远不会阻止作者。许多其他供应商也是如此。
  3. 当锁定问题表面时,不注意这样的事情会导致转换后出现大问题。这并不意味着一种产品优于另一种产品,而只是意味着与一种供应商的产品配合得很好可能会在另一种产品中失败,并且可能需要根据数据库定制方法。

答案 1 :(得分:1)

Ditto(虽然在一个非常简单的架构上,不得不说)。 “刚刚工作”。 Hibernate魔术。

我安心了,因为我们对DAO层有100%的测试覆盖率。因此,当在MS SQL上重新创建模式,并且在映射中更新了一些表和列名称(不记得原因,但DBA要求,可能是命名约定)时,我们只运行测试并发现没有失败的。 / p>

P.S。回忆一个有趣的细节:功能测试都没问题。但是当PTE在MS SQL数据库上启动时,我们发现由于锁传播,对一个特定表的并发访问速度比在Oracle上慢。我们不得不重新设计这个功能。

答案 2 :(得分:0)

我认为第一步是获取一个空的MS SQL模式,使用hbm2ddl=true并让Hibernate在那里创建表。然后向你的DBA展示这个,并询问这是否有意义。

填充数据不是问题,我猜测查询会更滑(特别是如果你在某些地方使用原始JDBC)。您可能还想检查常用查询的查询计划,看看这些查询是否也有意义。