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

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

 

 

 

上一篇:MYSQL——临时表排序的查询原理


下一篇:c# 取sqlite库分组的第一行不对