利用RMAN把ORACLE 10G 64位降级为32位
 
由于项目需要测试环境,原库为ORACLE 10.2.0.4 64位,环境导致需迁移到32位上机器上去,网上有很多32位升级到64位的文章,其实64位降级为32位大同小异,数据字典的改变而已,可以利用冷备 RMAN等方法进行迁移,本文是利用RMAN进行迁移的,RMAN备份可以参考别的文章。
 
具体步骤如下。
1、迁移前一天停止RMAN脚本中的DELETE ALL INPUT来停止删除归档日志文件。
2、全备前使用V$LOG来确定当前的日志序列号。
3、在当前服务器中新建目录来保存RMAN备份文件。
4、使用RMAN全备脚本进行完整的RMAN备份,指定目录到新建的目录中。同时保存RMAN备份日志,用来过后确定ORACLE控制文件所在的备份集备份片。
5、在原中使用CREATE PFILE FROM SPFILE来更新PFILE。
6、在目标服务器中新建数据库,数据库的名字和原数据库一样。
7、建立完成会删除所有数据文件,日志文件,控制文件,同时删除SPFILE。
8、在目标服务器中新建目录,此目录和原服务器中的目录一样。
9、 通过FTP传输所有备份集备份片到目标服务器中新建的目录中。
10、修改目标服务器中数据库的PFILE,要求和原数据库PFILE一样。
11、启动数据库到NOMOUNT状态。
12、在目标服务器中新建目录用来存在恢复的控制文件,参照PFILE中的配置
13、进行控制文件恢复。
14、启动数据库到MOUNT状态。
15、在目标服务器中新建目录用来存放数据库文件,建立归档目录用来存放归档日志,
    同时建立各种TRACE文件目录。
16、通过RESOTRE来进行数据文件还原。
到此准备工作完成,下面的步骤为进行数据恢复时的步骤
17、提取原库的对象信息,在迁移完成后方便对比。
18、关闭应用,确定不会再有新的数据写入到数据库。
19、进行多次日志切换,确保所有更改的数据都已经写入到归档日志,如果日志文件为三个进行四次切换即可。
20、通过原数据库查看V$LOG来确定当前日志序列,判断出需要拷贝的归档日志文件,为了更加安全可以在最早的归档以前再多取几个。
21、通过FTP拷贝原服务器归档日志到目标服务器相应的目录中。
22、通过RECOVER DATABASE UNTIL 来进行恢复。
23、使用ALTER DATABASE OPEN RESETLOGS来打开数据库。
24、使用命令SHUTDOWN IMMEDIATE来关闭数据库。
25、使用命令STARTUP MIGRATE启动数据库。
26、运行脚本utlirp.sql。
27、使用命令SHUTDOWN IMMEDIATE来关闭数据库。
28、使用命令STARTUP来启动数据库。
29、运行脚本utlrp.sql。
30、使用命令SHUTDOWN IMMEDIATE来关闭数据库。
31、使用命令STARTUP来启动数据库。
32、提取数据库对象信息,和原库的对象信息进行比对。
至此数据迁移完成。
 
 
建立好相关目录 拷贝好所有的备份到与原库上备份的相同目录下 我的是/u01/app/oracle/backup
 
[[email protected] ~]# su - oracle
[[email protected] ~]$ cd /u01/app/oracle/
[[email protected] oracle]$ ls
oraInventory  product
[[email protected] oracle]$ mkdir admin
[[email protected] oracle]$ ls
admin  oraInventory  product
[[email protected] oracle]$ mkdir flash_recovery_area
[[email protected] oracle]$ mkdir archivelog
[[email protected] oracle]$ mkdir backup
[[email protected] oracle]$ mkdir oradata
[[email protected] oracle]$ cd admin
[[email protected] admin]$ mkdir itspfdb
[[email protected] admin]$ cd itspfdb/
[[email protected] itspfdb]$ mkdir adump
[[email protected] itspfdb]$ mkdir bdump
[[email protected] itspfdb]$ mkdir cdump
[[email protected] itspfdb]$ mkdir dpdump
[[email protected] itspfdb]$ mkdir pfile
[[email protected] itspfdb]$ mkdir udump
[[email protected] itspfdb]$ cd ..
[[email protected] admin]$ cd ..
[[email protected] oracle]$ cd ora
oradata/      oraInventory/ 
[[email protected] oracle]$ cd oradata/
[[email protected] oradata]$ mkdir itspfdb

从源库拷贝一个PFLIE到新库

SQL> startup mount from pfile='/soft/pfile20130710.ora'
ORACLE instance started.

Total System Global Area 1019215872 bytes
Fixed Size                  1271252 bytes
Variable Size             616565292 bytes
Database Buffers          394264576 bytes
Redo Buffers                7114752 bytes
ORA-02231: missing or invalid option to ALTER DATABASE


[[email protected] ~]# su - oracle

SQL> startup nomount pfile='/soft/pfile20130710.ora';

SQL>create spfile='/u01/app/oracle/product/10.2.0/db_1/dbs/spfileitspfdb.ora' from pfile='/soft/pfile20130710.ora';

-- 也可以利用RMAN在备份中恢复参数文件备份
RMAN> restore spfile to pfile '/u01/app/oracle/product/10.2.0/db_1/dbs/inititspfdb.ora' from '/u01/app/oracle/backup/c-4014947212-20130919-01';

-- 恢复控制文件
[[email protected] ~]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Sep 26 00:43:08 2013

Copyright (c) 1982, 2007, .  All rights reserved.

connected to target database: itspfdb (not mounted)

RMAN> restore controlfile from '/u01/app/oracle/backup/c-4014947212-20130919-01';

RMAN> exit

Recovery Manager complete.

--还原数据库
[[email protected] ~]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Sep 26 02:09:44 2013

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: itspfdb (not mounted)


RMAN> alter database mount;
RMAN> restore database


--恢复数据库。

SQL>startup mount;

--在其中可能有需要几个归档文件,可以把原库当天备份的归档文件拷贝过来 选择AUTO
SQL>recover database using  BACKUP CONTROLFILE until cancel;

SQL>alter database open resetlogs;

SQL>shutdown immediate


-- 进行降级后的操作
SQL>Shutdown immediate
SQL>startup migrate
SQL>@$ORACLE_HOME/rdbms/admin/utlirp.sql;
SQL>Shutdown immediate
SQL>Startup
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql;
SQL>Shutdown immediate
SQL>Startup