问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle怎么用并行expdp

发布网友 发布时间:2022-04-09 17:29

我来回答

2个回答

懂视网 时间:2022-04-09 21:51

如果想对表开启8个并行度则执行:alter table emp parallel 8;

scott@TEST>select table_name,degree from user_tables where table_name=‘EMP‘;

TABLE_NAME		       DEGREE
------------------------------ ----------
EMP				  DEFAULT

scott@TEST>alter table emp parallel 8;

Table altered.

scott@TEST>select table_name,degree from user_tables where table_name=‘EMP‘;

TABLE_NAME		       DEGREE
------------------------------ ----------
EMP					8

2、使用并行Hint

有如下一些并行Hint可以用来控制是否启用并行及指定并行度

1) /*+ parallel(table[,degree]) */  #用于指定并行度去访问指定表,如果没有指定并行度degree,则使用Oracle默认并行度

2) /*+ noparallel(table) */  #对指定表不使用并行访问

3) /*+ parallel_index(table[,index[,degree]]) */  #对指定的分区索引以指定的并行度去做并行范围扫描

4) /*+ no_parallel_index(table[,index]) */  #对指定的分区索不使用并行访问

5) /*+ pq_distribute(table,out,in) */ #对指定表以out/in所指定的方式来传递数据,这里out/in的值可以是HASH/NONE/BROADCAST/PARTITION中的任意一种如/*+ pq_distribute(table,none,partition) */ 

把表EMP修改回并行度为1

scott@TEST>alter table emp noparallel;

Table altered.

scott@TEST>select table_name,degree from user_tables where table_name=‘EMP‘;

TABLE_NAME		       DEGREE
------------------------------ ----------
EMP					1

使用并行Hint执行上之前的SQL

scott@TEST>select /*+ parallel(emp) */* from emp;

14 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2873591275

--------------------------------------------------------------------------------------------------------------
| Id  | Operation	     | Name	| Rows	| Bytes | Cost (%CPU)| Time	|    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |		|    14 |  1218 |     2   (0)| 00:00:01 |	 |	|	     |
|   1 |  PX COORDINATOR      |		|	|	|	     |		|	 |	|	     |
|   2 |   PX SEND QC (RANDOM)| :TQ10000 |    14 |  1218 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    PX BLOCK ITERATOR |		|    14 |  1218 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |	     |
|   4 |     TABLE ACCESS FULL| EMP	|    14 |  1218 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |	     |
--------------------------------------------------------------------------------------------------------------

从上面的执行计划中可以看出,走的是并行

3、使用alter session命令

使用alter session命令,可以在当前session中强制启用并行查询或并行DML。如果强制启用了并行查询或者并行DML,那就意味着从执行alter session命令强制开启并行的那个时间点开始,在这个session中随后执行的所有SQL都将以并行的方式执行,有如下四种方法在当前session中强制开启并行

1) alter session parallel query 

在当前session中强制开启并行查询,没有指定并行度,Oracle使用默认并行度

2) alter session parallel query  parallel n

在当前session中强制开启并行查询,并且指定并行度为n

3) alter session parallel dml

在当前session中强制开启并行DML,没有指定并行度,Oracle使用默认并行度

4) alter session parallel dml  parallel n

在当前session中强制开启并行DML,并且指定并行度为n

表EMP并行度仍为1,在session中强制开启并行:

scott@TEST>select table_name,degree from user_tables where table_name=‘EMP‘;

TABLE_NAME		       DEGREE
------------------------------ ----------
EMP					1

scott@TEST>set autotrace traceonly
scott@TEST>alter session force parallel query;

Session altered.

scott@TEST>select * from emp;

14 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2873591275

--------------------------------------------------------------------------------------------------------------
| Id  | Operation	     | Name	| Rows	| Bytes | Cost (%CPU)| Time	|    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |		|    14 |  1218 |     2   (0)| 00:00:01 |	 |	|	     |
|   1 |  PX COORDINATOR      |		|	|	|	     |		|	 |	|	     |
|   2 |   PX SEND QC (RANDOM)| :TQ10000 |    14 |  1218 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    PX BLOCK ITERATOR |		|    14 |  1218 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |	     |
|   4 |     TABLE ACCESS FULL| EMP	|    14 |  1218 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |	     |
--------------------------------------------------------------------------------------------------------------
......

从执行计划中可以看出走的是并行。

取消当前session并行使用如下语句alter session disable parallel query;

scott@TEST>alter session disable parallel query;

Session altered.

scott@TEST>select * from emp;

14 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation	  | Name | Rows  | Bytes | Cost (%CPU)| Time	 |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |	 |    14 |  1218 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |  1218 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
......

4、11gR2的自动并行

Oracle在11gR2中引入了自动并行(Auto DOP),自动并行的开启受参数parallel_degree_policy的控制,其默认值为MANUAL,即自动并行在默认情况下并没有开启。如果通过更改PARALLEL_DEGREE_POLICY的值而开启了自动并行,那么后面执行的SQL的执行方式是串行还是并行,以及并行执行的并行度是多少等,就都是由Oracle自动来决定了。

scott@TEST>select table_name,degree from user_tables where table_name in (‘EMP‘,‘EMP_TEMP‘);

