利用数据泵导出远程数据到本地数据库


远程数据库用户test下面有一张t表

  1. SQL> show user  
  2. USER 为 "TEST"  
  3. SQL> select * from tab;  
  4.   
  5. TNAME                          TABTYPE  CLUSTERID  
  6. ------------------------------ ------- ----------   
  7. T                              TABLE  
  8.   
  9. SQL> ! cat /etc/hosts  
  10. # Do not remove the following line, or various programs  
  11. # that require network functionality will fail.  
  12. 127.0.0.1       linux localhost.localdomain localhost  
  13. ::1             localhost6.localdomain6 localhost6  
  14. 10.10.10.7      linux localhost.localdomain localhost  
本地数据库用户ing下面没有t表
  1. SQL> show user  
  2. USER 为 "ING"  
  3. SQL> select * from tab where tname = 'T';  
  4.   
  5. 未选定行  
  6.   
  7. SQL> ! cat /etc/hosts  
  8. # Do not remove the following line, or various programs  
  9. # that require network functionality will fail.  
  10. 127.0.0.1       linux localhost.localdomain localhost  
  11. ::1             localhost6.localdomain6 localhost6  
  12. 10.10.10.8      linux localhost.localdomain localhost  
  13. 10.10.10.8      linux  
  14. 10.10.10.8      localhost  

现在要做的就是把用户test下面的所有对象导入到用户ing下面。

1.创建一个数据库链接对象,链接到10.10.10.7的数据库服务器。

  1. SQL> conn system/Oracle  
  2. 已连接。  
  3. SQL> show user  
  4. USER 为 "SYSTEM"  
  5. SQL> create database link link7 connect to test identified by test using '10.10.10.7/orcl';  
  6.   
  7. 数据库链接已创建。  
  8.   
  9. SQL> select count(*) from test.t@link7;  
  10.   
  11.   COUNT(*)  
  12. ----------   
  13.      50027  

2.远程数据10.10.10.7的用户test必须具有exp_full_database权限。

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> show user  
  4. USER 为 "SYS"  
  5. SQL> grant exp_full_database to test;  
  6.   
  7. 授权成功。  

3.在10.10.10.8服务器上面执行导出。

  1. [oracle@linux exp]$ expdp system/oracle@orcl network_link=link7 directory=exp schemas=test  
  2.   
  3. Export: Release 10.2.0.4.0 - Production on 星期三, 05 10月, 2011 19:48:57  
  4.   
  5. Copyright (c) 2003, 2007, Oracle.  All rights reserved.  
  6.   
  7. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production  
  8. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  9. 启动 "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/********@orcl network_link=link7 directory=exp schemas=test   
  10. 正在使用 BLOCKS 方法进行估计...  
  11. 处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA  
  12. 使用 BLOCKS 方法的总估计: 6 MB  
  13. 处理对象类型 SCHEMA_EXPORT/USER  
  14. 处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT  
  15. 处理对象类型 SCHEMA_EXPORT/ROLE_GRANT  
  16. 处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE  
  17. 处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA  
  18. 处理对象类型 SCHEMA_EXPORT/TABLE/TABLE  
  19. . . 导出了 "TEST"."T"                                  4.667 MB   50027 行  
  20. 已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_SCHEMA_01"   
  21. ******************************************************************************  
  22. SYSTEM.SYS_EXPORT_SCHEMA_01 的转储文件集为:  
  23.   /u01/exp/expdat.dmp  
  24. 作业 "SYSTEM"."SYS_EXPORT_SCHEMA_01" 已于 19:50:10 成功完成  

4.在10.10.10.8服务器上面执行导入。

  1. [oracle@linux exp]$ impdp system/oracle@orcl directory=exp dumpfile=expdat.dmp remap_schema=test:ing  
  2.   
  3. Import: Release 10.2.0.4.0 - Production on 星期三, 05 10月, 2011 19:51:24  
  4.   
  5. Copyright (c) 2003, 2007, Oracle.  All rights reserved.  
  6.   
  7. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production  
  8. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  9. 已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_FULL_01"   
  10. 启动 "SYSTEM"."SYS_IMPORT_FULL_01":  system/********@orcl directory=exp dumpfile=expdat.dmp remap_schema=test:ing   
  11. 处理对象类型 SCHEMA_EXPORT/USER  
  12. ORA-31684: 对象类型 USER:"ING" 已存在      --这里没有此用户会自动创建。   
  13. 处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT  
  14. 处理对象类型 SCHEMA_EXPORT/ROLE_GRANT  
  15. 处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE  
  16. 处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA  
  17. 处理对象类型 SCHEMA_EXPORT/TABLE/TABLE  
  18. 处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA  
  19. . . 导入了 "ING"."T"                                   4.667 MB   50027 行  
  20. 作业 "SYSTEM"."SYS_IMPORT_FULL_01" 已经完成, 但是有 1 个错误 (于 19:51:28 完成)  

5.检查10.10.10.8上面的用户ing。

  1. SQL> conn ing/ing  
  2. 已连接。  
  3. SQL> show user  
  4. USER 为 "ING"  
  5. SQL> select * from tab where tname = 'T';  
  6.   
  7. TNAME                          TABTYPE  CLUSTERID  
  8. ------------------------------ ------- ----------   
  9. T                              TABLE  
  10.   
  11. SQL> select count(*) from t;  
  12.   
  13.   COUNT(*)  
  14. ----------   
  15.      50027  
注意:导入用户要对表空间使用不限制的权力:alter user ing quota unlimited on users; 这里的system用户当然有这个权力拉。对于小型数据库可以这样做,因为它要依赖网络。对于大型数据库一般是在数据源端导出,然后拷贝到目标端执行导入。

相关内容