目录

  • 1、使用dblink远程导出导入数据的步骤为:
  • 1.1 在源端创建到服务端的 dblink
  • 1.2 在源端创建导入导出文件夹并赋权
  • 1.3 源端使用dblink远程导出数据
  • 2、远程导出导入示例
  • 2.1. IMPDP + network_link, 直接将源端数据导入到目标库中(DUMP文件不落地)
  • 2.2 EXPDP + network_link, 直接将源端库上的数据,导出到目标端服务器上

对于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远程导出导入数据的步骤为:

1.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是服务端

2.1. IMPDP + network_link, 直接将源端数据导入到目标库中(DUMP文件不落地)

--在ORCL2上创建DBLINK到ORCL1

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

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

2.2 EXPDP + network_link, 直接将源端库上的数据,导出到目标端服务器上

--在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