Oracle 10g开始提供了强大的数据库跨平台迁移功能,可以对不同体系架构,不同操作系统间的oracle数据库进行迁移!但endianess必须要相同,11g开始不同的endianess之间也可以进行相互迁移!下面演示下将windows 32位上的oracle数据库迁移到rhel6 64位上。

一:准备windows环境这里采取32位winxp系统,如果之前安装过oracle服务器或者客户端需要卸载干净(清注册表),否则安装会报错,oracle版本为10.2.0.1SQL>select * from v$transportable_platform;

PLATF PLATFORM_NAME                            ENDIAN_FORMAT

----- ---------------------------------------- --------------

1 Solaris[tm] OE (32-bit)                  Big

2 Solaris[tm] OE (64-bit)                  Big

7 Microsoft Windows IA (32-bit)            Little

10 Linux IA (32-bit)                        Little

6 AIX-Based Systems (64-bit)               Big

3 HP-UX (64-bit)                           Big

5 HP Tru64 UNIX                            Little

4 HP-UX IA (64-bit)                        Big

11 Linux IA (64-bit)                        Little

15 HP Open VMS                              Little

8 Microsoft Windows IA (64-bit)            Little

9 IBM zSeries Based Linux                  Big

13 Linux 64-bit for AMD                     Little

16 Apple Mac OS                             Big

12 Microsoft Windows 64-bit for AMD         Little

17 Solaris Operating System (x86)           Little

18 IBM Power Based Linux                    Big

17 rows selected

1.1 新建一个自定义的表空间,并在表空间上建表,插数据SQL>create tablespace win_migrate

2  datafile 'E:\oracle\product\10.2.0\oradata\winorcl\win_migrate01.dbf'

3  size 10M;

表空间已创建。

SQL>create table t_migrate (a number) tablespace win_migrate;

表已创建。

SQL>insert into t_migrate values (1);

已创建 1 行。

SQL>commit;

提交完成

1.2 在源服务器上将数据库变成自读模式并使用rman转换副本SQL>shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL>startup mount

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1292036 bytes

Variable Size             188745980 bytes

Database Buffers          415236096 bytes

Redo Buffers                7094272 bytes

数据库装载完毕。

SQL>alter database open read only;

数据库已更改。

C:\Users\Naruto>rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期日 7月 17 19:57:49 2011

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

连接到目标数据库: WINORCL (DBID=1904834971)

RMAN>convert database to platform 'Linux 64-bit for AMD' format 'e:\data\%U';

启动 convert 于 17-7月 -11

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1:sid=147devtype=DISK

在数据库中找到外部表 SH.SALES_TRANSACTIONS_EXT

在数据库中找到目录 SYS.SUBDIR

在数据库中找到目录 SYS.XMLDIR

在数据库中找到目录 SYS.MEDIA_DIR

在数据库中找到目录 SYS.LOG_FILE_DIR

在数据库中找到目录 SYS.DATA_FILE_DIR

在数据库中找到目录 SYS.WORK_DIR

在数据库中找到目录 SYS.ADMIN_DIR

在数据库中找到目录 SYS.DATA_PUMP_DIR

在数据库中找到 BFILE PM.PRINT_MEDIA

在口令文件中找到用户 SYS (具有 SYSDBA and SYSOPER 权限)

通道 ORA_DISK_1: 启动数据文件转换

输入数据文件fno=00001name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\WINORCL\SYSTEM01.DBF

——————————其他输出省略————————————

二:将e:\data目录下的所有文件和控制文件的跟踪脚本复制到linux服务器上,可以使用winscp和ftp等工具,这里直接采用samba共享SQL>select p.spid from v$session s ,v$process p

2  wherep.addr=s.paddr

3  ands.username='SYS'and s.program like '%rman%';

SPID

------------

476

3488

4056

三.在linux服务器上准备相应的目录,并将上传的文件移动到相关的目录,修改控制文件脚本和初始化参数文件[root@rhel6 ~]# mount -t cifs -ousername=yang//192.168.50.195/data  /mnt

Password:

[root@rhel6 ~]# ls /mnt

DATA_D-WINORCL_I-1904915064_TS-EXAMPLE_FNO-5_03MHMQUN  DATA_D-WINORCL_I-1904915064_TS-UNDOTBS1_FNO-2_04MHMQUU     INIT_00MHMQTE_1_0.ORA

DATA_D-WINORCL_I-1904915064_TS-SYSAUX_FNO-3_02MHMQU8   DATA_D-WINORCL_I-1904915064_TS-USERS_FNO-4_06MHMQV3        winorcl_ora_4056.trc

DATA_D-WINORCL_I-1904915064_TS-SYSTEM_FNO-1_01MHMQTF   DATA_D-WINORCL_I-1904915064_TS-WIN_MIGRATE_FNO-6_05MHMQV2

[oracle@rhel6 ~]$ mkdir -p /u01/app/admin/winorcl/{adump,bdump,cdump,udump}

[oracle@rhel6 ~]$ mkdir -p /u01/app/oradata/winorcl

[oracle@rhel6 ~]$ mkdir -p /u01/app/flash_recovery_area/WINORCL

