ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20130415]数据泵与db link.txt

[20130415]数据泵与db link.txt

原创 Linux操作系统 作者:lfree 时间:2013-04-15 17:11:00 0 删除 编辑
[20130415]数据泵与db link.txt

数据泵是10g以后采用的新特性,按照一些介绍速度比exp/imp快。以前我总是成对的使用它,也就是先expdp导出数据,然后再传输到新
的服务器,然后在impdp导入数据,这样的过程明显不是很快,特别是导出文件很大的情况下,速度并没有感觉快到哪里,如果数据泵加
上db link,这样仅仅使用impdp导入就可以,省去了前面的步骤。

自己做一个测试:

测试数据从10g服务器到11g的测试机的导入情况:

1.测试环境与配置如下:

--测试机器A(11g),IP=testa:
SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

CREATE PUBLIC DATABASE LINK "TESTB.COM" CONNECT TO scott IDENTIFIED BY xxxx  USING 'testb:1521/orcl';

SQL> select * from dual@testb.com;
D
-
X

--测试通过,能通过db link连接。

--测试机器B(10g),IP=testb:
SQL> select * from v$version  where rownum<=1;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

--以scott用户建立一张表:
create table t1 as select rownum id ,'test' name from dual connect by level<=1000;
create unique index pk_t1 on t1(id);
alter table t1 add constraint pk_t1 primary key (id);

create or replace trigger tr_t
before  insert on t1 
referencing new as new old as old
for each row
declare
begin
  null;
end ;
/


2.首先使用数据泵的命令方式:

--testa上执行:
var n number;
exec :n := dbms_datapump.open('IMPORT','TABLE','TESTB.COM');
exec dbms_datapump.metadata_filter(:n,'SCHEMA_LIST','''SCOTT''');

exec dbms_datapump.metadata_filter(:n,'NAME_LIST','''T1''');
exec dbms_datapump.start_job(:n);
commit ;

--引号加的真麻烦,oracle真变态!
--等待一下,看看数据是否过来。可以检查发现表T1的数据,索引以及触发器的相关内容全部过来了。
--另外我的测试如果在testa上T1表存在,是无法导入的。

3.使用命令行impdp(在testa上执行):
--drop table t1 purge ;

$ impdp scott/xxxx DIRECTORY=DATA_PUMP_DIR LOGFILE=t1.log NETWORK_LINK=testb.com TABLES=t1
Import: Release 11.2.0.3.0 - Production on Mon Apr 15 16:51:10 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** DIRECTORY=DATA_PUMP_DIR LOGFILE=t1.log NETWORK_LINK=testb.com TABLES=t1 */
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 128 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . imported "SCOTT"."T1"                                  1000 rows
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/TRIGGER
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 16:51:17

4.这种方式仅仅需要impdp就可以,唯独要注意目的表是否存在,以及方向不要搞错。

5.另外要注意db link,如果不在需要最好删除。

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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969487