跨平臺遷移oracle資料庫指南

lygle發表於2013-04-08

   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_size21474836480 
  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_count16 
  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部落格 ” ,連結:http://blog.itpub.net/28673746/viewspace-757949/,如需轉載,請註明出處,否則將追究法律責任。

相關文章