expdp/impdp完成两个db的简单同步

一台为开发库,数据量小,防止出现意外,经理要求开发库到另外一台闲置库简单的数据同步。

源库:

SQL> create directory dump_dir as '/source/dump';
SQL> grant all on directory dump_dir to test;

目标库:

SQL> create directory dump_dir as '/dest/dump';
SQL> grant all on directory dump_dir to test;

shell脚本如下:

more expdp_impdp_tongbu.sh


#!/bin/sh
 
#目录变量
V_SOURCE_DIR='/source/dump/'
V_DEST_DIR='/dest/dump/'
V_FNAME="test_`date'+%Y_%m_%d'`"
V_SPOOL='/data/scripts/test_spool.sql'
 
#一天保留一份
rm -f ${V_SOURCE_DIR}${V_FNAME}.*
rm -f ${V_SPOOL}
#导出
expdp test/test@testdb_10 directory=dump_dir dumpfile=${V_FNAME}.dmp logfile=${V_FNAME}.log schemas=test
 
#dump文件从源端传到目标端
scp ${V_SOURCE_DIR}${V_FNAME}.dmp 192.168.1.9:${V_DEST_DIR}  
##生成要删除的表的语句,以免导入时已有的表报错
sqlplus test/test@db11g_9 << eof
 
set feedback off heading off verify off trimspool off
set pagesize 0 linesize 100
define v_spool ='/data/scripts/test_spool.sql'
spool &v_spool
  SELECT 'DROP TABLE '|| TNAME ||' CASCADE CONSTRAINTS PURGE;'  FROM TAB;
spool off
eof
 
#处理掉带SQL>的行
col -b <${V_SPOOL} | sed '-e /SQL>/d' > '/data/scripts/tmp/jcxx.sql'  
#执行上述生成的删除脚本
sqlplus test/test@db11g_9 << eof
 
set feedback offheading off verify off trimspool off
set pagesize 0 linesize 100
define v_spool ='/data/scripts/test.sql'
@&v_spool
eof
 
#导入
impdp test/test@db11g_9 directory=dump_dir dumpfile=${V_FNAME}.dmplogfile=${V_FNAME}.log schemas=test


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上海阿丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值