三分薄地,认真耕耘

导航

 

对于oracle常用的导入导出工具:exp\imp,expdp\impdp后者速度快,但是expdp属于服务端工具,而exp属于客户端工具,expdp生成的文件默认是存放在服务端的,而exp生成的文件是可以存放在客户端的

expdp是server端工具,但可以通过NETWORK_LINK参数实现远端导出,但是前提是远端也安装有Oracle数据库,只有CLIENT端是没有办法利用数据泵的。

使用expdpusername/password@connect_string这种格式导出数据,生成的文件存放在服务端,可以通过在expdp中使用network_link完成再远端服务器通过expdp导出数据。对于impdp亦然。

如:expdp system/oracledba directory=my_dir dumpfile=test.dmp logfile=test.log network_link=DB_LINK_TEST schemas=test01,test02 parallel=4

1、使用dblink远程导出导入数据的步骤为:

create database link link_name connect to username identified by password using 'connect_string' ;
//username和 password是 server端的,并且特别注意该处的connect_string 就为tnsnames.ora中的服务名(连接服务端的串),

如:


SQL> create public database link yjtestlink connect to yjtest identified by "yjtest22324" using '//177.100.42.102:30145/orcl';
Database link created.

创建完成以后可以使用dblink,查询远程数据库表数据进行验证


SQL> select count(*) from yjtest.devicemodel@dbnmslink;

  COUNT(*)
----------
   7921574
   

验证成功

1.2 在源端创建导入导出文件夹并赋权

语句:

sqlplus / as sysdba
create or replace directory DMPDIR as 'directory';
grant read,write on directory DMPDIR to username;


sqlplus / as sysdba
create or replace directory dir as 'directory';
grant read,write on directory dir to yjsource;

1.3 源端使用dblink远程导出数据

expdp 'yjsource/"yjsource123"@orclsource' schemas=yjtest directory=DMPDIR dumpfile=yjtest20201013.dmp log=ytest20201013.log network_link=yjtestlink tables=ALARMLOGINHIS

分区表network_link的说明:
这里要指出的是:network_link不支持远端导出分区表中的某一个分区,但可以导整个分区表

2、远程导出导入示例

ORCL1 是源端,ORCL2是服务端

--在ORCL2上创建DBLINK到ORCL1

create [public] database link <link_name> connect to identified by using '';

create public database link scms_test connect to dbmt identified by dbmt using '//192.168.1.144:1521/scms';

create public database link to_orcl1 connect to system identified by oracle using 'ORCL1';

--在ORCL2上执行IMPDP

$ impdp localusername/"localpasswd"@localsid' directory=DUMP_DIR logfile=impdp_to_orcl2.log network_link=to_orcl1 schemas=scott

--在ORCL2上创建DBLINK到ORCL1

create public database link to_orcl1 connect to system identified by oracle using 'ORCL1';

--在ORCL2上执行EXPDP,导出的DUMP文件在ORCL2上

expdp 'localusername/"localpasswd"@localsid' directory=DUMP_DIR logfile=expdp_from_orcl1.log network_link=to_orcl1 schemas=scott parallel=2

posted on 2020-10-13 22:31  平复心态  阅读(1947)  评论(0编辑  收藏  举报