Oracle11g并行参数一、参数功能1.1参数:PARALLEL_ADAPTIVE_MULTI_USER参数类型Boolean默认值true可修改性ALTERSYSTEM取值范围true|false功能:被设置为true时,使自适应算法可用,该算法被设计来改善使用并行的多用户环境的性能。该算法在查询开始时基于系统负载来自动减少被要求的并行度。实际的并行度基于默认、来自表或hints的并行度,然后除以一个缩减因数。该算法假设系统已经在单用户环境下进行了最优调整。表和hints用默认的并行度。1.2PARALLEL_AUTOMATIC_TUNING参数类型Boolean默认值false可修改性No取值范围true|false注意:PARALLEL_AUTOMATIC_TUNING已经被废弃。保留它仅仅是为了向后兼容。当该参数设置为true时,Oracle决定控制并行执行的所有参数的默认值。除了设置这个参数,你必须确定系统中目标表的PARALLEL子句。Oracle于是就会自动调整所有后续的并行操作。如果你在之前的版本里用了并行执行且现在该参数为true,那么你将会因减少了共享池中分配的内存需求,而导致对共享池需求的减少。目前,这些内存会从largepool中分配,如果large_pool_size没被确定,那么系统会自动计算出来。作为自动调整的一部分,Oracle将会使parallel_adaptive_multi_user参数可用。如果需要,你也可以修改系统提供的默认值。1.3PARALLEL_DEGREE_LIMIT参数类型String语法PARALLEL_DEGREE_LIMIT={CPU|IO|integer}默认值CPU可更改性ALTERSESSION,ALTERSYSTEM是否基础No在并行度自动调整的情况下,Oracle自动决定一个语句是否并行执行和用什么并行度执行。优化器基于语句的资源需求自动决定一个语句的并行度。然而,为了确保并行服务器进程不会导致系统过载,优化器会限制使用的并行度。这个限制通过PARALLEL_DEGREE_LIMIT来强制实施。值:■CPU最大并行度被系统CPU数限制。计算限制的公式为PARALLEL_THREADS_PER_CPU*CPU_COUNT*可用实例数(默认为簇中打开的所有实例,但也能通过PARALLEL_INSTANCE_GROUP或service定义来约束),这是默认的。■IO优化器能用的最大并行度被系统的IO容量限制。系统总吞吐除以每个进程的最大IO带宽计算出。为了使用该IO设置,你必须在系统上运行DBMS_RESOURCE_MANAGER.CALIBRATE_IO过程。该过程将计算系统总吞吐和单个进程的最大IO带宽。■integer当自动并行度被激活时,该参数的数字值确定优化器为一个SQL语句能选择的最大并行度。PARALLEL_DEGREE_POLICY被设置为AUTO或LIMITED时,自动并行度才可以使用。1.4PARALLEL_DEGREE_POLICY参数类型String语法PARALLEL_DEGREE_POLICY={MANUAL|LIMITED|AUTO}默认值MANUAL可修改性ALTERSESSION,ALTERSYSTEM是否基础NoPARALLEL_DEGREE_POLICY确定是否开启自动并行度,语句排队和内存并行执行。值:注意:如果一个PARALLELhint在语句级被使用,无论PARALLEL_DEGREE_POLICY值设置成什么,自动并行度都将被开启。■MANUAL关闭自动并行度,语句排队和内存并行执行。这恢复并行执行到11.2之前的行为。这是默认设置。■LIMITED对某些语句开启自动并行执行,但语句排队和内存并行执行被关闭。自动并行度仅仅适用那些存取显式用PARALELL语句标示默认并行度的表或索引的语句。并不存取这些被显式标示默认并行度的表或索引的语句将保持手工(MANUAL)行为。■AUTO开启自动并行度,语句排队和内存并行执行。1.5PARALLEL_EXECUTION_MESSAGE_SIZE参数类型Integer默认值Operatingsystem-dependent可行改性No值范围最小值2148最大值:32768,但一些操作系统也许有一个较小值OracleRAC多个实例必须有相同的值PARALLEL_EXECUTION_MESSAGE_SIZE确定并行执行(前面指并行查询,PDML,并行恢复,复制)所用信息的大小。在大多数平台上,默认值如下:■16384字节,如果COMPATIBLE被设置为11.2.0或更高■4096字节如果COMPATIBLE被设置为小于11.2.0并且PARALLEL_AUTOMATIC_TUNING被设置为true■2148字节如果COMPATIBLE被设置为小于11.2.0并且PARALLEL_AUTOMATIC_TUNING被设置为false默认值对大多数应用来说是足够的。值越大,要求共享池越大。较大的值会带来较好的性能,但会消耗较多的内存。因此,复制并不能从增加该值中受益。注意:当PARALLEL_AUTOMATIC_TUNING被设置为TRUE时,信息缓冲在大池(largepool)中分配。这种情况下,默认值一般是较高的。注意参数PARALLEL_AUTOMATIC_TUNING已经被废弃。1.6PARALLEL_FORCE_LOCAL参数类型Boolean默认值false可修改性ALTERSESSION,ALTERSYSTEM值范围true|false是否基础NoPARALLEL_FORCE_LOCAL控制OracleRAC环境下的并行执行。默认情况,被选择执行一个SQL语句的并行服务器进程能在簇中任何或所有OracleRAC节点上操作。通过设置PARALLEL_FORCE_LOCAL为true,并行服务器进程被限制从而都在查询协调器驻留的同一个OracleRAC节点上操作(语句被执行的节点上)。1.7PARALLEL_INSTANCE_GROUP参数类型String语法PARALLEL_INSTANCE_GROUP=service_name|group_name默认值没有默认值;并行执行在所有目前活动的实例上开启可修改性ALTERSESSION,ALTERSYSTEM值范围任何服务名或任何活动实例上INSTANCE_GROUPS参数中确定的任何组名OracleRAC多个实例能有不同的值PARALLEL_INSTANCE_GROUP是一个仅能在并行模式确定的参数。和服务或INSTANCE_GROUPS参数一起使用,它使你能限制并行查询的操作到一定的实例数。注意INSTANCE_GROUPS参数已经被废弃。该参数支持Oracle用来产生并行执行进程的并行实例组。如果和服务一起使用,并行操作将仅在服务中确定的实例上产生并行执行进程。如果和INSTANCEGROUPS一起使用,并行操作将仅在那些INSTANCE_GROUPS参数中确定了相匹配的组的实例上产生并行执行进程。如果被赋予PARALLEL_INSTANCE_GROUP的值是不存在的服务或组名,那么操作将会串行执行。没有并行被使用。1.8PARALLEL_IO_CAP_ENABLED参数类型Boolean默认值false可修改性ALTERSESSION,ALTERSYSTEM值范围true|false是否基础NoOracleRAC多个实例能有不同的值注意:PARALLEL_IO_CAP_ENABLED参数被废弃了。保留它的目的仅仅是为了向后兼容。PARALLEL_DEGREE_LIMIT参数设置为IO时,可以替代该参数。PARALLEL_IO_CAP_ENABLED确定Oracle是否覆盖默认并行度一直到IO系统支持的值。该新值基于资源管理器的IO校验包的结果计算得出。如果PARALLEL_IO_CAP_ENABLED被设置为true并且数据库的IO能力已经被校验过,当IO能力不能支撑可用的CPU数时,则Oracle将减少默认并行度。为了校验IO能力,用DBMS_RESOURCE_MANAGER.CALIBRATE_IO过程来测量系统的IO容量。Oracle计算并行度,以便不超过系统的IO容量。1.9PARALLEL_MAX_SERVERS参数类型Integer默认值PARALLEL_THREADS_PER_CPU*CPU_COUNT*concurrent_parallel_users*5可行改性ALTERSYSTEM值范围0to3600OracleRAC多个实例可以有不同值注意:该参数适用于单实例和RAC模式的并行执行。PARALLEL_MAX_SERVERS确定一个实例并行执行进程和并行恢复进程的最大数。当需求增加时,Oracle数据库从实例启动时的进程数增加到该参数值。公式中,实例上赋予正在使用的concurrent_parallel_users的值和内存管理设置相关。如果自动内存管理被关闭(手工模式),那么concurrent_parallel_users为1。如果PGA自动内存管理被开启,那么concurrent_parallel_users的值为2.如果除了PGA自动内存管理,全局内存管理或SGA内存目标也被使用,那么,concurrent_parallel_users为4。如果你把该参数设置的太低,那么,有些查询也许在查询期间没有可用的并行执行进程可用。如果你把该参数设置太高,那么,内存资源在峰值期间也许会短缺,这也会降低性能。2.0PARALLEL_MIN_PERCENT参数类型Integer默认值0可修改性ALTERSESSION值范围0to100OracleRAC多个实例能有不同的值PARALLEL_MIN_PERCENT使得你确定并行执行需要并行执行进程数的最小百分比。设置该参数确保除非有足够的资源可用,否则,不会执行并行操作。默认值0意味着没进程的最小百分比被设置。考虑以下设置:PARALLEL_MIN_PERCENT=50PARALLEL_MIN_SERVERS=5PARALLEL_MAX_SERVERS=10如果十个并行执行进程中的8个处于繁忙状态,仅两个进程可用。如果接着你提交一个并行度8的查询,那么,最小50%不能被满足。你能和PARALLEL_ADAPTIVE_MULTI_USER参数一起使用该参数。在多用户环境,一个单独的用户或应用能设置PARALLEL_MIN_PERCENT为一个有足够的系统资源和可接受的并行度被返回时使用的最小值。2.1PARALLEL_MIN_SERVERS参数类型Integer默认值0可修改性ALTERSYSTEM值范围0tovalueofPARALLEL_MAX_SERVERSOracleRAC多个实例可以有不同的值注意:该参数使用单实例和RAC环境的并行执行。PARALLEL_MIN_SERVERS确定实例上并行执行进程的最小数。该值是实例启动时Oracle创建的并行执行进程的数目。2.2PARALLEL_MIN_TIME_THRESHOLD参数类型String语法PARALLEL_MIN_TIME_THRESHOLD={AUTO|integer}默认值AUTO可修改性ALTERSESSION,ALTERSYSTEM是否基础NoPARALLEL_MIN_TIME_THRESHOLD确定一个语句被考虑采用自动并行度前一个语句将用的最小执行时间。默认地,它被设置为10s。只有PARALLEL_DEGREE_POLICY被设置为AUTO或LIMITED时,自动并行度才被开启。2.3PARALLEL_SERVERS_TARGET参数类型Integer默认值PARALLEL_THREADS_PER_CPU*CPU_COUNT*concurrent_parallel_users*2可修改性ALTERSYSTEM值范围0toPARALLEL_MAX_SERVERS是否