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

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

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

有一件事我忘记提到数据库是从早期版本升级,原来和升级版本是32位。

如果你有足够的磁盘空间,最简单的方法是安装一个新的Oracle 11g 64位实例,导出你的32位数据,然后导入到64位Oracle中。 这也可以让你有两个并排运行一点,以validation两个实例是相同的,按预期工作。

基本上它应该是:导出架构,升级,导入架构。 你能详细谈谈你遇到的问题吗?

经过一些试验和错误,我发现以下解决了我所期望的大部分问题

#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'; 

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

我还没有遇到更多的转换问题。 不过,如果这种方法有任何遗漏或其他问题,我很乐意听到。