Examine the parallelism parameters for your instance:
What are true about the execution of the query?
A.
It will execute in parallel only if the LINEITEM table has a dictionary DOP defined.
B.
DOP for the statement is determined by the dictionary DOP of the accessed objects.
C.
It is generated to execute in parallel.
D.
It will execute in parallel only if the estimated execution time is 10 or more seconds.
E.
DOP for the statement is calculated automatically.
F.
It may execute serially.
Explanation:
E:
F (not C): It may execute serially. See note below.
Incorrect:
A, B: Dictionary DOP not used with PARALLEL (AUTO) hint.
D: The default value of parallel_min_time_threshold is 30 (not 10) seconds.
Note:
* parallel_min_percent
PARALLEL_MIN_PERCENT operates in conjunction with PARALLEL_MAX_SERVERS and
PARALLEL_MIN_SERVERS. It lets you specify the minimum percentage of parallel executionprocesses (of the value of PARALLEL_MAX_SERVERS) required for parallel execution. Setting
this parameter ensures that parallel operations will not execute sequentially unless adequate
resources are available. The default value of 0 means that no minimum percentage of processes
has been set.
Consider the following settings:
PARALLEL_MIN_PERCENT = 50
PARALLEL_MIN_SERVERS = 5
PARALLEL_MAX_SERVERS = 10
If 8 of the 10 parallel execution processes are busy, only 2 processes are available. If you then
request a query with a degree of parallelism of 8, the minimum 50% will not be met.
A, B is incorrect:
/*+ parallel(AUTO) */ hint overwrite parameters parallel_degree_policy set to LIMITED.
AUTO means Oracle Database automatically decides if a statement should execute in parallel or not and what DOP it should use. Oracle Database also determines if the statement can be executed immediately or if it is queued until more system resources are available. Finally, Oracle Database decides if the statement can take advantage of the aggregated cluster memory or not.
C for me is incorrect:
AUTO DOP will decide if the statement should execute in parallel or not.
D is incorrect:
The statement will not necessary execute in parallel. After an estimated execution time of 10 seconds Oracle will computed the best DOP to execute the statement. But it will not ensure that statement will execute in parallel. For example, if computed DOP is 1 then the statement is execute like a serial statement.
E is incorrect:
DOP is calculated automatically if estimated execution time of the statement is greater than parallel_min_time_threshold.
F. is correct. The statement may execute serially. We are not sure but it could happen.
D seems to be correct along with E.
as parallel_min_time_threshold value is 10 seconds as default value for AUTO.
PS the question is confusing but for me…
DOP is computed automatically if estimated execution time ot the statement is greater than parallel_min_time_threshold. So answer “E” is not sufficient to be correct.
To compute actual DOP oracle takes the min(parallel_degree_limit,auto computed dop).
If actual dop is greater than available parallel servers. The statement could be queue for some short period of time until the requested amount of resources becomes available. By queuing statements rather than allowing them to execute with a lower DOP or even serially
, Oracle guarantees that any statement will execute with the requested DOP.
Explanaition is inncorect. Default value for PARALLEL_MIN_TIME_THRESHOLD is 10, not 30 seconds. So D – correct answer.
From oracle doc:
PARALLEL_MIN_TIME_THRESHOLD specifies the minimum execution time a statement should have before the statement is considered for automatic degree of parallelism. By default, this is set to 10 seconds. Automatic degree of parallelism is only enabled if PARALLEL_DEGREE_POLICY is set to AUTO or LIMITED.
http://docs.oracle.com/cd/E18283_01/server.112/e17110/initparams185.htm
D+E+F IMHO