在这篇文章中演示第一种方法:直接copy datafile进行迁移。
一.测试环境:
DB:11.2.0.3 32 位
OS: Oracle Linux 6.1 32 位
IP:192.168.3.200
ORACLE_HOME:
[oracle@tianlesoftware ~]$ echo$ORACLE_HOME
/u01/app/oracle/product/11.2.0/db_1
DB:11.2.0.3 64位
OS:Oracle Linux 6.1 64位
IP:192.168.3.201
ORACLE_HOME:
rac1:/home/oracle> echo $ORACLE_HOME
/u02/app/oracle/product/11.2.0/db_1
这里2个ORACLE_HOME 不一样,所以我们在操作过程中需要重建控制文件。
1. 冷备份整个DB,以防修改wordsize失败。
2. 将source 端的控制文件dump 到 trace文件里。
SQL> oradebug setmypid
Statement processed.
SQL> alter database backup controlfile to trace;
Database altered.
SQL> oradebug tracefile_name
/u01/app/oracle/diag/rdbms/anqing/anqing/trace/anqing_ora_8874.trc
查看trace 文件,获取控制文件重建脚本:
[oracle@tianlesoftware u01]$ cat /u01/app/oracle/diag/rdbms/anqing/anqing/trace/anqing_ora_8874.trc
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE"ANQING" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/anqing/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2'/u01/app/oracle/oradata/anqing/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/anqing/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/anqing/system01.dbf',
'/u01/app/oracle/oradata/anqing/sysaux01.dbf',
'/u01/app/oracle/oradata/anqing/undotbs01.dbf',
'/u01/app/oracle/oradata/anqing/users01.dbf'
CHARACTER SET ZHS16GBK
;
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/anqing/temp01.dbf'
SIZE 30408704 REUSE AUTOEXTEND ONNEXT 655360 MAXSIZE 32767M;
3. 在Target 端安装64位的Oracle软件,这里仅安装,不创建实例。
4. Clean shutdown Source 端的32位DB
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
5. 将Source 端的所有datafile copy 到Target 端的对应目录。
注意这里的TEMP 表空间,虽然我们可以一起拷贝过去,但是还是建议重建TEMP,已避免其他的问题。
5.1 在Target 端创建相关的目录
rac1:/u02> cd app/oracle/
rac1:/u02/app/oracle> ls
checkpoints diag product
rac1:/u02/app/oracle> mkdir admin
rac1:/u02/app/oracle> mkdir fast_recovery_area
rac1:/u02/app/oracle/product/11.2.0/db_1/dbs>cd /u02/app/oracle/fast_recovery_area/
rac1:/u02/app/oracle/fast_recovery_area>mkdir anqing
rac1:/u02/app/oracle> mkdir oradata
rac1:/u02/app/oracle> ls
admin checkpoints diag fast_recovery_area oradata product
rac1:/u02/app/oracle> cd oradata
rac1:/u02/app/oracle/oradata> mkdiranqing
rac1:/u02/app/oracle/oradata> cd ../
rac1:/u02/app/oracle> ls
admin checkpoints diag fast_recovery_area oradata product
rac1:/u02/app/oracle> cd admin
rac1:/u02/app/oracle/admin> ls
rac1:/u02/app/oracle/admin> mkdir anqing
rac1:/u02/app/oracle/admin> cd anqing
rac1:/u02/app/oracle/admin/anqing> mkdiradump
rac1:/u02/app/oracle/admin/anqing> mkdirdpdump
rac1:/u02/app/oracle/admin/anqing> mkdirpfile
rac1:/u02/app/oracle/admin/anqing> mkdirscripts
rac1:/u02/app/oracle/admin/anqing> ls
adump dpdump pfile scripts
5.2 copy 所有datafiles
[oracle@tianlesoftware anqing]$ scp *192.168.3.201:/u02/app/oracle/oradata/anqing
oracle@192.168.3.201's password:
control01.ctl 100% 9520KB 9.3MB/s 00:0