[oracle@rhel6 ~]$ cp /mnt/DATA_D-WINORCL_I-1904915064_TS-* /u01/app/oradata/winorcl/

[oracle@rhel6 ~]$ cp /mnt/INIT_00MHMQTE_1_0.ORA $ORACLE_HOME/dbs/initwinorcl.ora

[oracle@rhel6 ~]$ cp /mnt/winorcl_ora_4056.trc  ~/winorcl.sql

[oracle@rhel6 ~]$ cd /u01/app/oradata/winorcl

[oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-EXAMPLE_FNO-5_03MHMQUN example01.dbf

[oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-SYSAUX_FNO-3_02MHMQU8  sysaux01.dbf

[oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-SYSTEM_FNO-1_01MHMQTF  system01.dbf

[oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-UNDOTBS1_FNO-2_04MHMQUU undotbs1.dbf

[oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-USERS_FNO-4_06MHMQV3    users01.dbf

[oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-WIN_MIGRATE_FNO-6_05MHMQV2  win_migrate01.dbf

[oracle@rhel6 ~]$ cat winorcl.sql

CREATE CONTROLFILE REUSE SET DATABASE "winorcl" RESETLOGS  ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/app/oradata/winorcl/redo01.dbf'  SIZE 50M,

GROUP 2 '/u01/app/oradata/winorcl/redo02.dbf'  SIZE 50M,

GROUP 3 '/u01/app/oradata/winorcl/redo03.dbf'  SIZE 50M

DATAFILE

'/u01/app/oradata/winorcl/system01.dbf',

'/u01/app/oradata/winorcl/undotbs1.dbf',

'/u01/app/oradata/winorcl/sysaux01.dbf',

'/u01/app/oradata/winorcl/users01.dbf',

'/u01/app/oradata/winorcl/example01.dbf',

'/u01/app/oradata/winorcl/win_migrate01.dbf'

CHARACTER SET ZHS16GBK

;

[oracle@rhel6 dbs]$ grep -v '^$' initwinorcl.ora

# Please change the values of the following parameters:

control_files="/u01/app/oradata/winorcl/control01.dbf","/u01/app/oradata/winorcl/control02.dbf"

db_recovery_file_dest="/u01/app/flash_recovery_area"

db_recovery_file_dest_size=21474836480

audit_file_dest="/u01/app/admin/winorcl/adump"

background_dump_dest="/u01/app/admin/winorcl/bdump"

user_dump_dest="/u01/app/admin/winorcl/udump"

core_dump_dest="/u01/app/admin/winorcl/cdump"

db_name="winorcl"

# Please review the values of the following parameters:

__shared_pool_size=167772160

__large_pool_size=4194304

__java_pool_size=16777216

__streams_pool_size=0

__db_cache_size=415236096

remote_login_passwordfile="EXCLUSIVE"

db_domain="766.com"

dispatchers="(PROTOCOL=TCP) (SERVICE=winorclXDB)"

# The values of the following parameters are from source database:

processes=150

nls_language="SIMPLIFIED CHINESE"

nls_territory="CHINA"

sga_target=612368384

db_block_size=8192

compatible="10.2.0.1.0"

log_archive_format="ARC%S_%R.%T"

db_file_multiblock_read_count=16

undo_management="AUTO"

undo_tablespace="UNDOTBS1"

job_queue_processes=10

open_cursors=300

pga_aggregate_target=203423744

四:开始迁移[oracle@rhel6 ~]$ exportORACLE_SID=winorcl

[oracle@rhel6 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 17 20:25:10 2011

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

SQL>conn /as sysdba

Connected to an idle instance.

SQL>create spfile from pfile;

File created.

SQL>startup nomount

ORACLE instance started.

Total System Global Area  612368384 bytes

Fixed Size                  2022696 bytes

Variable Size             188744408 bytes

Database Buffers          415236096 bytes

Redo Buffers                6365184 bytes

SQL>@/home/oracle/winorcl.sql;

Control file created.

SQL>alter database open resetlogs;

Database altered.

SQL>select dbid,name from v$database;

DBID NAME

---------- ---------------------------

1904915064 WINORCL

SQL>select * from t_migrate;

A

----------

1

SQL>select tablespace_name from dba_tablespaces;

TABLESPACE_NAME

--------------------------------------------------------------------------------

SYSTEM

UNDOTBS1

SYSAUX

TEMP

USERS

EXAMPLE

WIN_MIGRATE

7 rows selected.

SQL>alter tablespace temp add tempfile '/u01/app/oradata/winorcl/temp01.dbf' size 50M;

Tablespace altered.

五:收尾工作SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL>startup upgrade

ORACLE instance started.

Total System Global Area  268435456 bytes

Fixed Size                  2020056 bytes

Variable Size              83889448 bytes

Database Buffers          176160768 bytes

Redo Buffers                6365184 bytes

Database mounted.

Database opened.

SQL>@?/rdbms/admin/utlirp.sql;

SQL>spool /tmp/upgrade.log

SQL>@?/rdbms/admin/utlrp.sql;

SQL>startup force

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