适用范围
Oracle 11.2.0.4 及以上版本
问题概述
数据泵导出导入表数据时,可以利用并行加速进度;但是针对索引及约束,仅能采用串行单进程模式处理,对比并行数据处理效率,索引及约束单进程处理效率较低,在大数据量导入时,严重影响数据迁移进度
问题原因
数据泵的模式决定
解决方案
利用sqlfile 建立执行脚本,修改脚本并行度,然后通过执行脚本,实现并行导入;
impdp的sqlfile选项,可以不执行SQL,而是将文件dump中的SQL输出;
操作方式:
1.Expdp 导出备份文件
expdp "/ as sysdba " directory=exp0705 schemas=‘TEST12’ dumpfile=index.dmp logfile=index.log cluster=no include=INDEX,constraint
2.Impdp 利用备份文件建立sqlfile 文件
impdp "/ as sysdba " directory=exp0705 schemas=‘TEST12’ dumpfile=index.dmp logfile=index.log sqlfile=cre_index.sql cluster=no include=INDEX
impdp "/ as sysdba " directory=exp0705 schemas=‘TEST12’ dumpfile=index.dmp logfile=index.log sqlfile=cre_constraint.sql cluster=no include=constraint
3.修改sqlfile 文件的并行度;针对建立的sql 修改parallel 的并行度,执行完成后,后一个sql 会取消并行度。
Vi cre_index.sql
CREATE UNIQUE INDEX “TEST12”.“TEST_PK” ON “TEST12”.“TEST” (“A”)
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE “HDAPP” PARALLEL 16 ;
ALTER INDEX “TEST12”.“TEST_PK” NOPARALLEL;
4.Sqlplus 下执行
@cre_index.sql
参考文档
https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/datapump-import-utility.html#GUID-BA74D4F6-2840-4002-A673-0A7D9CBB3D78