Oracle XE DB 32bit upgrade to 64 bit on platform win7

来源:互联网 发布:淘宝哪家牛仔裤质量好 编辑:程序博客网 时间:2024/06/09 20:50

        之前我在win7上安装了一个Oracle XE 11.2.0.2,win7系统重新安装了之后,重新下了一个XE的安装软件,将原数据库的数据文件复制过来居然不能使用,打开时报如下错误:

ORA-00704: 引导程序进程失败 ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [],[], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
ORA-00704: 引导程序进程失败 ORA-00604: 递归 SQL 级别 1 出现错误 ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327] *** 2014-07-29 17:50:15.746 USER (ospid: 6916): terminating the instance due to error 704 Symbol file
D:\CompardXE\app\oracle\product\11.2.0\server\BIN\ORACLE.SYM does not match binary

刚开始怀疑是UNDO表空间的问题,把spfile中的*.undo_management改成manual,发现问题依旧,最后回想了一下,操作系统重装之前的XE是32位版本,这次下载的XE是64位版本,位数不同数据文件当然不能直接打开的。知道了原因,处理起来就方便多了,处理的过程相当于做了一次数据库由32位向64位升级,记录如下:

sqlplus "/ as sysdba"
startup upgrade
alter system set "_SYSTEM_TRIG_ENABLED"=false scope=both;
@D:\CompardXE\app\oracle\product\11.2.0\server\rdbms\admin\utlirp.sql
shutdown immediate
startup
@D:\CompardXE\app\oracle\product\11.2.0\server\rdbms\admin\utlrp.sql
alter system set "_SYSTEM_TRIG_ENABLED"=true scope=both;

使用select * from dba_registry;确认所有组件的状态。

执行完毕后,确认无效对象是否都变成有效,有时候还需要手工处理一下才能变成有效。所有的非客户化的代码对象都变成有效后,升级基本上就算结束了。

本次在执行utlrp.sql时,出现过如下问题:
第 1 行出现错误:
ORA-25153: 临时表空间为空
ORA-06512: 在 "SYS.UTL_RECOMP", line 804
ORA-06512: 在 line 4

解决方法:
Alter Tablespace TEMP add Tempfile 'D:\CompardXE\app\oracle\oradata\XE\temp.dbf' reuse;


一点补充:

        在某次升级时碰到过sys用户执行utlrp.sql时出现ORA-01031 权限不足的错误,如果是第一次碰到这个错误,估计大部分人会先去确认下win7下Oracle OS认证环境是否配置正确,应该说,在XE安装时这些都已经配置好的,那次升级时最后确认引起这个错误的原因是"_SYSTEM_TRIG_ENABLED"参数配置的问题,按照Oracle建议,在升级前将该参数设置为FALSE,升级后置为TRUE即可。

        本次32位到64位的升级只是自己的测试DB的升级,如果是企业级别的升级,上述这个步骤只是升级的一部分,企业级别的数据库需要根据数据库中的注册的组件来确认步骤,比如JAVA组件的处理,OLAP组件的处理等等,需要具体情况具体分析。



0 0
原创粉丝点击