去查询一个大表时, 大家都不会忘记Oracle的并行(Parallel)操作, 比如:

CREATE TABLE xxx PARALLEL 4 AS SELECT /*+ PARALLEL(...) */
SELECT /*+ PARALLEL(...) */ FROM ...

    但手工并行则易被忘记, 一个朋友花了28小时导出300多G的带BLOB的表, 我的第一反应就是为什么不用并行? 这时是指手工并行. 使用exp的Query参数.

exp ... query=\"where mod(pk,4) = 0\"
exp ... query=\"where mod(pk,4) = 1\"
exp ... query=\"where mod(pk,4) = 2\"
exp ... query=\"where mod(pk,4) = 3\"

    由于LOB默认设置是NOCACHE, 因此导出LOB是很慢的, 采用多个进程进行导出, 可以节约很多的时间. 28小时的痛苦时间, 可以缩短为7小时, 或更短.

    要想办法偷懒, 这才是DBA的好生活.