TABLE_NAME										   DEGREE
------------------------------------------------------------------------------------------ ------------------------------------------------------------
EMP												    1
EMP_TEMP											    1

scott@TEST>alter session set parallel_degree_policy=AUTO;

Session altered.

scott@TEST>set autotrace traceonly
scott@TEST>select * from emp;

14 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation	  | Name | Rows  | Bytes | Cost (%CPU)| Time	 |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |	 |    14 |  1218 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |  1218 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
......
scott@TEST>select * from emp_temp;

1835008 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2661083444

--------------------------------------------------------------------------------------------------------------
| Id  | Operation	     | Name	| Rows	| Bytes | Cost (%CPU)| Time	|    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |		|  1835K|    66M|  1683   (1)| 00:00:21 |	 |	|	     |
|   1 |  PX COORDINATOR      |		|	|	|	     |		|	 |	|	     |
|   2 |   PX SEND QC (RANDOM)| :TQ10000 |  1835K|    66M|  1683   (1)| 00:00:21 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    PX BLOCK ITERATOR |		|  1835K|    66M|  1683   (1)| 00:00:21 |  Q1,00 | PCWC |	     |
|   4 |     TABLE ACCESS FULL| EMP_TEMP |  1835K|    66M|  1683   (1)| 00:00:21 |  Q1,00 | PCWP |	     |
--------------------------------------------------------------------------------------------------------------
......

从上面的输出可以看出表EMP和EMP_TEMP的并行度都为1,但是两个表的数据量相关很大,EMP只有14条数据,EMP_TEMP有1835008条数据。在执行时Oracle选择的执行方式就有不同,EMP是串行执行,而EMP_TEMP为并行执行。


参考《基于Oracle的SQL优化》

官方文档:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2013.htm#i2231814

本文出自 “DBA Fighting!” 博客,请务必保留此出处http://hbxztc.blog.51cto.com/1587495/1908054

Oracle开启并行的几种方法

标签:oracle 并行执行 parallel

热心网友 时间:2022-04-09 18:59

expdp并行设置的结果无非3种:变得更好、没有变化、变得更差
效率是否得到提高,并不取决于你设置了多碉堡的参数,参数和参数值是否合适方为根本
并行需要成本,因为并行之前需对服务器资源综合权衡,计算并行,分配任务
并行设置是门艺术,因为PARALLEL经常是要跟FILESIZE,DUMPFILE一起考虑
下面是官方文档给的一个并行优化实例:
expdp hr/hr FULL=y DUMPFILE=dpump_dir1:full1%U.dmp, dpump_dir2:full2%U.dmp
FILESIZE=2G PARALLEL=3 LOGFILE=dpump_dir1:expfull.log JOB_NAME=expfull
另外,并行度的设置不应该超过CPU数量的2倍
sys@ORCL> show parameter cpu
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
爱情的句子高质量文案句子 干妹妹对我"久伴你"是什么意思 陪她一辈子的文案汇总123句 蜂窝移动通信笔记2——调制 通信系统的带宽和频率分析 汽车座椅头枕应该调到什么位置 老面馒头和酵母馒头的区别 老面馒头与酵母馒头哪个好 2024财富中国500强最赚钱40家公司揭晓 2024中国500强盈利排名榜一览 2024全球银行1000强中国名单2024世界银行1000强中国哪些上榜 品牌榜:2024年中国十大银行排行榜 投票结果公布【新】 WORD页眉设置问题。单页 双页? 文档单双页页眉页脚如何设置? 什么是职工养老保险登记表 养老保险的账户明细表 养老保险个人账户可以分割吗 养老保险累计分账月数是什么意思。 关于养老保险转移的问题,信息表是什么? 什么是可分离基本养老金和不可分离基本养老金? 关于养老保险转移的问题,信息表是什么 个人缴纳养老保险社保局为什么要给分成单位和个人两部分 养老保险金的性质及分割原则 如何设置oracle的并行度 养老保险分解 什么意思 第三套生命表非养老类业务为什么分为一表和二表?有什么区别 养老保险拆分是什么意思? 养老保险老数据拆分是什么意思? 辞职的情况说明怎么写? 两个月的宝宝开始拉肚子了 怎么回事 怎样辨别婴儿拉肚子是上火还是着凉? 离职书怎么写才好 用用什么小程序把微信里面的相册保存起来设置密码? 求Android4.4.3,处理器架构为armeabi-V7a,LCD密度为160的谷歌服务 手机内存较小但又很着急通讯下载qq呢还是微信好呢? 计算机未来10年的发展,将应用到哪些领域,发挥哪些作用?(500左右) 房屋出租后物业费该谁承担 卧龙凤雏?以诸葛为名的捷途X70 PLUS,有多机智? 正常租房子物业费应该谁来交 租房的物业管理费由谁承担 200M的网速从光猫的千兆口直连我的电脑只有0-5m的网速,而连电信维修小哥的电脑可以达到200m? 在什么情况下业主可以拒交物业费 翻腾不息的意思意思 房屋出租物业管理费该由谁交 奔腾不息的意思是什么 “复制粘贴”技术是从windows操作系统才有的么? 奔腾不息的意思? 出租房的物业管理费该由谁来支付? 奔湍不息是什么意思? 网络机顶盒配件作用 租房需要交物业费和管理费吗 掀起的波澜。 经久不息什么意思