2010-08-30 66 views
0

我们计划将Oracle安装从Solaris迁移到Linux。同时我们将升级到最新版本的Oracle。有几百个存储过程也应该被迁移。将Oracle形式迁移并升级到Linux,包括存储过程

现在的版本是Oracle SE 9.2。我们仍然会使用Oracle SE,可能与RAC一起使用。

在做这件事之前有什么我们必须考虑的吗?在做这件事时遇到的任何问题?所有可以帮助我们的信息都是有价值的。

在此先感谢!

/尼克拉斯

回答

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以下生成的计划进行比较。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)。

+0

谢谢,这是非常好的信息。欣赏它! – Nicsoft 2010-08-30 11:30:17

1

Dataguard本身实际上是Enterprise Edition功能。

+0

确实,之前被错误地告知...感谢您的信息!更新我的问题。 – Nicsoft 2010-09-01 21:10:31