Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Multiple Plans  [new]
alienslon
Member

Откуда: оттуда
Сообщений: 154
Ситуация такая :
Сравниваю 2 периода - в одном все хорошо(Первый период) в другом тормоза. прикреплен 1 файл.

К сообщению приложен файл. Размер - 131Kb
27 июн 12, 15:39    [12783491]     Ответить | Цитировать Сообщить модератору
 Re: Multiple Plans  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
alienslon
Ситуация такая :
Сравниваю 2 периода - в одном все хорошо(Первый период) в другом тормоза.


ага
27 июн 12, 15:42    [12783515]     Ответить | Цитировать Сообщить модератору
 Re: Multiple Plans  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
alienslon
Ситуация такая :
Сравниваю 2 периода - в одном все хорошо(Первый период) в другом тормоза. прикреплен 1 файл.

Присоединяюсь к поздравлениям предыдущего оратора.
27 июн 12, 15:47    [12783555]     Ответить | Цитировать Сообщить модератору
 Re: Multiple Plans  [new]
alienslon
Member

Откуда: оттуда
Сообщений: 154
Смотрю Top 10 SQL Comparison by Buffer Gets на первую строчку

К сообщению приложен файл. Размер - 97Kb
27 июн 12, 16:04    [12783702]     Ответить | Цитировать Сообщить модератору
 Re: Multiple Plans  [new]
alienslon
Member

Откуда: оттуда
Сообщений: 154
Вот сам sql который как я полагаю вызывает проблемы
SELECT A.DCPL_ID, A.DCTP_DCTP_ID, A.DCCL_DCCL_ID, A.DCST_DCST_ID, A.RTPL_RTPL_ID, A.DCMR_DCMR_ID AS DCMR_USE_ID,
A.DCMR_DCMR_ID1 AS DCMR_WAIT_ID, B.VOLUME, B.OPEN_DATE, B.PERIOD_TYPE, C.DURATION, C.DURATION_WAIT,
C.START_USE AS START_DISCOUNT_USE, C.END_USE AS END_DISCOUNT_USE
FROM BIS.DISCOUNT_PLANS A,
BIS.SUBS_DISCOUNT_PLAN_VOLUMES B, BIS.DISCOUNT_PLAN_HISTORIES C
WHERE B.SUBS_SUBS_ID = :b1 AND A.DCPL_ID = NVL(null , A.DCPL_ID) AND B.PERIOD_TYPE =:b2
AND A.DCPL_ID = B.DCPL_DCPL_ID AND A.DCPL_ID = C.DCPL_DCPL_ID AND
C.START_DATE < :b3 AND C.END_DATE >= :b4

нахожу его v v$sql и делаю
select * from
table(dbms_xplan.display_cursor('8bgdtvm0cc2zh',null,'+peeked_binds'));

