暂无图片
如何在三个库同时发起expdp导出操作?
我来答
分享
暂无图片 匿名用户
如何在三个库同时发起expdp导出操作?
暂无图片 10M

比如10.10.10.1 10.10.10.2 10.10.10.3这三个ip 要同时发起数据泵导出 到目标库 同时导入 这怎么实现 ?

首先ip不同,不可能同时发起吧?就算是把三个expdp 写到一个shell里 那也一个一个执行啊  执行完成不完成 我也不知道  完成了 还要传送到目标端 目标端怎么同时导入?

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
有问题吗?

这个同时不是要求一分一秒的不差发起expdp 导出请求,我的理解是开三个shell 一起执行expdp 导出操作。 其次传输到目标端,也是三个shell 一起传输到目标库。 最后impdp 一起导入的问题,可以开三个shell通过remap_schema、remap_tablespace 的方式将三个库同时导入到不同的schema 和不同的表空间下。

暂无图片 评论
暂无图片 有用 0
打赏 0
哇哈哈

同时导出,同时导入?3个思路

第一种,crontab调度

1、3个数据库服务器对齐系统时间

2、创建目录,编写导出脚本等准备条件

3、3个服务器使用crontab做计划任务,定在同一时刻执行导出脚本

4、分别传输

5、目标端准备环境、脚本

6、3个crontab,做导入的计划任务

第二、xshell,securecrt等各种ssh工具,都有向多个窗口同时发送命令的功能

参考

https://blog.csdn.net/SaberJYang/article/details/72836100

1、3个源服务器目录、脚本等准备工作,脚本全部同名

2、xshell开3个源服务器终端,同时发送脚本命令

3、传输

4、目标准备3个同名脚本在不同的目录

5、xshell开3个目标服务器终端,进入不同的目录,使用xshell多窗口同时发送脚本命令

第三,使用impdp network_link参数

参考https://blog.csdn.net/weixin_31499919/article/details/116444409

1、目标服务器准备环境、dblink、写脚本

2、使用crontab或者xshell多窗口命令功能,执行脚本

暂无图片 评论
暂无图片 有用 2
打赏 0
愤怒的蜗牛
2022-09-28
李宏达
2022-09-28
mobaxterm也可以
回首看不尽年华

开三个窗口同步进行数据导入

暂无图片 评论
暂无图片 有用 0
打赏 0
薛晓刚

真实目的是什么?为什么要同时导出?

那么把这三个库汇聚在一起,在exp行不行?

要求一致性?再说了全量备份不是一致性备份,只有冷备份才是一致性备份。

暂无图片 评论
暂无图片 有用 0
打赏 0
哇哈哈
2022-09-28
我觉得这种问题就是问着玩的
布衣
2022-09-28
问着玩,为了10M墨值,我也回答一下
布衣
暂无图片
vim impdp.sh f_scp_dmp_file(){ echo `date` '--调用服务器:expdp_table.sh.sh' USER="oracle" PASSWORD="密码" RSYNC_OPTS="-e \\\"ssh -p22 -o StrictHostKeyChecking=no\\\" -azv --stats" expect -c " eval spawn -noecho /usr/bin/ssh oracle@10.10.10.1 \"/bin/sh /home/oracle/expdp_table.sh.sh\" match_max 10000 set timeout -1 expect \"*?assword:*\" send -- \"$PASSWORD\r\" expect eof" > $expdp_dir/script_log/expdp_table_partition.log echo `date` '--调用服务器:expdp_table.sh,完成' echo `date` '--开始传输DMP文件' expect -c " eval spawn -noecho /usr/bin/scp -r oracle@目标IP:/home/oracle/expdp_dat /home/oracle/ match_max 10000 set timeout -1 expect \"*?assword:*\" send -- \"$PASSWORD\r\" expect eof" echo `date` '--传输DMP文件完成' fi impdp 用户名/密码 directory=expdp dumpfile=文件目录 tables=表名 }
复制

脚本解释:
1、在源端写一个导出shell 脚本:expdp_table.sh
2、在目标端(10.10.10.1,2,3)使用:expect 进行远程调用
3、使用:expect scp 进行远程传输到目标端(10.10.10.1,2,3)
4、传输完成后进行本地导入

在目标端的crontab里面增加相同的时间任务:
10 00 01 * * oracle /bin/sh /home/oracle/impdp.sh

注意:因为是同步执行的,肯定是同步导出的操作,因为导出和传输的速度不同可能导致传到目标端的时间不同可能不是同时导入的。如果想实现同时导入,那你导入的时间间隔长一步,凌晨你开始导出,早上6点开始导入。

上面的代码是实现逻辑,方便你参考。

希望对你有所帮助,如有帮助,请采纳

暂无图片 评论
暂无图片 有用 1
打赏 0
张sir

你想把导入导出这整个过程完全自动化是比较难的,首先导出是不是完成、是不是成功都需要做判断。需要较长时间的调试。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交