将应用程序从Oracle 9i移植到Oracle 11g - 陷阱?

时间:2009-02-05 11:37:57

标签: oracle migration

我们有一个使用Oracle 9i的应用程序(好吧,3),但很快就会停止使用,我们需要转移到另一个平台--Oracle 11或Postgress是显而易见的。

我听说过从9i到11的移植并不是直截了当的意见,但这里没有人可以确认这种或那种方式。我并不过分担心“哦,查询计划引擎发生了变化”,我更关心的是“这个功能不再存在了”。

这些应用程序都不复杂 - 它既可以是客户端SQL中的基本内容(也可以是一个大型的多表搜索例程,但我们将使用Lucene重写它),或者在PL / SQL中也是如此。

Postgress只是一个可能更容易和更便宜的移植目标,但许可证成本被我们的DBA的培训成本所抵消。

任何经验评论都表示赞赏。

5 个答案:

答案 0 :(得分:5)

以下是Oracle提供的一份有用的白皮书,内容涉及9i和10g之间的一些变化,可以帮助您入门:http://www.oracle.com/technology/products/bi/db/10g/pdf/twp_bidw_optimizer_10gr2_0208.pdf

10g和11g的文档集将为您提供一个非常全面的新功能和已弃用功能列表,以及修改后的默认行为。例如。 http://download.oracle.com/docs/cd/B28359_01/readmes.111/b28280/toc.htm#BABGIGDC

答案 1 :(得分:3)

有些注意事项:

  • CREATE VIEW权限是9i中CONNECT角色的一部分。但不是10克。可能也在11G。您可能希望向安装脚本添加授权。
  • 11G具有区分大小写的密码。因此,如果您发现自己无法连接,这可能是问题所在。

答案 2 :(得分:2)

有什么东西打击了我们:

在9i和10g之间,DISTINCT的排序行为发生了变化。

在9i中,你可以写

SELECT DISTINCT X
FROM   Y;

并且行将按X排序(显然你应该包含一个“ORDER BY X”子句,但有时人们会忘记,因为它没有工作)。

在10g中并非如此...... DISTINCT的实现已经改变,现在行通常会以无序的方式返回。

(一旦找到有问题的代码,就很容易修复。)

答案 3 :(得分:1)

规则库优化器已经消失或几乎消失,因此查询计划确实发生了变化。

但缺少功能......我不知道。你应该问那些告诉你缺少功能的家伙和老兄,以支持这个陈述。 询问他们缺少哪些功能?

如果他们不能举例,我不会感到惊讶。

答案 4 :(得分:1)

UTL_HTTP加强安全性等所需的权限发生了一些变化。 但实际上没有什么可以破解的,不容易修复。 Oracle想要做的最后一件事就是破坏已在其数据库上运行的应用程序。

如果您已经支付了Oracle许可证,那么已经产生了巨大的成本。 Postgres的维护和支持成本可能会降低,但是当数据库发生故障并且备份恢复没有按预期进行时,您仍然希望支付那天的支持。

PS。您是否看过内置的Oracle Text功能而不是Lucene?