基于rowid分片加快进行导出和导入clob大字段的脚本(linux和window)

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。

在上一篇文章,介绍了如何 加快expdp clob大字段导出速度的两种方式,接下来分享一下针对linux和window下基于rowid分片,加快进行导出和导入clob大字段的脚本。

1、linux 下基于rowid分片的导出脚本 expdp_clob.sh

#!/bin/bash
#环境变量设置
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
export ORACLE_SID=dbbbed
#这里指的并行数
chunk=3
#3个并行(0~2)
for ((i=0;i<=2;i++));
do
  expdp system/oracle TABLES=szr.t_clob QUERY=szr.t_clob:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\, ${chunk}\) = ${i}\" directory=dump_dir dumpfile=t_clob${i}.dmp logfile=t_clob${i}.log &
  echo "=====================================expdp parallel:$i========================================="
  #休眠10s,防止数据泵还没开始产生进程下一个就开始了,导致一些报错和数据没导出等情况。
  sleep 10
done 

导出过程:
在这里插入图片描述

2、window下基于rowid分片导出脚本 expdp_clob.bat

@echo off
rem #这里可以带上IP地址、端口、sid
rem #set connStr=system/oracle@ip:1521/sid_name
set connStr=system/oracleora
rem #这里指的并行数
set chunk=4
rem #oracle_sid
set oracle_sid=orcl
rem #oracle_home路径注意bin后边的'\'
set oracle_home_path=D:\app\Administrator\product\11.2.0\dbhome_1\bin\

rem 格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]
rem #4个并行,0~9(开始标号、每次增加量、结束标号)
for /l %%a in (0,1,3) do (
start /b %oracle_home_path%expdp %connStr% TABLES=szr.t_clob QUERY=szr.t_clob:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\,%chunk%\) = %%a\" directory=expbak dumpfile=t_clob%%a.dmp logfile=t_clob%%a.log
echo =====================================导出进程%%a=====================================
timeout 10 >nul 2>nul
)

导出过程:
在这里插入图片描述
3、linux下基于rowid导入脚本 impdp_clob.sh

#!/bin/bash
#环境变量设置
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
export ORACLE_SID=dbbbed
for ((i=0;i<=2;i++));
do
  #impdp \"/ as sysdba\" directory=dump_dir dumpfile=t_clob${i}.dmp logfile=impdp_t_clob${i}.log  DATA_OPTIONS=DISABLE_APPEND_HINT TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y CONTENT=DATA_ONLY &
  #DIABLE_APPEND_HINT 减少并行导入锁表
  impdp \"/ as sysdba\" directory=dump_dir dumpfile=t_clob${i}.dmp logfile=impdp_t_clob${i}.log  DATA_OPTIONS=DISABLE_APPEND_HINT  CONTENT=DATA_ONLY &
  echo "=====================================impdp parallel:$i========================================="
  sleep 10
done

在这里插入图片描述

4、window下基于rowid 导入脚本 impdp_clob.bat

@echo off
rem #这里可以带上IP地址、端口、sid
rem #set connStr=system/oracle@ip:1521/sid_name
set connStr=system/oracleora
rem #oracle_sid
set oracle_sid=orcl
rem #oracle_home路径注意bin后边的'\'
set oracle_home_path=D:\app\Administrator\product\11.2.0\dbhome_1\bin\

rem 格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]
rem #4个并行,0~9(开始标号、每次增加量、结束标号)
for /l %%a in (0,1,3) do (
rem 11g upper >start /b %oracle_home_path%impdp %connStr% directory=impdir dumpfile=TX_%%a.DMP logfile=imp_TX_%%a.log DATA_OPTIONS=DISABLE_APPEND_HINT TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y CONTENT=DATA_ONLY
start /b %oracle_home_path%impdp %connStr% directory=expbak dumpfile=t_clob%%a.dmp logfile=imp_t_clob%%a.log  DATA_OPTIONS=DISABLE_APPEND_HINT CONTENT=DATA_ONLY
echo =====================================导入进程%%a=====================================
timeout 10 >nul 2>nul
)

在这里插入图片描述

关注我,学习更多的数据库知识。
请添加图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老苏畅谈运维

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

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

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

打赏作者

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

抵扣说明:

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

余额充值