很多时候,出于数据安全考虑,需要备份一些重要的业务数据,但这个时候服务器没有直接登录的权限,我们只能通过数据库用户名方式进行访问,这个时候可以考虑用exp,但exp毕竟是个旧版的工具,功能没有expdp那么全面,但由于expdp只能在服务端进行本地备份写入,受限比较大,这个时候可以考虑用expdp的network_link方式进行远程导出或直接导入,下面是这个方案的详细介绍:
解决方案:通过dblink实现远程数据的导入导出。
- 本地库创建dblink指向远程库。
create database link link_oss connect to dba_ftc identified by ****** using 'OSS';
- 本地库创建directory目录对象。
create directory expdp_dir as '/home/oracle11g/expdp_dir/';
- 本地库创建数据泵导出参数文件。
vi exp.par:
userid=username/password //本地库的用户名密码,可用上面创建的dblink和directory目录。
directory=expdp_dir //本地库创建的directory目录。
dumpfile=gf_expdp.dump //dump文件名。
logfile=gf_expdp.log //日志文件名。
tables=depkf15.t_cp //要导出的表。
query='"where rownum<1000001"' //导出条件,前100万行。
network_link=gf_local //dblink名。
注意,这里有个小问题值得注意,tables=depkf15.t_cp,如果待导出表和登录用户不同,则这里需要添加导出的对象schema(用户),否则会报错。
- 执行导出命令。
expdp '"/ as sysdba"' network_link=link_oss directory=dir1 dumpfile=om_order.dmp tables=gdoss.om_order
impdp使用network_link直接导入
1,从源库直接复制用户到目标库。
建立从目标库连接源库的dblink,登录目标库使用下面语句
impdp system/password schemas=用户名 network_link=dblink
2,也可以将源库作为目标库,创建连接自身的dblink
impdp system/password schemas=用户名 network_link=dblink remap_schema=用户名:新用户名
通过network_link方式直接将远程用户(schema)复制到本地!
发表评论 取消回复