This may be bug in 11.2.0.3 on exadata, AUTO DOP calculate Incorrect Parallel degree, when parallel hints are used with Auto DOP.
SQL> explain plan for
SELECT /*+PARALLEL(E)*/ SITE_ID, ITEM_NUMBER, SERIAL_NUMBER, PORT_NUMBER, EQUIPMENT_ADDRESSABLE, TRIM(STATUS_DATE)
STATUS_DATE, QUALITY_ASSURANCE_CODE, TRIM(QUALITY_ASSURANCE_DATE) QUALITY_ASSURANCE_DATE, EQUIPMENT_ADDRESS,
EQUIPMENT_OVERRIDE_ACTIVE, INITIALIZE_REQUIRED, PARENTAL_CODE, TEMP_ENABLED, TRIM(TRANSMISSION_DATE) TRANSMISSION_DATE,
DNS_NAME, IP_ADDRESS, FQDN, LOCAL_STATUS, TRIM( LOCAL_STATUS_DATE) LOCAL_STATUS_DATE, SERVER_ID, SERVER_STATUS,
TRIM(SERVER_STATUS_DATE) SERVER_STATUS_DATE, EQUIP_DTL_STATUS, PORT_CATEGORY_CODE, HEADEND, ACCOUNT_NUMBER,
SUB_ACCOUNT_ID, VIDEO_RATING_CODE, PORT_TYPE, SERVICE_CATEGORY_CODE, SERVICE_OCCURRENCE, CREATED_USER_ID, TRIM(DATE_CREATED)
DATE_CREATED, LAST_CHANGE_USER_ID, TRIM(LAST_CHANGE_DATE) LAST_CHANGE_DATE, CABLE_CARD_ID, JOURNAL_DATE
FROM CLE_DUMMY_DETAIL E
WHERE JOURNAL_DATE >= (SELECT LAST_RUN_DATE FROM ETL_SITE_RUN_DATE@ODS.WORLD
WHERE TABLE_NAME = 'xyz' AND SITE_NAME = 'CLE' )
AND JOURNAL_DATE <= (SELECT HEART_BEAT_DATE FROM ETL_SITE_RUN_DATE@ODS.WORLD
WHERE TABLE_NAME = 'xyz' AND SITE_NAME = 'CLE' )
;
Explained.
SQL> @xplan
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 350686579
-----------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ/Ins |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1158 | 203K| 18 (0)| 00:00:01 | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM)| :TQ10000 | 1158 | 203K| 16 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) |
| 3 | PX BLOCK ITERATOR | | 1158 | 203K| 16 (0)| 00:00:01 | Q1,00 | PCWC | |
|* 4 | TABLE ACCESS FULL| CLE_CDO1CPP | 1158 | 203K| 16 (0)| 00:00:01 | Q1,00 | PCWP | |
| 5 | REMOTE | ETL_SITE_RUN_DATE | 1 | 47 | 1 (0)| 00:00:01 | Q1,00 | PCWP | |
| 6 | REMOTE | ETL_SITE_RUN_DATE | 1 | 47 | 1 (0)| 00:00:01 | PODS_~ | R->S | |
-----------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - filter("JOURNAL_DATE">= (SELECT "LAST_RUN_DATE" FROM "ETL_SITE_RUN_DATE" WHERE "SITE_NAME"='CLE' AND
"TABLE_NAME"='xyz') AND "JOURNAL_DATE"<= (SELECT "HEART_BEAT_DATE" FROM "ETL_SITE_RUN_DATE"
WHERE "SITE_NAME"='CLE' AND "TABLE_NAME"='xyz'))
Remote SQL Information (identified by operation id):
----------------------------------------------------
6 - SELECT "SITE_NAME","TABLE_NAME","HEART_BEAT_DATE" FROM "ETL_SITE_RUN_DATE" "ETL_SITE_RUN_DATE" WHERE
"SITE_NAME"='CLE' AND "TABLE_NAME"='xyz' (accessing 'PODS_ETL_CONTROL.WORLD' )
Note
-----
- Degree of Parallelism is 32767 because of hint
31 rows selected.
SQL> show parameter parallel
NAME TYPE VALUE
------------------------------------ -----------
parallel_adaptive_multi_user FALSE
parallel_automatic_tuning FALSE
parallel_degree_limit 8
parallel_degree_policy AUTO
parallel_execution_message_size 16384
parallel_force_local FALSE
parallel_io_cap_enabled FALSE
parallel_max_servers 196
parallel_min_percent 0
parallel_min_servers 2
parallel_min_time_threshold 60
parallel_server TRUE
parallel_server_instances 5
parallel_servers_target 90
parallel_threads_per_cpu 2
recovery_parallelism 0
FileName
----------------
Tested with without DBLINK.
-- Testing this on 11.2.0.3
SQL> select /*+ Parallel(E) */ * from foo e; Execution Plan ---------------------------------------------------------- Plan hash value: 3135133324 -------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time| TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 18M| 1708M| 9922 (1)| 00:00:01| | | | | 1 | PX COORDINATOR | | | | || | | | | 2 | PX SEND QC (RANDOM)| :TQ10000 | 18M| 1708M| 9922 (1)| 00:00:01| Q1,00 | P->S | QC (RAND) | | 3 | PX BLOCK ITERATOR | | 18M| 1708M| 9922 (1)| 00:00:01| Q1,00 | PCWC | | | 4 | TABLE ACCESS FULL| FOO | 18M| 1708M| 9922 (1)| 00:00:01| Q1,00 | PCWP | | -------------------------------------------------------------------------------------------------------------- Note ----- - Degree of Parallelism is 32767 because of hint SQL> connect / as sysdba Connected. SQL> select count(*) from foo; COUNT(*) ---------- 18472960 parallel_adaptive_multi_user TRUE parallel_automatic_tuning FALSE parallel_degree_limit 2 parallel_degree_policy AUTO parallel_execution_message_size 16384 parallel_force_local FALSE parallel_instance_group parallel_io_cap_enabled FALSE parallel_max_servers 135 parallel_min_percent 0 parallel_min_servers 0 parallel_min_time_threshold 1 parallel_server FALSE parallel_server_instances 1 parallel_servers_target 64 parallel_threads_per_cpu 2 recovery_parallelism 0
comparison on 11.2.0.2 and 11.2.0.3
----test case drop table foo; alter session set parallel_degree_policy = auto; alter session set parallel_degree_limit = 2; alter session set parallel_min_time_threshold = 1; create table foo as select * from all_objects where rownum < 16; alter table foo parallel 6; set autotrace traceonly explain select /*+ Parallel(e) */ * from foo e; -------- FOO has a default DOP of 6 11.2.0.3 -- select /*+ Parallel(a) */ * from foo a; --- Degree of Parallelism is 32767 because of hint 11.2.0.2 -- select /*+ Parallel(a) */ * from foo a; -- automatic DOP: Computed Degree of Parallelism is 1 11.2.0.3 select /*+ Parallel */ * from foo; -- - automatic DOP: Computed Degree of Parallelism is 2 11.2.0.2 select /*+ Parallel */ * from foo; -- - automatic DOP: Computed Degree of Parallelism is 2 11.2.0.3 select /*+ Parallel(20) */ * from foo; -- - Degree of Parallelism is 20 because of hint 11.2.0.2 select /*+ Parallel(20) */ * from foo; -- - Degree of Parallelism is 20 because of hint
1 comment:
This is very helpful and I just have one question, what is this xplan you used? I had a xplan and very old. I think yours is very good.
Thank you in advance. If you need I can give you my email address.
Post a Comment
Note: Only a member of this blog may post a comment.