我们计划将Oracle安装从Solaris迁移到Linux。同时我们将升级到最新版本的Oracle。有几百个存储过程也应该被迁移。将Oracle形式迁移并升级到Linux,包括存储过程
现在的版本是Oracle SE 9.2。我们仍然会使用Oracle SE,可能与RAC一起使用。
在做这件事之前有什么我们必须考虑的吗?在做这件事时遇到的任何问题?所有可以帮助我们的信息都是有价值的。
在此先感谢!
/尼克拉斯
我们计划将Oracle安装从Solaris迁移到Linux。同时我们将升级到最新版本的Oracle。有几百个存储过程也应该被迁移。将Oracle形式迁移并升级到Linux,包括存储过程
现在的版本是Oracle SE 9.2。我们仍然会使用Oracle SE,可能与RAC一起使用。
在做这件事之前有什么我们必须考虑的吗?在做这件事时遇到的任何问题?所有可以帮助我们的信息都是有价值的。
在此先感谢!
/尼克拉斯
我们只是通过这个去了,虽然我们的两级它 - 就从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以下生成的计划进行比较。11.x中的优化器可以评估一些查询,与9.x或10.x不同。我们发现,我们在10.x版中适当提示10.x的一个较大的查询的速度非常缓慢。经过一个下午的开发人员和数据库管理员的头发,我们发现ORDERED提示恢复了原来的计划和性能。
C.如果你有明确建立通过执行类似
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 - > 11几乎毫不费力(除了几个有问题的查询 - 见B)。
谢谢,这是非常好的信息。欣赏它! – Nicsoft 2010-08-30 11:30:17