我们正计划将Oracle安装从Solaris迁移到Linux。同时我们将升级到最新版本的Oracle。还有几百个存储过程也应该迁移。
目前的版本是Oracle SE 9.2。我们仍然可以使用Oracle SE,可能还有RAC。
在这之前我们还有什么需要考虑的吗?这样做时遇到的任何问题?所有可以帮助我们的信息都是有价值的。
提前致谢!
/尼古拉斯
答案 0 :(得分:3)
我们刚刚经历了这个,尽管我们已经两步走了 - 去年从9到10,然后今年从10到11。我会试着从记忆中回忆起我们发现的东西:
一个。如果您对GROUP BY有查询,则需要添加匹配的ORDER BY,因为较新版本的Oracle在GROUP BY处理期间(通常)不会在SORT步骤中删除。换句话说,如果有像
这样的查询SELECT * FROM SOME_TABLE
GROUP BY FIELD_1, FIELD_2
您需要将此更改为
SELECT * FROM SOME_TABLE
GROUP BY FIELD_1, FIELD_2
ORDER BY FIELD_1, FIELD_2
B中。我建议您保留9.x数据库的副本一段时间,这样您就可以将9下生成的计划与11下生成的计划进行比较.11x中的优化程序可以非常不同地评估某些查询而不是9.x或10 .x会的。我们发现,我们为10.x正确暗示的一个较大的查询在11.x下运行得非常缓慢。经过一个下午的开发人员和DBA的撕裂后,我们发现ORDERED提示恢复了原来的计划和性能。
℃。如果您有任何代码明确设置为通过执行类似
的操作来使用基于规则的优化器alter session set optimizer_goal = rule
你会收到一个错误,告诉你基于规则的优化器已经过时了。
d。创建集合但未初始化它的PL / SQL代码可以在9.x下运行但在11.x下会失败。一个例子是
TYPE tMyArray IS VARRAY(100) OF VARCHAR2(100);
arrMyArray tMyArray; -- <-- uninitialized array
要解决此问题,您需要将变量声明更改为
arrMyArray tMyArray := tMyArray('');
出于参考的目的,9-> 10升级是最多的工作。 10 - &gt; 11几乎是一个明智的选择(除了一些有问题的查询 - 见B)。
答案 1 :(得分:1)
Dataguard本身实际上是Enterprise Edition功能。