通过dblink,数据泵expdp远程跨版本导库

通过dblink,数据泵expdp远程跨版本导库

  • 背景环境
  • 连接服务器(使用dblink)
  • 数据泵expdp导出
  • 附上我查的资料中觉得有所帮助的几篇,供大家参考
  • 致谢

背景环境

希望导出服务器上的库到本地,并绕过两个数据量很大的表,所以考虑使用数据泵的exclude参数。

远程服务器:
Oracle服务端版本12c:12.1.0.1

本地:
Oracle服务11g:11.2.0.1
Oracle客户端版本11g:11.2.0.1

连接服务器(使用dblink)

这里我本地有一个服务端,所以我是通过plsql连接本地库之后,使用dblink连接远程库再的,与直接连远程库类似:

  1. 授权并创建dblink;
    查看是否有权限: select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='用户名';
    授予权限: grant create public database link to 用户名;,记得使用上句查看。
    创建dblink:create public database link 连接名 connect to 远程服务的用户名 identified by 密码(数字要双引号) USING '远程TNS连接';
    例如:
create public database link TESTLINK connect to USERNAME identified by PASSWORD USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    ))';
  1. 使用低版本连接高版本客户端出错:ORA-28040、ORA-01017
    针对ORA-28040
    在数据库服务器上的$ORACLE_HOME/network/admin/sqlnet.ora文件中
    增加两行(支持低版本客户端的连接认证方式),不需要重启监听
 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

针对ORA-01017
支持低版本认证后需要重置密码,使用如下命令在sql中刷一下密码即可,不需要修改密码

alert user xxx identified by xxxxxx;

至此,使用低版本客户端连接高版本服务器已经成功,我使用的dblink,也没用问题。
查询时,需要在表名后跟上dblink名

SELECT * FROM v$version@TESTLINK;

数据泵expdp导出

在系统中创建文件夹,并在本地客户端执行以下语句,确保该地址真实存在;

create directory expdp_dir as ‘f:\data;
select * from dba_directory;

cmd命令行中执行:

expdp 本地用户名/密码@本地库 schemas=需导出用户1 dumpfile=导出的文件名.dmp directory=expdp_dir exclude=table:\"in('除了表1','除了表2')\" logfile=导出记录日志文件名.log version=即将impdp导入的数据库版本号 network_link=testlink(dblink名)

expdp遭遇ORA-39006、ORA-39065、ORA-01422、ORA-39097错误

根据网上经验,在远程服务器上执行,可解决(我实验没用效果,暂时没时间琢磨了,还是使用exp/imp来做了,后面有空再研究把):

sqlplus / as sysdba  

SQL>@$ORACLE_HOME/rdbms/admin/catmeta.sql   

SQL>@$ORACLE_HOME/rdbms/admin/catmet2.sql   

SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql

附上我查的资料中觉得有所帮助的几篇,供大家参考

客户端登录Oracle 12.2服务器报ORA-01017的解惑
ORACLE 12C连接时报ORA28040和ORA01017的错误
ORA-28040 数据库兼容性解决方案 没有匹配的验证协议
ORACLE dblink的简单使用
使用expdp(非本地)远程导出数据
expdp遭遇ORA-39006、ORA-39065、ORA-01403、ORA-39097错误
[Oracle] expdp ORA-39006, ORA-39065 的解决办法

致谢

  1. 感谢各位前辈不吝赐教,写下博文分享;
  2. 感谢大家耐心阅读。

你可能感兴趣的:(数据库,oracle,数据库,服务器)