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  

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