[20130415]数据泵与db link.txt

[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
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
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,如果不在需要最好删除。

时间: 2024-09-20 20:37:34

[20130415]数据泵与db link.txt的相关文章

[20150907]关于db link.txt

[20150907]关于db link.txt --有时候学习的需要,要测试db link的sql语句,需要使用到db link,而实际的情况仅仅1台机器,1个数据库. --即使你什么都不建立.也可以使用global_name作为db link. SCOTT@test> select global_name c10 from global_name; C10 ---------- TEST.COM --另外说明以下实际上访问的是sys.props$ 表.现在执行计划就可以知道. SCOTT@te

[20140918]数据泵与外部文件.txt

[20140918]数据泵与外部文件.txt --昨天帮别人导入一些数据,看文件名称以为是使用exp/expdp导出的,测试不对!还好压缩包里面有一个文档,才知道使用数据泵的外部文件格式. --自己晚上回去看了一些文档,做了一些测试: SCOTT@test> @ver BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterpr

[20130701]db link与事务.txt

[20130701]db link与事务.txt 昨天帮别人修复数据库,安全起见,我先启动read only模式,叫他们检查一些相关数据是否正常,但是在程序界面上出现:ORA-16000: database open for read-only access. 我跟踪发现执行的实际上通过db_link访问远程数据库的语句,不是dml语句(注:实际上执行dml,发生的事务也在远端,不在本地).按照这个道理如果数据库在只读的情况下,是不能访问远端的数据库的. google 发现如下链接: 我回来后在

[20150707]数据泵造成的数据损失.txt

[20150707]数据泵造成的数据损失.txt --参看链接,重复测试http://yangtingkun.net/?p=652 SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------

[20150729]数据泵造成的数据损失2.txt

[20150729]数据泵造成的数据损失2.txt --前一阵子,重复测试: http://blog.itpub.net/267265/viewspace-1725204/ --参看链接,重复测试http://yangtingkun.net/?p=652 1.建立测试环境: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ ----------

[20140408]db link 口令安全问题.txt

[20140408]db link 口令安全问题.txt 测试在11GR2 ,如果以sys用户登录,查询sys.link$基表,通过简单的函数很容易知道db link的口令. 例子: SYS@test> @ver BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3

数据泵expdp/impdp工具的使用:

数据泵expdp/impdp工具的使用: 建立数据泵目录 使用数据泵需要先建directory create directory dump_scott as'/home/oracle/dump/scott' 查看建立的目录 Select * from dba_directories 赋权 Grant read,write on directory dump_scott toscott   导出案例1,按表导出 expdp scott/tiger directory=dump_scottdumpf

ORACLE 数据泵之NETWORK_LINK

 数据泵之NETWORK_LINK blog结构图:   1  环境介绍   SOURCE DB(虚拟机) TARGET DB(虚拟机) CLIENT(笔记本) EXP/IMP 11.2.0.3.0 11.2.0.1.0 11.2.0.1.0 EXPDP/IMPDP 11.2.0.3.0 11.2.0.1.0 11.2.0.1.0 HOST IP 192.168.59.130 192.168.59.128 192.168.59.1 host 平台 内存 RHEL 6.5 MemTotal:  2

Oracle的DB Link

数据库之间的链接建立在DATABASE LINK上.要创建一个DB LINK,必须先在每个数据库服务器上设置链接字符串. 1. 配置TNS , $ORACLE_HOME/NETWORK/ADMIN/tnsname.ora 10gstandby = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HFCC-KF-3068)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NA