Oracle Rman将32位数据库转换至64位

一.准备工作
1.DB1为32位系统,DB2为64位系统。
2.数据库的版本为10.2.0.3以上,DB2的版本要高于或等于DB1。
3.检查是否由只读表空间存在,如果有使用命令

Alter tablespace tablespace_name read write;

将它改为可读写表空间。
二.在DB1服务器
1.使用rman备份oracle数据库
2.备份脚本为
图片1
也可以不备份archivelog,但必须手工拷贝archivelog至DB2的归档目录。
3.拷贝d:\backup目录至DB2服务器
三.在DB2服务器
1.进入rman,使用sys登录
图片2
2.恢复控制文件并mount

Restore controlfile from ‘d:\backup\备份文件’;
Alter database mount;

备份文件为备份控制文件的文件,在rman备份目录中此文件的大小与DB1上的控制文件大小相仿。
3.注册备份控制文件之后产生的归档备份片

RMAN> catalog backuppiece 'I:\backup\ARCH_8_20111207_1';

此文件是最后生成的备份片文件, 不在控制文件记录之内.
或执行命令catalog start with ‘目录名’; 重新记录备份集
4.恢复数据库文件

RMAN> restore database

5.修复数据库

RMAN> recover database;

6.进入sqlplusw或sqlplus,使用sys用户登录
图片3
7.使用upgrade方式打开数据库

SQL> alter database open resetlogs upgrade;

8.运行32位转换64位脚本

SQL>@d:\oracle\1020\rdbms\admin\utlirp.sql

如果64位oracle的版本高于32位的版本,还要继续运行相应的升级脚本
可以参照MF相应的oracle升级文档。
9.立即关闭数据库以正常模式打开数据库并编译invalid objects
图片4
10.在编译invalid objects的时候会碰到以下错误
图片5
这个错误是由olap引起的,必须按以下步骤删除olap并重建olap,否则opera及oxi中都会有编译不过的invalid objects存在。

1.SQL>@d:\oracle\1020\rdbms\admin\catnoamd.sql
2.SQL>@d:\oracle\1020\rdbms\admin\olapidrp.plb
3.SQL>@d:\oracle\1020\rdbms\admin\catnoxoq.sql
4.SQL>@d:\oracle\1020\rdbms\admin\catnoaps.sql
5.SQL>@d:\oracle\1020\rdbms\admin\utlrp.sql
6.SQL>@d:\oracle\1020\rdbms\admin\olap.sql
7.SQL>@d:\oracle\1020\rdbms\admin\utlrp.sql

11.检查olapsys中有否invalid objects

SQL>select owner,object_name,object_type,status from dba_objects where status = 'INVALID' and OWNER = 'OLAPSYS';

12.检查olap组件是否正常

column comp_name fromat a35;
SQL>select comp_name,status,substr(version,1,10) as version from dba_registry;

13.进入opera_smt编译opera及oxi中invalid objects。
四.最后再关闭数据库并以正常方式打开数据库,至此32位转换为64位结束。

发表评论