Thanks for the question, Poo.
Asked: July 28, 2016 - 8:42 am UTC
Last updated: August 01, 2016 - 3:47 pm UTC
Version: 12c
Viewed 1000+ times
You Asked
I'm using Oracle 12c. I'm calling mutiple procedures from Python in parallel (usually 4-5). I make sure nothing else is running at that time.
All the target and source tables has Parallel 32 Clause .
I'm using hints ENABLE_PARALLEL_DML, PARALLEL in Insert Clause and using PARALLEL hint in select clause.
I have used append clause also, wherever Plan Note suggested.
But still to my surprise , sometimes same procedure query runs with good DOP , sometimes with 1.
Plan Note says, "Object not decorated with Parallel clause".
Below are the DOP parameters setting:
parallel_adaptive_multi_user boolean TRUE
parallel_automatic_tuning boolean FALSE
parallel_degree_level integer 100
parallel_degree_limit string CPU
parallel_degree_policy string ADAPTIVE
parallel_execution_message_size integer 16384
parallel_force_local boolean FALSE
parallel_instance_group string
parallel_io_cap_enabled boolean FALSE
parallel_max_servers integer 752
parallel_min_percent integer 0
parallel_min_servers integer 128
parallel_min_time_threshold string AUTO
parallel_server boolean FALSE
parallel_server_instances integer 1
parallel_servers_target integer 512
parallel_threads_per_cpu integer 2
------------------------------------
CPU parameters:
resource_limit boolean TRUE
resource_manager_cpu_allocation integer 32
resource_manager_plan string DEFAULT_PLAN
I tried running gather stats as below:
exec DBMS_STATS.GATHER_TABLE_STATS (ownname => 'own_name' , tabname => 'tab_name' , estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,granularity => 'GLOBAL AND PARTITION',METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO', degree => DBMS_STATS.DEFAULT_DEGREE);
Still the problem persists. Please guide me why optimizer choose new DOP under similar conditions.
and Chris said...
Is this answer out of date? If it is, please let us know via a Comment