环境描述:windows 2003 企业版 64位
oracle版本:oracle 10g 10.2.0.1 64位
冷备恢复到 windows XP
oracle 10g 10.2.0.1 32位(我自己原来的版本,原来的版本已经没有了)
1.首先先停正式库服务器的oracle服务,备份拷贝oradata下的所有文件,数据文件,控制文件等;
2.安装oracle 10g 32位的oracle,安装路径,数据库名,数据文件等盘符路径都与正式库一致;
3.cmd下重建口令文件,路径:f:oracleproduct10.2.0db_1databasepwdoracle.ora;
4.cmd下>orapwd file=f:oracleproduct10.2.0db_1databasepwdoracle.ora password = manager entries =5;
(如果不知道命令,可以直接输入orapwd回车,看帮助文档;)
把拷贝到原数据文件都拷贝到新的数据库下;
5. cmd 下sqlplus /nolog;
sql>conn /as sysdba;
sql>startup;
6.服务如果能够正常起来,说明数据库启动,可以连接数据库,查看一下表;
7.因为是64位ORACLE恢复到32位,在查询表的时候,会报:ORA-06553: PLS-801: internal error
8.查询ORACLE日志:f:oracleproduct10.2.0admindumpalert_oracle.log;
看那个日志报错:
ORA-12012: 自动执行作业 1 出错
ORA-06553: PLS-801: 内部错误 [56319]
通过网上查询错误:http://docs.oracle.com/html/B13831_01/ap_64bit.htm#CHDCDAGE
解决方案:运行脚本用32位系统重新编译一下内核参数即可
具体步骤:SQL> conn / as sysdba;
SQL> shutdown immediate;
SQL> startup upgrade;
SQL> @f:oracleproduct10.2.0db_1 dbmsadminutlirp.sql
SQL> @f:oracleproduct10.2.0db_1/rdbmsadminutlrp.sql
SQL> shutdown immediate;
SQL> startup;
时间比较长,要耐心等待;
顺利启动以后,用PL/SQL 查询表,看是否还报错,不报错,降级成功!