前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >impdp create index parallel-数据泵并行创建索引

impdp create index parallel-数据泵并行创建索引

作者头像
数据和云
发布2018-03-07 14:56:14
2.6K0
发布2018-03-07 14:56:14
举报
文章被收录于专栏:数据和云数据和云

题记在数据泵导入时默认情况下创建索引是不使用并行的,所以这一步会消耗较长的时间,除了人工写脚本并行创建索引外,数据泵在导入时也可以并行创建索引,本文详细介绍了整个测试过程并得出测试结论。

测试环境为11204单实例:

首先创建测试表和测试索引:

然后并行导出,在导入时指定parallel等于4并设置sqlfile参数,查看生成的sql文本:

发现sql文本中并未使用并行:

接下来为了更直接的看出整个过程先开启系统级别的10046事件,再指定parallel等于4导入数据。

此时,在v$pq_slave视图中已经可以查看到并行进程,且并行度为8,并且状态为BUSY,几秒钟之后变成IDLE:

同时会产生8个并行进程的trace文件:

查看dbwn进程的trace文件,显示创建索引时已经指定parallel为4:

如下是p004进程的详细内容:

从trace文件中可以看出在并行创建索引时,产生了2个query slave set,分别是Q10000和Q10001,这时并行度就会乘于2变为8,从执行计划id=8和id=4中分别可以看出,一组用来扫描表,一组用来创建索引。 这也就是为什么我们指定parallel为4,而实际并行度为8的原因。

最后要关掉系统级别的10046事件,不然会产生非常多的trace文件:

测试导入时指定parallel等于1

可以看出数据库未生成并行的trace文件,也就是未并行创建索引:

测试在导出时不使用并行,然后导入时指定parallel参数等于4:

从trace文件可以看出,索引创建时使用了并行:

结论

Oracle ADG上的列式存储支持Oracle ADG上的列式存储支持

1、数据泵在导入时一般情况下只需指定parallel>1即可在创建索引时候使用并行,导入时可以从trace文件中看到数据泵采用并行创建索引; 2、创建索引时并行度可能会等于parallel*2,这是因为oracle产生了两组query slave set,一组用来扫描表,一组用来创建索引; 3、如果数据泵带有sqlfile参数,得到的sql文本中并行度会显示为1,但是在实际导入时是可以并行创建的; 4、导出时未并行导出,导入时只要指定parallel参数同样可以并行创建索引; 5、如果不想并行创建索引,去掉parallel参数,或者指定parallel=1即可。

参考文档: Impdp Parallel Index Creation always creates indexes with degree 1. (Doc ID 1289032.1) Bug 8604502 : INDEXES ARE ALWAYS CREATED WITH PARALLEL DEGREE 1 DURING IMPORT

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档