Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только... / 21 сообщений из 21, страница 1 из 1
13.04.2017, 11:26
    #39437818
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
...Помогло только до часа ночи. Потом, при выполнении в 1 час ночи, вдруг(!) происходит странный дополнительный AUTO-CAPTURE
(хотя и с тем же sql_handle)

Сначала выявили, что некий тормозной запрос выполняемый оракловским PERFSTAT-ом, можно ну очень прилично разогнать моим любимым хинтом (no_query_transformation), установили baseline cледующим образом, предварительно сгенерив хорошие sql_id и plan вот так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare 
  lFullTxt v$sqlarea.sql_FullText%type; 
begin
  select sql_FullText
    into lFullTxt
    from v$sqlarea   
   where sql_id = 'd2tjms4f6tt9v';
  dbms_output.put_line( 'lFullTxt: ' || lFullTxt );   
  lFullTxt := replace( lFullTxt, 'SELECT /*+ index(spu) */ SPU.PLAN_HASH_VALUE', 'SELECT /*+ no_query_transformation */ /*Baseline-Patch-Clon-SQL/12-apr-2017 14:15 with the no_query_transf-Hint*/ SPU.PLAN_HASH_VALUE' );
  dbms_output.put_line( 'lFullTxt: ' || lFullTxt );   
  execute immediate lFullTxt using 8356, 1294015047,	1;	 
  ROLLBACK;
end;



установили вот так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
  l_sql_id_src varchar2(13)    := '9yyx2zpzd127s'; --good SQL_ID!
  l_plan_hash_value_src number := 4081220914;      --good Plan_Hash_Value! select distinct( Plan_Hash_Value ) from v$sql_plan where sql_id = '9yyx2zpzd127s'
  l_sql_id_trg  varchar2(13)   := 'd2tjms4f6tt9v'; --bad SQL_ID!  
  l_sql_text_trg clob;  
  l_res number;  
begin
  select a.sql_fulltext into l_sql_text_trg
    from v$sqlarea a 
   where a.sql_id = l_sql_id_trg;
  l_res := dbms_spm.load_plans_from_cursor_cache( 
              sql_id => l_sql_id_src, 
              plan_hash_value => l_plan_hash_value_src, 
              sql_text => l_sql_text_trg);
  dbms_output.put_line( 'dbms_spm.load_plans+l_res: ' || l_res );  
end;  


