ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 跨平台迁移oracle数据库指南

跨平台迁移oracle数据库指南

原创 Linux操作系统 作者:lygle 时间:2013-04-08 14:48:08 0 删除 编辑

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

一:准备windows环境
这里采取32位winxp系统,如果之前安装过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  
  46. ——————————其他输出省略———————————— 

 

二:将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  
  9. 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 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28673746/viewspace-757949/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: RAC原理探究
请登录后发表评论 登录
全部评论

注册时间:2013-02-27

  • 博文量
    129
  • 访问量
    408530