将 Oracle 11g 数据库从 32 位转换为 64 位

将 Oracle 11g 数据库从 32 位转换为 64 位

我已经将数据库从 Linux 下的 32 位 Oracle 11g 版本移至 64 位环境。然而,我在新环境(也是 Linux)中遇到了问题。

有没有方法将数据库升级到 64 位

有一件事我忘了提,数据库是从早期版本升级的,原始版本和升级版本都是 32 位。

答案1

如果您有足够的磁盘空间,最简单的做法是安装 Oracle 11g 64 位的新实例,导出 32 位数据,然后导入 64 位 Oracle。这还允许您同时运行两个实例,以验证两个实例是否相同且按预期运行。

答案2

基本上应该是:导出架构、升级、导入架构。你能详细说明一下你遇到的问题吗?

答案3

经过反复试验,我发现下面的方法解决了我遇到的大多数问题

#Shutdown and restart instance in upgrade mode.
Shutdown immediate;
Startup upgrade;

#now invalidate the existing packages 
@$ORACLE_HOME/rdbms/admin/utlirp.sql

#As i have already patched the system to DST V10 i needed to do the following
@$ORACLE_HOME/rdbms/admin/utlu111i.sql

#now i started to convert/upgrade the database, i started with the upgrade catalog 
# as it resolve a lot of issues i experienced.

@$ORACLE_HOME/rdbms/admin/catupgrd.sql

#Then the more standard catalog procs were applied.
@$ORACLE_HOME/rdbms/admin/catalog.sql
@$ORACLE_HOME/rdbms/admin/catproc.sql

#Finally, get all of the procs recompiled.
@$ORACLE_HOME/rdbms/admin/utlrp.sql

shutdown immediate;
startup;

#then check for any outstanding issues

select * from sys_objects where Status != 'VALID';

现在我确实有几个无效对象,但这些是特定于应用程序的并且相当容易解决。

我再也没有遇到任何与转换有关的问题。但是,如果此方法存在任何遗漏或其他问题,我将非常乐意听取您的意见。

相关内容