и он работает очень быстро до сих пор! (если вызвать 1ю конструкцию( закоментировав -- lFullTxt := replace )

результат запроса:
Код: plsql
1.
select * from dba_sql_plan_baselines b order by created


можно найти в приложенном файле!

P.S. надо сказать, что в районе часа ночи (по джобу) происходит выполнение некоего shrink-а PERFSTAT-ных данных! Очевидно это как то негативно влияет. Но я абсолютно не понимаю КАК!
...
Рейтинг: 0 / 0
13.04.2017, 11:37
    #39437829
free_blocks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnik,

вопрос-то в чем. видно, что есть один загруженный ругами план, активный и 3 загружены через auto-capture, неактивны и не используются. Ничего не происходит.

Если ты не хочешь, чтобы планы захватывались, то сделай твой загруженный FIXED.
...
Рейтинг: 0 / 0
13.04.2017, 15:10
    #39437994
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
free_blocks,

громаднейшее спасибо!!! Я не знал раньше про этот флаг.
...
Рейтинг: 0 / 0
13.04.2017, 15:15
    #39437998
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
free_blocks...и 3 загружены через auto-capture, неактивны и не используются.
P.S. вот только про то что они не используются, лично у меня есть большие сомнения... Иначе бы откуда начиная с часу ночи опять пошли тормоза????
(посмотрим завтра утром, насколько нам поможет FIXED)
...
Рейтинг: 0 / 0
13.04.2017, 16:28
    #39438096
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
free_blocks Если ты не хочешь, чтобы планы захватывались, то сделай твой загруженный FIXED.

кстати не помогло это, всё-таки в итоге! :-(
В ручном режиме (под SYS в TOAD-e) всё летает, но вот боевой PERFSTAT-джоб (который ежечасно) запускает проблематичный SQL-запрос, похоже этот мой новый fixed-baselines просто игнорирует и стартует старый тормозной план :-(
...
Рейтинг: 0 / 0
13.04.2017, 16:57
    #39438125
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnik,

enabled=no ?
...
Рейтинг: 0 / 0
13.04.2017, 17:01
    #39438131
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
и авто-тюнинг вам в целом сильно там нужен?
...
Рейтинг: 0 / 0
13.04.2017, 17:09
    #39438137
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DВАDBAshnik,

enabled=no ?

не, почему, в YES! (как было так и осталось)


у меня ещё сомнения насчёт параметров - правильно ли передаю??

declare
l_sql_id_src varchar2(13) := '9yyx2zpzd127s'; --good SQL_ID!
l_plan_hash_value_src number := 4081220914; --good Plan_Hash_Value! select distinct( Plan_Hash_Value ) from v$sql_plan where sql_id = '9yyx2zpzd127s'
l_sql_id_trg varchar2(13) := 'd2tjms4f6tt9v'; --bad SQL_ID!
... (см выше!!!(

Хотя локально то (user SYS, модуль TOAD) всё работает! (drop-аешь base-line - тормозит. Снова создаёшь - снова "летает"!)
(и главное под юзером PERFSTAT вчера с 15 часов до часу ночи baseline тоже помогал. А сейчас (тот что с FIXED=YES) не помогает!)
Мистика какае-то! :-(
...
Рейтинг: 0 / 0
13.04.2017, 17:17
    #39438147
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnik,

а левым планам в no
...
Рейтинг: 0 / 0
13.04.2017, 17:31
    #39438161
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DВАDBAshnik,

а левым планам в no

левый план сначала подгрузить нужно?
Это вот так делается?: (сорри! Опыта очень мало пока!)

declare
l_sql_id_src varchar2(13) := 'd2tjms4f6tt9v'; --bad SQL_ID!
l_plan_hash_value_src number := 725986381; --bad Plan_Hash_Value! select distinct( Plan_Hash_Value ) from v$sql_plan where sql_id = 'd2tjms4f6tt9v' --> 725986381
l_sql_id_trg varchar2(13) := 'd2tjms4f6tt9v'; --bad SQL_ID!
l_sql_text_trg clob;
l_res number;
begin
select a.sql_fulltext into l_sql_text_trg
from v$sqlarea a
where a.sql_id = l_sql_id_trg;
l_res := dbms_spm.load_plans_from_cursor_cache(
sql_id => l_sql_id_src,
plan_hash_value => l_plan_hash_value_src,
sql_text => l_sql_text_trg
,fixed => 'NO'
,enabled => 'NO' ); --13.04.2017/запретить плохой план!!!
dbms_output.put_line( 'dbms_spm.load_plans+l_res: ' || l_res );
end;
...
Рейтинг: 0 / 0
13.04.2017, 17:32
    #39438162
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare
l_sql_id_src varchar2(13) := 'd2tjms4f6tt9v'; --bad SQL_ID!
l_plan_hash_value_src number := 725986381; --bad Plan_Hash_Value! select distinct( Plan_Hash_Value ) from v$sql_plan where sql_id = 'd2tjms4f6tt9v' --> 725986381
l_sql_id_trg varchar2(13) := 'd2tjms4f6tt9v'; --bad SQL_ID!
l_sql_text_trg clob;
l_res number;
begin
select a.sql_fulltext into l_sql_text_trg
from v$sqlarea a
where a.sql_id = l_sql_id_trg;
l_res := dbms_spm.load_plans_from_cursor_cache(
sql_id => l_sql_id_src,
plan_hash_value => l_plan_hash_value_src,
sql_text => l_sql_text_trg
,fixed => 'NO'
,enabled => 'NO' ); --13.04.2017/запретить плохой план!!!
dbms_output.put_line( 'dbms_spm.load_plans+l_res: ' || l_res );
end; 
...
Рейтинг: 0 / 0
14.04.2017, 00:48
    #39438355
usolcew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnik,

Baseline на практике кроме пойманных особенностей может быть нестабилен, а использоваться будет только при полной воспроизводимости закреплённого плана

Для добавления в запрос одного хинта проще и надёжнее использовать SQL Patch
...
Рейтинг: 0 / 0
14.04.2017, 09:28
    #39438463
д0kХ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnik ,
Коллега, мне кажется, ИМХО, что вашего пациента нужно лечить не ректально, а перорально ,
через сбор и фиксацию статистики CBO.
...
Рейтинг: 0 / 0
14.04.2017, 14:06
    #39438736
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
usolcew,


SQL-patch надёжнее? Откуда дровишки? (в смысле есть ли пруф на это?)
...
Рейтинг: 0 / 0
14.04.2017, 14:18
    #39438748
free_blocks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnikusolcew,


SQL-patch надёжнее? Откуда дровишки? (в смысле есть ли пруф на это?)

Патчи и профайлы являются дополнительной информацией, которую учитывает оптимизатор при выборе плана. SPM фиксирует план выполнения.

По ситуации, нужно из ASH извлечь историю выполнения запроса и посмотреть, какие был планы выполнения. Очень вероятно, что выполнялись другие SQL_ID, к которым SPM не привязан. Также нужно через dbms_xplan посмотреть на план, чтобы там в самом конце было упоминание об использовании baseline.

Ну и в dba_sql_plan_baselines есть поле, которое показывает, когда baseline был последний раз применен.
...
Рейтинг: 0 / 0
14.04.2017, 17:29
    #39438901
usolcew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
free_blocks,

Патчи и профайлы являются дополнительной информацией, которую учитывает оптимизатор при выборе плана
- аналогично хинтам, но с бОльшим приоритетом

Ну и в dba_sql_plan_baselines есть поле, которое показывает, когда baseline был последний раз применен
Note that the “last executed” timestamp is not refreshed continuously but on a weekly basis, so expect to see the timestamps for active baselines to take a least a week to reflect that they have been used
...
Рейтинг: 0 / 0
14.04.2017, 20:06
    #39438978
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
Спасибо коллеги. Поизучаю! Но главный вопрос для нас остаётся открытым:

DBAshnikSQL-patch надёжнее? Откуда дровишки? (в смысле есть ли пруф на это?)
...
Рейтинг: 0 / 0
10.05.2017, 12:26
    #39450694
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnikСпасибо коллеги. Поизучаю! Но главный вопрос для нас остаётся открытым:

DBAshnikSQL-patch надёжнее? Откуда дровишки? (в смысле есть ли пруф на это?)

реально никто не знает??
...
Рейтинг: 0 / 0
11.05.2017, 20:28
    #39451650
тынц.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnikреально никто не знает??
пруф не дам, да думаю такого и нет. тем более патч менее официально одобряемый чем baselin-ы.
но последние, по крайней мере в 11g любят иногда становится непредсказуемыми - раз, и не хочет использовать, хоть тресни, через время опять использует. Не слишком часто, но бывает такое.
...
Рейтинг: 0 / 0
02.06.2017, 13:04
    #39464604
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
тынц.DBAshnikреально никто не знает??
пруф не дам, да думаю такого и нет. тем более патч менее официально одобряемый чем baselin-ы.
но последние, по крайней мере в 11g любят иногда становится непредсказуемыми - раз, и не хочет использовать, хоть тресни, через время опять использует. Не слишком часто, но бывает такое.

ну cпасибочки хоть на этом!

Коллеги, был бы мего-счастлив взглянуть всё-же на соответствующий пруф (он же тынц) :-) ! Так как вопрос не праздный: либо baselines (в пользу которых пока было принято у нас высочайшее решение - юзать!) остаются, либо нет. Это уйма работы, и на пора уже определяться, пока опыт скорее негативный....
Заранее огромное спасибо!
...
Рейтинг: 0 / 0
02.06.2017, 16:54
    #39464868
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только...
DBAshnikтынц.пропущено...

пруф не дам, да думаю такого и нет. тем более патч менее официально одобряемый чем baselin-ы.
но последние, по крайней мере в 11g любят иногда становится непредсказуемыми - раз, и не хочет использовать, хоть тресни, через время опять использует. Не слишком часто, но бывает такое.

ну cпасибочки хоть на этом!

Коллеги, был бы мего-счастлив взглянуть всё-же на соответствующий пруф (он же тынц) :-) ! Так как вопрос не праздный: либо baselines (в пользу которых пока было принято у нас высочайшее решение - юзать!) остаются, либо нет. Это уйма работы, и на пора уже определяться, пока опыт скорее негативный....
Заранее огромное спасибо!

мы sql profiles используем, за три года не видел, что бы с ними были проблемы.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / установили Baseline на некий sql, выполняющийся ежечасно(от perfstat). Помогло только... / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]