oracle数据库数据迁移之传输表空间(TTS)

前言:数据迁移是DBA日常工作之一,以下文章的实验细节比较全。如果原文作者觉得侵犯权益,请留言。

传输表空间的实质是,抽取表空间元数据传输 + 表空间下数据文件传输

PS:transport_datafiles这个参数不指定,则让oracle数据库自己选择数据文件。

  1. impdp directory=backup dumpfile=test01.dmp transport_datafiles=/u01/app/oracle/oradata/normal/test01.dbf remap_schema=source_test:target_test logfile  =test.log  

原文地址:http://blog.csdn.net/ch7543658/article/details/39271135

环境情况

Source 端:
操作系统: OracleLinux 6.2 64位
endianness格式: little
数据库版本:11.2.0.3
 
Target 端:
操作系统:OracleLinux 6.2 64位
endianness 格式: little

数据库版本:11.2.0.3

1、查看操作系统endianness格式

  1. col platform_name for a40  
  2.   
  3. SELECT *   
  4. FROM V$TRANSPORTABLE_PLATFORM   
  5. ORDER BY PLATFORM_ID;  
  6.   
  7. PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT  
  8. ----------- ---------------------------------------- --------------  
  9.           1 Solaris[tm] OE (32-bit)                  Big  
  10.           2 Solaris[tm] OE (64-bit)                  Big  
  11.           3 HP-UX (64-bit)                           Big  
  12.           4 HP-UX IA (64-bit)                        Big  
  13.           5 HP Tru64 UNIX                            Little  
  14.           6 AIX-Based Systems (64-bit)               Big  
  15.           7 Microsoft Windows IA (32-bit)            Little  
  16.           8 Microsoft Windows IA (64-bit)            Little  
  17.           9 IBM zSeries Based Linux                  Big  
  18.          10 Linux IA (32-bit)                        Little  
  19.          11 Linux IA (64-bit)                        Little  
  20.          12 Microsoft Windows x86 64-bit             Little  
  21.          13 Linux x86 64-bit                         Little  
  22.          15 HP Open VMS                              Little  
  23.          16 Apple Mac OS                             Big  
  24.          17 Solaris Operating System (x86)           Little  
  25.          18 IBM Power Based Linux                    Big  
  26.          19 HP IA Open VMS                           Little  
  27.          20 Solaris Operating System (x86-64)        Little  
  28.          21 Apple Mac OS (x86-64)                    Little  
  29.   
  30. 20 rows selected.  
  31.   
  32. --分别查看 source 端 和target端操作系统endianness格式  
  33. --source  
  34. SELECT d.PLATFORM_NAME,  
  35.     ENDIAN_FORMAT  
  36. FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d  
  37. WHERE tp.PLATFORM_NAME =d.PLATFORM_NAME;  
  38.   
  39. PLATFORM_NAME                            ENDIAN_FORMAT  
  40. ---------------------------------------- --------------  
  41. Linux x86 64-bit                         Little  
  42.   
  43. --target  
  44. SELECT d.PLATFORM_NAME,  
  45.     ENDIAN_FORMAT  
  46. FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d  
  47. WHERE tp.PLATFORM_NAME =d.PLATFORM_NAME;  
  48.   
  49. PLATFORM_NAME                            ENDIAN_FORMAT  
  50. ---------------------------------------- --------------  
  51. Linux x86 64-bit                         Little  
