Oracle通过数据泵网络导入另一个数据库,不生成DMP文件

本文是记录一次Oracle数据导入的经历,方便以后复习。因项目需要将服务器A上的数据库(用户名:USER1)导入到服务器B上的数据库(用户名:USER1),不想采用普通的EMP /IMP方式,通过生成一个中间的DMP文件来操作,记得数据泵EMP DP/IMPDP可以不用生成中间文件直接将数据从一个数据库导入到另一个数据库,于是找了些相关资料,脚本如下:

impdp system/system@ORCLB network_link=db_a_user1 logfile=impdp_db_a_user1.log DIRECTORY=TEMP_A_USER1 parallel=8;

 

执行出错,错误信息如下:

LRM-00104: '32;' 不是 'parallel' 的合法整数

经过查看资料,说是parallel不能放在语法的最后面,于是调整后脚本如下:

impdp system/system@ORCLB network_link=db_a_user1 logfile=impdp_db_a_user1.log parallel=8 DIRECTORY=TEMP_A_USER1;

 

再次执行,依然出错,错误信息如下:

经查阅资料,发现必须创建public dblink才可以,先删除掉原有的dblink再重新创建,错误解决。

原来dblink脚本:

CREATEDATABASELINKdb_a_user1

CONNECTTOUSER1IDENTIFIEDBYUSER1

USING

'(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SERVER = DEDICATED)

      (SERVICE_NAME = ORCL)

    )

)';

 

调整后脚本:

CREATEPUBLICDATABASELINKdb_a_user1

CONNECTTOUSER1IDENTIFIEDBYUSER1

USING

'(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SERVER = DEDICATED)

      (SERVICE_NAME = ORCL)

    )

)';

 

但出现了新的错误信息:

目录(directoryTEMP_A_USER1无效,查阅资料发现需要将把DIRECTORY= TEMP_A_USER1放在脚本前面,调整后脚本如下:

impdp system/system@ORCLB DIRECTORY=TEMP_A_USER1 parallel=8 network_link=db_a_user1 logfile=impdp_db_a_user1.log;

 

再次执行,出现另外一个错误,错误信息如下:

后经查看Dba_Directories发现TEMP_A_USER1创建问题,因服务器BAIX小机,可能是已有的TEMP_A_USER1对应的目录无操作权限,于是先删除掉TEMP_A_USER1,重新再system用户下创建TEMP_A_USER1,并授予UTL_FILE执行权限。

CREATEDIRECTORYTEMP_A_USER1AS'/tmp';

GRANTREAD,WRITEONDIRECTORYTEMP_A_USER1TOsystem;

GRANTEXECUTEON SYS.UTL_FILE TOsystem;

 

再次执行脚本

impdp system/system@ORCLB DIRECTORY=TEMP_A_USER1 parallel=8 network_link=db_a_user1 logfile=impdp_db_a_user1.log;

 

没有出现错误,成功将数据从A服务器导入到B服务器的数据库中。

 

总结:从以上经历可以看出,成功地通过网络导入数据库(不生成DMP文件)需要注意以下内容:

1、    B服务器数据库创建到A服务器数据库的public db link

2、    system下创建Directory,并赋予其读写权限,同时赋予SYS.UTL_FILE的执行权限;

3、    执行脚本参数位置,DIRECTORY=TEMP_A_USER1必须放在前面,parallel=8不能放在最后,是不是Oracle bug没确定过。

原文地址:http://www.itdatum.net/db/oracle/2014/09/7948.shtml

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

转载于:http://blog.itpub.net/11984612/viewspace-1273564/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值