将应用程序从 Oracle 9 移植到 Oracle 11 - 有什么问题吗?
我们有一个使用 Oracle 9i 的应用程序(好吧,3 个),但是它很快就会停产,我们需要迁移到另一个平台 - Oracle 11 或 Postgress 是显而易见的平台。
我听到过这样的评论,大意是从 9i 移植到 11 并不简单,但这里没有人可以确认其中一种方式。 我并不太关心“哦,查询计划引擎发生了变化”,我更关心“这个功能不再存在”。
这些应用程序都不复杂——要么是客户端 SQL 中的基本 CRUD 内容(以及一个大型多表搜索例程,但我们无论如何都会使用 Lucene 重写它),要么是 PL/SQL 中的相同内容。
Postgress 只是一个可能更容易、更便宜的移植目标,但许可证成本被 DBA 的培训成本所抵消。
任何经验评论表示赞赏。
We have an application (well, 3) which uses Oracle 9i, however this is being end-of-life-ed shortly, and we need to move to another platform - Oracle 11 or Postgress being the obvious ones.
I've heard comments to the effect that porting from 9i to 11 isn't straight forward, but no-one here can confirm one way or the other. I'm not overly concerned with "oh, the query plan engine changed", I'm more concerned with "this feature isn't there anymore".
None of the apps are complex - it's either basic crud stuff in client-side SQL (and a big multi-table search routine, but we are going to rewrite that using Lucene anyway), or the same in PL/SQL.
Postgress only came up as a possibly easier and cheaper target to port to, but the license cost is offset by the training cost for our DBAs.
Any experience comments appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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/文档/cd/B28359_01/readmes.111/b28280/toc.htm#BABGIGDC
Here's a useful whitepaper from Oracle on some of the changes between 9i and 10g that will get you started: http://www.oracle.com/technology/products/bi/db/10g/pdf/twp_bidw_optimizer_10gr2_0208.pdf
The documentation sets for 10g and 11g will give you a very thorough list of new and deprecated features, and of modified default behaviour. eg. http://download.oracle.com/docs/cd/B28359_01/readmes.111/b28280/toc.htm#BABGIGDC
需要注意的一些事项:
Some things to note:
令我们震惊的事情:
在 9i 和 10g 之间,DISTINCT 的排序行为发生了变化。
在 9i 中,您可以编写
,行将按 X 排序(显然您应该包含“ORDER BY X”子句,但有时人们会忘记,因为它没有)。
10g 中情况并非如此...DISTINCT 的实现已更改,行现在通常会以无序方式返回。
(一旦找到有问题的代码,就很容易修复。)
Something that hit us:
Between 9i and 10g the ordering behaviour of DISTINCT changed.
In 9i, you could write
and the rows would come back ordered by X (clearly you should have included a "ORDER BY X" clause, but sometimes people forgot because it worked without).
This isn't the case in 10g... the implementation of DISTINCT has changed and the rows will now typically come back in a non-ordered manner.
(Easy enough to fix once you've found the offending code.)
好吧,规则库优化器已经消失或几乎消失,因此查询计划确实发生了变化。
但缺少功能...我什么都不知道。 你应该询问那些告诉你缺少功能的人来支持你的说法。 询问他们缺少哪些功能?
如果他们不能给出示例,我不会感到惊讶。
Well the rule base optimizer is gone or almost gone so query plans indeed change.
But missing features... I don't know any. You should aks the dudes and dudettes who told you about missing features to back that statement up. Ask them which features are missing?
I wouldn't be suprised if they couldn't give examples.
为了加强安全性,对 UTL_HTTP 等内容所需的权限进行了一些更改。
但实际上,没有什么会损坏的东西是不能轻易修复的。 Oracle 最不想做的事情就是破坏已经在其数据库上运行的应用程序。
如果您已经支付了 Oracle 许可证的费用,那么巨额费用就已经产生了。 Postgres 的维护和支持成本可能会较低,但当数据库出现故障且备份恢复未按预期进行时,您仍然需要支付当天的支持费用。
附言。 您是否看过内置的 Oracle Text 功能而不是 Lucene ?
There were some changes to the privileges required for things like UTL_HTTP to tighten up security.
But really there's nothing that would break which can't be fixed pretty easily. The last thing Oracle want to do is break applications already running on their database.
If you've already paid for Oracle licences, the big cost has already been incurred. Your maintenance and support costs may be lower for Postgres but you'd still want to be paying for support for that day when the DB goes down and the recovery from backup isn't going as expected.
PS. Have you looked at the built-in Oracle Text functionality as opposed to Lucene ?