将应用程序从Oracle 9移植到Oracle 11-gottchas?

将应用程序从Oracle 9移植到Oracle 11-gottchas?,oracle,migration,Oracle,Migration,我们有一个使用Oracle9i的应用程序(好吧,3),但是这很快就要结束了,我们需要转移到另一个平台——Oracle11或Postgress是显而易见的平台 我听过一些评论,大意是从9i移植到11并不是直截了当的,但这里没有人能够证实这两种方法。我不太关心“哦,查询计划引擎改变了”,我更关心的是“这个功能不再存在了” 没有一个应用程序是复杂的——它要么是客户端SQL中的基本crud(和一个大的多表搜索例程,但我们无论如何都要用Lucene重写),要么是PL/SQL中的crud Postgress

我们有一个使用Oracle9i的应用程序(好吧,3),但是这很快就要结束了,我们需要转移到另一个平台——Oracle11或Postgress是显而易见的平台

我听过一些评论,大意是从9i移植到11并不是直截了当的,但这里没有人能够证实这两种方法。我不太关心“哦,查询计划引擎改变了”,我更关心的是“这个功能不再存在了”

没有一个应用程序是复杂的——它要么是客户端SQL中的基本crud(和一个大的多表搜索例程,但我们无论如何都要用Lucene重写),要么是PL/SQL中的crud

Postgress只是作为一个可能更容易、更便宜的目标进行移植,但许可证成本被DBA的培训成本所抵消


任何经验评论都值得赞赏。

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

但缺少的功能。。。我什么都不知道。你应该让那些告诉你缺少功能的家伙们来支持你的说法询问他们缺少哪些功能?

如果他们不能举例说明,我也不会感到惊讶

需要注意的一些事情:

  • 创建视图权限是9i中连接角色的一部分。但不是10g。可能也在11G中。您可能希望向安装脚本添加授权
  • 11G具有区分大小写的密码。因此,如果您发现自己无法连接,这可能就是问题所在
以下是Oracle提供的一份有用的白皮书,介绍了9i和10g之间的一些变化,这些变化将帮助您开始:


10g和11g的文档集将为您提供一个非常全面的新功能和不推荐的功能以及修改的默认行为列表。例如,

UTL\U HTTP之类的东西为加强安全性所需的特权有一些更改。 但实际上,没有什么东西是不容易修复的。Oracle最不想做的事情就是破坏已经在其数据库上运行的应用程序

如果您已经支付了Oracle许可证的费用,那么就已经产生了巨大的成本。对于Postgres,您的维护和支持成本可能较低,但您仍然希望在数据库出现故障且备份恢复未按预期进行时支付支持费用

另外,你有没有看过与Lucene相反的内置Oracle文本功能?

一些让我们印象深刻的东西:

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

在9i中,你可以写作

SELECT DISTINCT X
FROM   Y;
行将按X排序返回(显然,您应该包含一个“orderbyx”子句,但有时人们会忘记,因为它在没有命令的情况下工作)

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


(一旦发现了有问题的代码,就很容易修复。)

为什么不自己试试呢?您可以免费下载并使用11g进行开发。我知道,但我们的时间很短,所以在“我已经完成了,还可以”或“d00d,你真该死”之类的事情之后也是如此:)感谢两个答案——标记为Rene的答案是正确的,只是因为他没有那么多的代表(也就是说,他会发现这个代表很有用)。遗憾的是,不能将两者都标记为正确:(感谢你们两位。感谢堆!在我们开始之前,我会给他们看一看。干杯。不,我们没有看过Oracle FTI,但如果它好的话,它将是业界的第一个-我见过的所有其他产品都非常糟糕。但我会看看它。目前它只是SQL,但非常不灵活。谢谢-我会确保他们检查这一点:)