暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Rowid分片的方式加速导出LOB对象

许玉冲 2025-02-13
227

LOB对象导出时,无法使用并行,导出的时间有可能会非常久。我们可以尝试使用Rowid分片的方式,手动分配并发的导出进程,这种方式有助于加快导出速度。

 

示例,导出test.t这张表,导出脚本如下所示。

#!/bin/bash

chunk=10

TABLE_NAME=test.t

for ((i=0; i<${chunk}; i++))

do

    nohup expdp userid=\'/ as sysdba\' TABLES=${TABLE_NAME} QUERY=${TABLE_NAME}:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\, ${chunk}\) = ${i}\" directory=dpdir dumpfile=${TABLE_NAME}_${i}.dmp logfile= ${TABLE_NAME}_${i}.log JOB_NAME=expdp_${TABLE_NAME}_${i} &

    sleep 10

done

思路是指定分片数量,例如本示例中设置了分片数为10,然后每个分片就有相应的expdp导出进程。

 

示例,导入脚本如下所示。

#!/bin/bash

chunk=10

TABLE_NAME=test.t

for ((i=0; i<${chunk}; i++))

do

    nohup impdp userid=\'/ as sysdba\' directory=dpdir dumpfile=${TABLE_NAME}_${i}.dmp logfile=impdp_${TABLE_NAME}_${i}.log DATA_OPTIONS=DISABLE_APPEND_HINT table_exists_action=append &

    sleep 10

done

 

10g 测试:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Productio

nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_01.dmp logfile=exp_01.log TABLES=PGI.LOG query=PGI.LOG:\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=0\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_02.dmp logfile=exp_02.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=1\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_03.dmp logfile=exp_03.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=2\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_04.dmp logfile=exp_04.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=3\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_05.dmp logfile=exp_05.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=4\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_06.dmp logfile=exp_06.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=5\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_07.dmp logfile=exp_07.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=6\" &
nohup expdp \'/ as sysdba\'  directory=expdp_dir dumpfile=PGI_08.dmp logfile=exp_08.log TABLES=PGI.LOG query=PGI.LOG :\"where mod\(dbms_rowid.rowid_block_number\(rowid\),8\)=7\" &



nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_01.dmp logfile=imp_01.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_02.dmp logfile=imp_02.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_03.dmp logfile=imp_03.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_04.dmp logfile=imp_04.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_05.dmp logfile=imp_05.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_06.dmp logfile=imp_06.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_07.dmp logfile=imp_07.log cluster=no TABLE_EXISTS_ACTION=append &
nohup impdp \'/ as sysdba\' directory=expdp_dir dumpfile=PGI_08.dmp logfile=imp_08.log cluster=no TABLE_EXISTS_ACTION=append &

最后修改时间:2025-02-13 10:36:52
文章转载自许玉冲,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论