2、在source端创建测试表空间
  1. select tablespace_name,  
  2.     status   
  3. from dba_tablespaces;  
  4.   
  5. TABLESPACE_NAME                STATUS  
  6. ------------------------------ ---------  
  7. SYSTEM                         ONLINE  
  8. UNDOTBS1                       ONLINE  
  9. SYSAUX                         ONLINE  
  10. TEMPTS1                        ONLINE  
  11. USERS                          ONLINE  
  12. OUTLN                          ONLINE  
  13.   
  14. rows selected.  
  15.   
  16. select file_name from dba_data_files;  
  17.   
  18. FILE_NAME  
  19. ------------------------------------------------  
  20. /u01/app/oracle/oradata/normal/system01.dbf  
  21. /u01/app/oracle/oradata/normal/undotbs01.dbf  
  22. /u01/app/oracle/oradata/normal/sysaux01.dbf  
  23. /u01/app/oracle/oradata/normal/users01.dbf  
  24. /u01/app/oracle/oradata/normal/undotbs02.dbf  
  25. /u01/app/oracle/oradata/normal/system02.dbf  
  26. /u01/app/oracle/oradata/normal/outln01.dbf  
  27.   
  28. rows selected.  
  29.   
  30. --创建表空间创建表空间 tset  
  31. create tablespace tset datafile '/u01/app/oracle/oradata/normal/test01.dbf' size 50M;  
  32. Tablespace created.  
  33.   
  34. --创建用户source_test,并指定表空间  
  35.   
  36. --在source端  
  37. create user source_test   
  38. identified by oracle   
  39. default tablespace tset   
  40. temporary tablespace TEMPTS1;  
  41.   
  42. User created.  
  43.   
  44. grant connect,resource to source_test;  
  45.   
  46. Grant succeeded.  
  47.   
  48. --在target端(暂时只先创建用户)  
  49. create user target_test   
  50. identified by oracle  
  51. temporary tablespace TEMPTS1;  
  52.   
  53. User created.  
  54.   
  55. grant connect,resource to target_test;  
  56.   
  57. Grant succeeded.  
  58.   
  59. --创建测试表  
  60. SQL> conn source_test/oracle  
  61. Connected.  
  62. SQL> create table t1(id number, name varchar2(30));  
  63.   
  64. Table created.  
  65.   
  66. SQL> insert into t1 values(1, 'AAAAA');  
  67.   
  68. 1 row created.  
  69.   
  70. SQL> insert into t1 values(2, 'BBBBB');  
  71.   
  72. 1 row created.  
  73.   
  74. SQL> commit;  
  75.   
  76. Commit complete.  
  77.   
  78. select * from t1;  
  79.   
  80.         ID NAME  
  81. ---------- ------------------------------  
  82.          1 AAAAA  
  83.          2 BBBBB  
3、在source端和target端创建 backup 的目录
  1. [oracle@normal ~]$ mkdir -p /u01/backup  
  2. [oracle@normal ~]$ ls -l /u01  
  3. total 24  
  4. drwxr-xr-x 3 oracle oinstall  4096 Jul 28 12:31 app  
  5. drwxr-xr-x 2 oracle oinstall  4096 Sep 14 16:21 backup  
  6.   
  7. SQL> show user  
  8. USER is "SYS"  
  9. SQL> create directory backup as '/u01/backup';  
  10.   
  11. Directory created.  
  12.   
  13. SQL> col owner format a5  
  14. SQL> col directory_name format a25  
  15. SQL> col DIRECTORY_PATH format a50     
  16.   
  17. SQL> select * from dba_directories;     
  18. OWNER DIRECTORY_NAME            DIRECTORY_PATH  
  19. ----- ------------------------- --------------------------------------------------  
  20. SYS   BACKUP                    /u01/backup  
  21. SYS   OUTLN_DIR                 /home/oracle  
  22. SYS   DATA_PUMP_DIR             /u01/app/oracle/product/11.2.0/db_1/rdbms/log/  
  23. SYS   ORACLE_OCM_CONFIG_DIR     /u01/app/oracle/product/11.2.0/db_1/ccr/state  
  24.   
  25. SQL> GRANT read, write ON DIRECTORY backup TO source_test;  
  26.   
  27. Grant succeeded.  
  28.   
  29. --在target端  
  30. [oracle@test ~]$ mkdir -p /u01/backup  
  31. [oracle@test ~]$ ls -l /u01  
  32. total 24  
  33. drwxr-xr-x 3 oracle oinstall  4096 Aug 28 09:09 app  
  34. drwxr-xr-x 2 oracle oinstall  4096 Sep 14 16:40 backup  
  35.   
  36. SQL> show user  
  37. USER is "SYS"  
  38. SQL> create directory backup as '/u01/backup';  
  39.   
  40. Directory created.  
  41.   
  42. SQL> col owner format a5  
  43. SQL> col directory_name format a25  
  44. SQL> col DIRECTORY_PATH format a50  
  45. SQL> select * from dba_directories;  
  46.   
  47. OWNER DIRECTORY_NAME            DIRECTORY_PATH  
  48. ----- ------------------------- --------------------------------------------------  
  49. SYS   BACKUP                    /u01/backup  
  50. SYS   OUTLN_DIR                 /home/oracle  
  51. SYS   DATA_PUMP_DIR             /u01/app/oracle/product/11.2.0/db_1/rdbms/log/  
  52. SYS   ORACLE_OCM_CONFIG_DIR     /u01/app/oracle/product/11.2.0/db_1/ccr/state  
  53.   
  54. SQL> GRANT read, write ON DIRECTORY backup TO target_test;  
  55.   
  56. Grant succeeded.  
4、检查表空间自包含(就是改表空间里的数据没有和其他表空间数据有关联,如果有关联会报错)

  1. SQL> execute dbms_tts.transport_set_check('TSET'TRUE);  
  2.   
  3. PL/SQL procedure successfully completed.  
  4.   
  5. --查看自包含验证结果:  
  6. SQL> select * from transport_set_violations;  
  7.   
  8. no rows selected  
  9. --没有记录说明没有错  
5、将表空间TSET设置成read­-only
  1. SQL> alter tablespace TSET read only;  
  2.   
  3. Tablespace altered.  
  4.   
  5. select tablespace_name,  
  6.     status   
  7. from dba_tablespaces;  
  8.   
  9. TABLESPACE_NAME                STATUS  
  10. ------------------------------ ---------  
  11. SYSTEM                         ONLINE  
  12. UNDOTBS1                       ONLINE  
  13. SYSAUX                         ONLINE  
  14. TEMPTS1                        ONLINE  
  15. USERS                          ONLINE  
  16. OUTLN                          ONLINE  
  17. TSET                           READ ONLY  
  18.   
  19. rows selected.      
6、生成:Transportable Tablespace Set

Transportable Tablespace Set有两部分:

1.expdp 导出的表空间的metadata

2.还有就是表空间对应的数据文件

  1. --expdp 导出的表空间的metadata    
  2. [oracle@normal normal]$ pwd  
  3. /u01/app/oracle/oradata/normal  
  4. [oracle@normal normal]$ ll  
  5. total 2294664  
  6. -rw-r----- 1 oracle oinstall   9781248 Sep 14 16:46 control01.ctl  
  7. drwx------ 2 oracle oinstall     16384 Aug 22 12:44 lost+found  
  8. -rw-r----- 1 oracle oinstall  20979712 Sep 14 15:52 outln01.dbf  
  9. -rw-r----- 1 oracle oinstall  52429312 Sep 14 16:45 redo01a.log  
  10. -rw-r----- 1 oracle oinstall  52429312 Sep 14 16:45 redo01b.log  
  11. -rw-r----- 1 oracle oinstall  52429312 Sep 14 15:52 redo02a.log  
  12. -rw-r----- 1 oracle oinstall  52429312 Sep 14 15:52 redo02b.log  
  13. -rw-r----- 1 oracle oinstall  52429312 Sep 14 15:52 redo03a.log  
  14. -rw-r----- 1 oracle oinstall  52429312 Sep 14 15:52 redo03b.log  
  15. -rw-r--r-- 1 oracle oinstall     22633 Aug 22 17:00 su.lst  
  16. -rw-r----- 1 oracle oinstall 340795392 Sep 14 16:40 sysaux01.dbf  
  17. -rw-r----- 1 oracle oinstall 340795392 Sep 14 16:43 system01.dbf  
  18. -rw-r----- 1 oracle oinstall 314580992 Sep 14 16:43 system02.dbf  
  19. -rw-r----- 1 oracle oinstall  20979712 Sep 14 15:53 temp01.dbf  
  20. -rw-r----- 1 oracle oinstall  52436992 Sep 14 15:53 temp02.dbf  
  21. -rw-r----- 1 oracle oinstall  52436992 Sep 14 16:31 test01.dbf  
  22. -rw-r----- 1 oracle oinstall 209723392 Sep 14 16:43 undotbs01.dbf  
  23. -rw-r----- 1 oracle oinstall 209723392 Sep 14 16:40 undotbs02.dbf  
  24. -rw-r----- 1 oracle oinstall 524296192 Sep 14 15:52 users01.dbf  
  25.   
  26. [oracle@normal normal]$ expdp dumpfile=test01.dmp directory=backup transport_tablespaces=TSET transport_full_check=y logfile=TSET.log   
  27.   
  28. Export: Release 11.2.0.3.0 - Production on Sun Sep 14 16:54:30 2014  
  29.   
  30. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.  
  31.   
  32. Username: / as sysdba  
  33.   
  34. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production  
  35. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  36. Starting "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  /********/ AS SYSDBA dumpfile=test01.dmp directory=backup transport_tablespaces=TSET transport_full_check=y logfile=TSET.log   
  37. Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK  
  38. Processing object type TRANSPORTABLE_EXPORT/TABLE  
  39. Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK  
  40. Master table "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded  
  41. ******************************************************************************  
  42. Dump file set for SYS.SYS_EXPORT_TRANSPORTABLE_01 is:  
  43.   /u01/backup/test01.dmp  
  44. ******************************************************************************  
  45. Datafiles required for transportable tablespace TSET:  
  46.   /u01/app/oracle/oradata/normal/test01.dbf  
  47. Job "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 16:55:13  
  48.   
  49. [oracle@normal normal]$ ls -l /u01/backup/    
  50. total 80  
  51. -rw-r----- 1 oracle oinstall 77824 Sep 14 16:55 test01.dmp  
  52. -rw-r--r-- 1 oracle oinstall  1160 Sep 14 16:55 TSET.log  
7、将Transportable Tablespace set 传送到Target端

1)将表空间test 对应的数据文件copy到Target 对应的ORADATA目录下。

2)将expdp 导出的表空间metadta 数据copy 到Target 端的backup 目录下

  1. --将表空间test 对应的数据文件copy到Target 对应的ORADATA目录下。  
  2. [oracle@normal normal]$ scp /u01/backup/test01.dmp 192.168.137.12:/u01/backup  
  3. [email protected] s password:   
  4. test01.dmp                                  100%   76KB  76.0KB/s   00:00   
  5.            
  6. --将expdp 导出的表空间metadta 数据copy 到Target 端的backup 目录下     
  7. [oracle@normal normal]$ scp test01.dbf 192.168.137.12:/u01/app/oracle/oradata/normal/test01.dbf  
  8. [email protected] s password:   
  9. test01.dbf                                  100%   50MB  16.7MB/s   00:03    
  10.   
  11. --在target端查看文件是否已经传输  
  12. [oracle@test ~]$ ll /u01/backup/               
  13. total 76  
  14. -rw-r----- 1 oracle oinstall 77824 Sep 14 17:03 test01.dmp  
  15.   
  16. [oracle@test ~]$ ll $ORACLE_BASE/oradata/normal/test01.dbf  
  17. -rw-r----- 1 oracle oinstall 52436992 Sep 14 17:04 /u01/app/oracle/oradata/normal/test01.dbf  
8、在Target 系统上Import 表空间的metadata(使用target_test用户,需要用到remap_schema)
  1. [oracle@test ~]$ impdp directory=backup dumpfile=test01.dmp transport_datafiles=/u01/app/oracle/oradata/normal/test01.dbf remap_schema=source_test:target_test logfile  
  2. =test.log  
  3.   
  4. Import: Release 11.2.0.3.0 - Production on Sun Sep 14 17:09:25 2014  
  5.   
  6. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.  
  7.   
  8. Username: / as sysdba  
  9.   
  10. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production  
  11. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  12. Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded  
  13. Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01":  /********/ AS SYSDBA directory=backup dumpfile=test01.dmp transport_datafiles=/u01/app/oracle/oradata/normal/test01.dbf remap_schema=source_test:target_test logfile=test.log   
  14. Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK  
  15. Processing object type TRANSPORTABLE_EXPORT/TABLE  
  16. Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK  
  17. Job "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 17:09:55  
9、查看并修改表空间状态
  1. select tablespace_name,  
  2.     status   
  3. from dba_tablespaces;  
  4.   
  5. TABLESPACE_NAME                STATUS  
  6. ------------------------------ ---------  
  7. SYSTEM                         ONLINE  
  8. UNDOTBS1                       ONLINE  
  9. SYSAUX                         ONLINE  
  10. TEMPTS1                        ONLINE  
  11. USERS                          ONLINE  
  12. OUTLN                          ONLINE  
  13. TSET                           READ ONLY  
  14.   
  15. rows selected.  
  16.   
  17. SQL> alter tablespace TSET read write;  
  18.   
  19. Tablespace altered.  
10、验证
  1. SQL> conn target_test/oracle  
  2. Connected.  
  3.   
  4. SQL> select * from t1;  
  5.   
  6.         ID NAME  
  7. ---------- ------------------------------  
  8.          1 AAAAA  
  9.          2 BBBBB  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章