Oracle利用expdp导出远程数据库

本文介绍了如何使用expdp的network_link参数从远程Oracle 11g数据库导出数据。详细步骤包括创建数据库链接、配置目录、编写参数文件以及执行导出和导入操作。此外,还解决了32位与64位客户端的兼容性问题。
摘要由CSDN通过智能技术生成

expdp network_link 命令备份远程主机上oracle 11g数据库

 

  这两天发现有一台服务器密码被修改不能远程登录,但数据库和服务运行正常,也能访问。

 

  运维部决定将数据库备份出来然后前去机房重启修改密码。

 

  因为之前有用expdp/impdp导出10g数据库的经验,完整导出速度非常快。固这次决定试试能不能用该命令远程导出版本为11g的数据库。网上查了一下改命令的参数,发现network_link方式可行。

 

  首先,局域网本地有一台测试服务器上装有oracle10g数据库,通过在10g上配 database link连接到远程11g数据库,这里就出现了问题-新建后不能访问后,查出原因为oracle 10g建DB_link连接11g时用户密码需要加双引号(正确操作是在配有远程数据库TNS前提下 Create Database Link link_ora94 Connect To username Identified By "password" Using 'ora94';),测试连接正常。

 

  保证两边登录的用户都有DBA权限,OK,cmd执行expdp命令,艹,报错! 大致内容是这样:

 

 ORA-39001: 参数值无效。
 ORA-39169: 10.2.0.1.0 的本地版本不能与 11.2.0.1.0 的远程版本一起使用。

 

  判断为版本不一致导致。所以又开始在本地装一个11g数据库,装好后丫的又出现问题:发现PL/SQL不能登录(登录为XX角色 的选项不见了),又开始查找原因,网上解释说32位PL/SQL不能支持64为Oracle 11g,无语,只能再在本地装一个32位的11g客户端。配置好后能正常打开,继续新建DBA用户->新建database link 测试能正常访问。

  终于到重头戏了。cmd执行远程导出命令:expdp test_dba/test_dba@orcl directory=EXP_DIR  dumpfile=full0605.dmp logfile=full0605.log full=y network_link=link_ora94 最后一个潇洒的回车!

 

对于数据的导出,导入。对于exp/imp可以实现把远程数据导入到客户端,但是功能没有expdp/impdp强大
对于expdp/impdp功能很强大,但是对于导出的数据只能是在服务端。下面我们就基于通过expdp结合dblink
把数据直接导出到本地 下面使用导出
 
如果空间允许建议导出到服务器
 

# 对于orac_remote是一个本地命名,可以通过netca进行配置,或者直接修改相关配置文件
# 需要保持orac_remote的system用户是open状态,并且密码是正确的
# 可以通过 select * from scott.emp@to_orac_remote 进行测试,如果不成功,需要检查权限和用户已经命名空间orac_remote


1 创建dblink 连接

create database link to_orac_remote
connect to system identified by gpecnew using 'orac_remote'

2 创建directory目录

create directory backup as '/backup'
grant read,write on directory backup to system


3 编写expdp的parfile参数文件 scott.par

userid=system/root
directory=backup
dumpfile=scott.dump
logfile=scott.log
schemas=scott
network_link=to_orac_remote


4 执行命令导出到本地
expdp parfile=scott.par

5 导入到本地
(测试的时候先在本地删除scott用户以及所有的表 drop user scott cascade)
impdp system/root  directory=backup dumpfile=scott.dump logfile=scott2.log

 

 

expdp数据泵

 

优点:支持并发多线程方式可以远程导出,性能显著提高,可开并行parallel=n,比exp/imp实用工具相比,导出提高了10倍左右,导入提高了5倍左右。能根据备份时收集的元数据,自动创建用户、表对象,支持作业、表空间备份方式。

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤来实现: 1. 在远程数据库中创建一个只包含指定schema的数据泵导出文件,可以使用以下命令: ``` expdp <username>/<password> schemas=<schema_name> directory=<directory_name> dumpfile=<dump_file_name>.dmp logfile=<log_file_name>.log ``` 其中,`<username>`和`<password>`是远程数据库的用户名和密码,`<schema_name>`是要导出的schema名称,`<directory_name>`是数据泵导出文件存储的目录名称,`<dump_file_name>`是导出文件的名称,`<log_file_name>`是日志文件的名称。 2. 将导出文件传输到本地系统中。 3. 在本地数据库中创建一个与远程数据库中schema名称相同的用户,并授予该用户创建表的权限。 4. 在本地数据库中创建一个目录对象,用于存储数据泵导入文件,可以使用以下命令: ``` CREATE DIRECTORY <directory_name> AS '<directory_path>'; ``` 其中,`<directory_name>`是目录对象的名称,`<directory_path>`是目录的路径。 5. 在本地数据库中使用以下命令导入数据泵文件: ``` impdp <username>/<password> directory=<directory_name> dumpfile=<dump_file_name>.dmp logfile=<log_file_name>.log remap_schema=<schema_name>:<local_schema_name> ``` 其中,`<username>`和`<password>`是本地数据库的用户名和密码,`<directory_name>`是数据泵导入文件存储的目录名称,`<dump_file_name>`是导出文件的名称,`<log_file_name>`是日志文件的名称,`<schema_name>`是远程数据库中要导入的schema名称,`<local_schema_name>`是本地数据库中要创建的schema名称。 这样就可以将远程数据库中指定的schema导入到本地数据库中了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值