1 SQL_ID 8bgdtvm0cc2zh, child number 1
2 -------------------------------------
3 SELECT A.DCPL_ID, A.DCTP_DCTP_ID, A.DCCL_DCCL_ID, A.DCST_DCST_ID, A.RTPL_RTPL_ID, A.DCMR_DCMR_ID AS
4 DCMR_USE_ID, A.DCMR_DCMR_ID1 AS DCMR_WAIT_ID, B.VOLUME, B.OPEN_DATE, B.PERIOD_TYPE, C.DURATION,
5 C.DURATION_WAIT, C.START_USE AS START_DISCOUNT_USE, C.END_USE AS END_DISCOUNT_USE FROM DISCOUNT_PLANS
6 A, SUBS_DISCOUNT_PLAN_VOLUMES B, DISCOUNT_PLAN_HISTORIES C WHERE B.SUBS_SUBS_ID = :B4 AND A.DCPL_ID =
7 NVL(:B3 , A.DCPL_ID) AND B.PERIOD_TYPE = :B2 AND A.DCPL_ID = B.DCPL_DCPL_ID AND A.DCPL_ID =
8 C.DCPL_DCPL_ID AND C.START_DATE < :B1 AND C.END_DATE >= :B1
9
10 Plan hash value: 4251487049
11
12 ---------------------------------------------------------------------------------------------------------------
13 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
14 ---------------------------------------------------------------------------------------------------------------
15 | 0 | SELECT STATEMENT | | | | 57 (100)| |
16 | 1 | CONCATENATION | | | | | |
17 |* 2 | FILTER | | | | | |
18 |* 3 | HASH JOIN | | 23 | 2024 | 51 (2)| 00:00:01 |
19 |* 4 | HASH JOIN | | 23 | 1035 | 48 (3)| 00:00:01 |
20 |* 5 | TABLE ACCESS BY INDEX ROWID | SUBS_DISCOUNT_PLAN_VOLUMES | 23 | 529 | 42 (0)| 00:00:01 |
21 |* 6 | INDEX RANGE SCAN | SDPV_PK | 45 | | 3 (0)| 00:00:01 |
22 |* 7 | TABLE ACCESS FULL | DISCOUNT_PLANS | 545 | 11990 | 5 (0)| 00:00:01 |
23 |* 8 | TABLE ACCESS FULL | DISCOUNT_PLAN_HISTORIES | 556 | 23908 | 3 (0)| 00:00:01 |
24 |* 9 | FILTER | | | | | |
25 |* 10 | TABLE ACCESS BY INDEX ROWID | SUBS_DISCOUNT_PLAN_VOLUMES | 1 | 23 | 3 (0)| 00:00:01 |
26 | 11 | NESTED LOOPS | | 1 | 88 | 6 (0)| 00:00:01 |
27 | 12 | NESTED LOOPS | | 1 | 65 | 3 (0)| 00:00:01 |
28 | 13 | TABLE ACCESS BY INDEX ROWID| DISCOUNT_PLANS | 1 | 22 | 1 (0)| 00:00:01 |
29 |* 14 | INDEX UNIQUE SCAN | DCPL_PK | 1 | | 0 (0)| |
30 |* 15 | TABLE ACCESS BY INDEX ROWID| DISCOUNT_PLAN_HISTORIES | 1 | 43 | 2 (0)| 00:00:01 |
31 |* 16 | INDEX RANGE SCAN | DCPH_DCPL_FK | 1 | | 1 (0)| 00:00:01 |
32 |* 17 | INDEX RANGE SCAN | SDPV_PK | 1 | | 2 (0)| 00:00:01 |
33 ---------------------------------------------------------------------------------------------------------------
34
35 Peeked Binds (identified by position):
36 --------------------------------------
37
38 1 - :B4 (NUMBER): 2108491
39 2 - :B3 (NUMBER): (null)
40 3 - :B2 (CHAR(30), CSID=35): 'U'
41 4 - :B1 (DATE): 06/27/12 11:10:01
42 5 - :B1 (DATE, Primary=4)
43
44 Predicate Information (identified by operation id):
45 ---------------------------------------------------
46
47 2 - filter(:B3 IS NULL)
48 3 - access("A"."DCPL_ID"="C"."DCPL_DCPL_ID")
49 4 - access("A"."DCPL_ID"="B"."DCPL_DCPL_ID")
50 5 - filter("B"."PERIOD_TYPE"=:B2)
51 6 - access("B"."SUBS_SUBS_ID"=:B4)
52 7 - filter("A"."DCPL_ID" IS NOT NULL)
53 8 - filter(("C"."START_DATE"<:B1 AND "C"."END_DATE">=:B1))
54 9 - filter(:B3 IS NOT NULL)
55 10 - filter("B"."PERIOD_TYPE"=:B2)
56 14 - access("A"."DCPL_ID"=:B3)
57 15 - filter(("C"."START_DATE"<:B1 AND "C"."END_DATE">=:B1))
58 16 - access("A"."DCPL_ID"="C"."DCPL_DCPL_ID")
59 17 - access("B"."SUBS_SUBS_ID"=:B4 AND "A"."DCPL_ID"="B"."DCPL_DCPL_ID")
60
27 июн 12, 16:06    [12783723]     Ответить | Цитировать Сообщить модератору
 Re: Multiple Plans  [new]
alienslon
Member

Откуда: оттуда
Сообщений: 154
Оракл говорит что у этого запроса Multiple execution plans тоесть как я понимаю в первом периоде был один план во втором другой.

Статистика собирается регулярно по всем таблицам этого запроса ....как лечить такую болячку?
27 июн 12, 16:10    [12783748]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить