频道栏目
首页 > 资讯 > Oracle > 正文

跨平台迁移oracle数据库指南

11-07-18        来源:[db:作者]  
收藏   我要投稿

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

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

1. SQL> select * from v$transportable_platform; 
2.   
3. PLATF PLATFORM_NAME                            ENDIAN_FORMAT 
4. ----- ---------------------------------------- -------------- 
5.     1 Solaris[tm] OE (32-bit)                  Big 
6.     2 Solaris[tm] OE (64-bit)                  Big 
7.     7 Microsoft Windows IA (32-bit)            Little 
8.    10 Linux IA (32-bit)                        Little 
9.     6 AIX-Based Systems (64-bit)               Big 
10.     3 HP-UX (64-bit)                           Big 
11.     5 HP Tru64 UNIX                            Little 
12.     4 HP-UX IA (64-bit)                        Big 
13.    11 Linux IA (64-bit)                        Little 
14.    15 HP Open VMS                              Little 
15.     8 Microsoft Windows IA (64-bit)            Little 
16.     9 IBM zSeries Based Linux                  Big 
17.    13 Linux 64-bit for AMD                     Little 
18.    16 Apple Mac OS                             Big 
19.    12 Microsoft Windows 64-bit for AMD         Little 
20.    17 Solaris Operating System (x86)           Little 
21.    18 IBM Power Based Linux                    Big  
22. 17 rows selected

1.1 新建一个自定义的表空间,并在表空间上建表,插数据
1. SQL> create tablespace win_migrate 
2.   2  datafile 'E:\oracle\product\10.2.0\oradata\winorcl\win_migrate01.dbf' 
3.   3  size 10M; 
4. 表空间已创建。 
5. 
6. SQL> create table t_migrate (a number) tablespace win_migrate; 
7. 表已创建。 
8. 
9. SQL> insert into t_migrate values (1); 
10. 已创建 1 行。 
11. 
12. SQL> commit; 
13. 提交完成
1.2 在源服务器上将数据库变成自读模式并使用rman转换副本
1. SQL> shutdown immediate 
2. 数据库已经关闭。 
3. 已经卸载数据库。 
4. ORACLE 例程已经关闭。 
5. SQL> startup mount 
6. ORACLE 例程已经启动。 
7. 
8. Total System Global Area  612368384 bytes 
9. Fixed Size                  1292036 bytes 
10. Variable Size             188745980 bytes 
11. Database Buffers          415236096 bytes 
12. Redo Buffers                7094272 bytes 
13. 数据库装载完毕。 
14. 
15. SQL> alter database open read only; 
16. 数据库已更改。 
17.   
18.  C:\Users\Naruto>rman target / 
19. 恢复管理器: Release 10.2.0.3.0 - Production on 星期日 7月 17 19:57:49 2011 
20. Copyright (c) 1982, 2005, Oracle.  All rights reserved. 
21. 连接到目标数据库: WINORCL (DBID=1904834971) 
22. 
23. RMAN> convert database to platform 'Linux 64-bit for AMD' format 'e:\data\%U'; 
24. 
25. 启动 convert 于 17-7月 -11 
26. 使用目标数据库控制文件替代恢复目录 
27. 分配的通道: ORA_DISK_1 
28. 通道 ORA_DISK_1: sid=147 devtype=DISK
29. 
30. 在数据库中找到外部表 SH.SALES_TRANSACTIONS_EXT 
31. 
32. 在数据库中找到目录 SYS.SUBDIR 
33. 在数据库中找到目录 SYS.XMLDIR 
34. 在数据库中找到目录 SYS.MEDIA_DIR 
35. 在数据库中找到目录 SYS.LOG_FILE_DIR 
36. 在数据库中找到目录 SYS.DATA_FILE_DIR 
37. 在数据库中找到目录 SYS.WORK_DIR 
38. 在数据库中找到目录 SYS.ADMIN_DIR 
39. 在数据库中找到目录 SYS.DATA_PUMP_DIR 
40. 
41. 在数据库中找到 BFILE PM.PRINT_MEDIA 
42. 
43. 在口令文件中找到用户 SYS (具有 SYSDBA and SYSOPER 权限) 
44. 通道 ORA_DISK_1: 启动数据文件转换 
45. 输入数据文件 fno=00001 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\WINORCL\SYSTEM01.DBF 
——————————其他输出省略————————————
二:将e:\data目录下的所有文件和控制文件的跟踪脚本复制到linux服务器上,可以使用winscp和ftp等工具,这里直接采用samba共享
1. SQL> select p.spid from v$session s ,v$process p 
2.   2  where p.addr=s.paddr 
3.   3  and s.username='SYS' and s.program like '%rman%'; 
4.   
5. SPID 
6. ------------ 
7. 476 
8. 3488 
4056


三.在linux服务器上准备相应的目录,并将上传的文件移动到相关的目录,修改控制文件脚本和初始化参数文件
1. [root@rhel6 ~]# mount -t cifs -o username=yang //192.168.50.195/data  /mnt 
2. Password:  
3. [root@rhel6 ~]# ls /mnt 
4. 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 
5. DATA_D-WINORCL_I-1904915064_TS-SYSAUX_FNO-3_02MHMQU8   DATA_D-WINORCL_I-1904915064_TS-USERS_FNO-4_06MHMQV3        winorcl_ora_4056.trc 
6. DATA_D-WINORCL_I-1904915064_TS-SYSTEM_FNO-1_01MHMQTF   DATA_D-WINORCL_I-1904915064_TS-WIN_MIGRATE_FNO-6_05MHMQV2 
7. 
8. [oracle@rhel6 ~]$ mkdir -p /u01/app/admin/winorcl/{adump,bdump,cdump,udump} 
9. [oracle@rhel6 ~]$ mkdir -p /u01/app/oradata/winorcl 
10. [oracle@rhel6 ~]$ mkdir -p /u01/app/flash_recovery_area/WINORCL 
11. 
12. [oracle@rhel6 ~]$ cp /mnt/DATA_D-WINORCL_I-1904915064_TS-* /u01/app/oradata/winorcl/ 
13. [oracle@rhel6 ~]$ cp /mnt/INIT_00MHMQTE_1_0.ORA $ORACLE_HOME/dbs/initwinorcl.ora 
14. [oracle@rhel6 ~]$ cp /mnt/winorcl_ora_4056.trc  ~/winorcl.sql 
15. 
16. [oracle@rhel6 ~]$ cd /u01/app/oradata/winorcl 
17. [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-EXAMPLE_FNO-5_03MHMQUN example01.dbf 
18. [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-SYSAUX_FNO-3_02MHMQU8  sysaux01.dbf 
19. [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-SYSTEM_FNO-1_01MHMQTF  system01.dbf 
20. [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-UNDOTBS1_FNO-2_04MHMQUU undotbs1.dbf 
21. [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-USERS_FNO-4_06MHMQV3    users01.dbf 
22. [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-WIN_MIGRATE_FNO-6_05MHMQV2  win_migrate01.dbf 
23. 
24. [oracle@rhel6 ~]$ cat winorcl.sql  
25. CREATE CONTROLFILE REUSE SET DATABASE "winorcl" RESETLOGS  ARCHIVELOG 
26.     MAXLOGFILES 16 
27.     MAXLOGMEMBERS 3 
28.     MAXDATAFILES 100 
29.     MAXINSTANCES 8 
30.     MAXLOGHISTORY 292 
31. LOGFILE 
32.   GROUP 1 '/u01/app/oradata/winorcl/redo01.dbf'  SIZE 50M, 
33.   GROUP 2 '/u01/app/oradata/winorcl/redo02.dbf'  SIZE 50M, 
34.   GROUP 3 '/u01/app/oradata/winorcl/redo03.dbf'  SIZE 50M 
35. DATAFILE 
36.   '/u01/app/oradata/winorcl/system01.dbf', 
37.   '/u01/app/oradata/winorcl/undotbs1.dbf', 
38.   '/u01/app/oradata/winorcl/sysaux01.dbf', 
39.   '/u01/app/oradata/winorcl/users01.dbf', 
40.   '/u01/app/oradata/winorcl/example01.dbf', 
41.   '/u01/app/oradata/winorcl/win_migrate01.dbf' 
42. CHARACTER SET ZHS16GBK 
43. ; 
44. 
45. [oracle@rhel6 dbs]$ grep -v '^$' initwinorcl.ora  
46. # Please change the values of the following parameters: 
47.   control_files            = "/u01/app/oradata/winorcl/control01.dbf","/u01/app/oradata/winorcl/control02.dbf" 
48.   db_recovery_file_dest    = "/u01/app/flash_recovery_area"
49.   db_recovery_file_dest_size= 21474836480
50.   audit_file_dest          = "/u01/app/admin/winorcl/adump"
51.   background_dump_dest     = "/u01/app/admin/winorcl/bdump"
52.   user_dump_dest           = "/u01/app/admin/winorcl/udump"
53.   core_dump_dest           = "/u01/app/admin/winorcl/cdump"
54.   db_name                  = "winorcl"
55. # Please review the values of the following parameters: 
56.   __shared_pool_size       = 167772160
57.   __large_pool_size        = 4194304
58.   __java_pool_size         = 16777216
59.   __streams_pool_size      = 0
60.   __db_cache_size          = 415236096
61.   remote_login_passwordfile= "EXCLUSIVE"
62.   db_domain                = "766.com"
63.   dispatchers              = "(PROTOCOL=TCP) (SERVICE=winorclXDB)"
64. # The values of the following parameters are from source database: 
65.   processes                = 150
66.   nls_language             = "SIMPLIFIED CHINESE"
67.   nls_territory            = "CHINA"
68.   sga_target               = 612368384
69.   db_block_size            = 8192
70.   compatible               = "10.2.0.1.0"
71.   log_archive_format       = "ARC%S_%R.%T"
72.   db_file_multiblock_read_count= 16
73.   undo_management          = "AUTO"
74.   undo_tablespace          = "UNDOTBS1"
75.   job_queue_processes      = 10
76.   open_cursors             = 300
77.   pga_aggregate_target     = 203423744
四:开始迁移
1. [oracle@rhel6 ~]$ export ORACLE_SID=winorcl
2. [oracle@rhel6 ~]$ sqlplus /nolog 
3. SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 17 20:25:10 2011 
4. Copyright (c) 1982, 2005, Oracle.  All rights reserved. 
5. 
6. SQL> conn /as sysdba 
7. Connected to an idle instance. 
8. SQL> create spfile from pfile; 
9. File created. 
10. 
11. SQL> startup nomount 
12. ORACLE instance started. 
13. Total System Global Area  612368384 bytes 
14. Fixed Size                  2022696 bytes 
15. Variable Size             188744408 bytes 
16. Database Buffers          415236096 bytes 
17. Redo Buffers                6365184 bytes 
18. 
19. SQL> @/home/oracle/winorcl.sql; 
20. Control file created. 
21. 
22. 
23. SQL> alter database open resetlogs; 
24. Database altered. 
25. 
26. SQL> select dbid,name from v$database; 
27. 
28.       DBID NAME 
29. ---------- --------------------------- 
30. 1904915064 WINORCL 
31. 
32. SQL> select * from t_migrate; 
33. 
34.          A 
35. ---------- 
36.          1 
37. 
38. SQL> select tablespace_name from dba_tablespaces; 
39. 
40. TABLESPACE_NAME 
41. -------------------------------------------------------------------------------- 
42. SYSTEM 
43. UNDOTBS1 
44. SYSAUX 
45. TEMP 
46. USERS 
47. EXAMPLE 
48. WIN_MIGRATE 
49. 
50. 7 rows selected. 
51. 
52. SQL> alter tablespace temp add tempfile '/u01/app/oradata/winorcl/temp01.dbf' size 50M; 
53. Tablespace altered.
五:收尾工作
1. SQL> shutdown immediate 
2. Database closed. 
3. Database dismounted. 
4. ORACLE instance shut down. 
5. SQL> startup upgrade 
6. ORACLE instance started. 
7. 
8. Total System Global Area  268435456 bytes 
9. Fixed Size                  2020056 bytes 
10. Variable Size              83889448 bytes 
11. Database Buffers          176160768 bytes 
12. Redo Buffers                6365184 bytes 
13. Database mounted. 
14. Database opened. 
15. 
16. SQL> @?/rdbms/admin/utlirp.sql; 
17. SQL> spool /tmp/upgrade.log 
18. SQL> @?/rdbms/admin/utlrp.sql; 
19. SQL> startup force
 
本文出自 “月牙天冲” 博客
相关TAG标签
上一篇:台积电:绝大多数7nm客户都会转向6nm_IT新闻_博客园
下一篇:最后一页
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站