powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный план выполнение запроса для разных пользователей
33 сообщений из 33, показаны все 2 страниц
Разный план выполнение запроса для разных пользователей
    #39817194
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База на Oracle 10g.
Имеются две одинаковые по структуре таблицы (индексы на поля тоже одинаковые). Эти таблицы через union all соединены во View.
Была создана третья таблица с такой же структурой и индексами и добавлена её во view.
После этого select по view у пользователя-создателя с правами администратора выполняется быстро.
У всех остальных пользователей - медленно.
Анализ плана показал, что в первом случае индексы применяются в поиске, во втором случае - идет full scan table.
Почему так?
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817195
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У пользователей в их схемах объекты с идентичными названиями, поэтому запросы выглядят одинаково, а используют разные таблицы/индексы/представления. Например.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817200
Фотография Vivat!San
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗурбаганАнализ плана показал, что в первом случае индексы применяются в поиске, во втором случае - идет full scan table.
Почему так?

Планы выполнения может зависеть от окружения оптимизатора, смотреть и сравнивать.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817203
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jan2aryУ пользователей в их схемах объекты с идентичными названиями
Вот прям так взяли и разыменовались объекты, на которых базируется view, в локальные объекты других схем...
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817206
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousjan2aryУ пользователей в их схемах объекты с идентичными названиями
Вот прям так взяли и разыменовались объекты, на которых базируется view, в локальные объекты других схем...Да, надо читать внимательнее. Хотя еще есть шанс, что у них и вью тоже у каждого свое.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817207
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не... обращение идет к одним и тем же таблицам.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817210
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗурбаганНе... обращение идет к одним и тем же таблицам.
Снимаете 10053 в обоих случаях и сравнительно изучаете. Муторно, но надежно :)
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817215
witte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зурбаган,

А клиент при соединении одинаковый используется?
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817218
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗурбаганНе... обращение идет к одним и тем же таблицам.
Это утверждение подкреплено проверкой?

select * from dba_objects where object_name = 'TABLE_NAME';
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817219
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
witte,
Да, клиент одинаковый.
Единственное - доступ пользователям дается через роли. Grant select только на view, на таблицы во вью - нет. Но это не должно влиять.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817230
Фотография Vivat!San
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v$sys_optimizer_env

v$sess_optimizer_env
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817235
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
andrey_anonymousЗурбаганНе... обращение идет к одним и тем же таблицам.
Снимаете 10053 в обоих случаях и сравнительно изучаете. Муторно, но надежно :)+++
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817242
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,
как я в трассировке узнаю почему не применяются индексы?
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817244
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зурбаганxtender,
как я в трассировке узнаю почему не применяются индексы?
ууу... Похоже, что в Вашем случае проще нанять специалиста.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817256
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, все исходят из того, что автор применяет одни и те же запросы от разных юзверей, хотя явно этого он и не обозначал. Возможно это так, но чтобы поверить в это, я прошу автора привести запросы и их планы от разных юзверей.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817270
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AmKad,

Да без разницы, 10053 на все ответит
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817364
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

Или просто покажет, что в FINAL приходят разные запросы без всякого обоснования =()
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817367
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AlexFF__|,

И покажет почему не выбран индексный доступ
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817429
Chukis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже мучился с подобными проблемами, но так и не смог победить.
У меня файл трассировки для 10053 не создается. Для 10046 - нормально.
Уже и alter session set events '10053 trace name context forever, level 1' делал. Пусто в udamp
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817442
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChukisПусто в udampПотому что даже в допотопном Oracle нет такой папки.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817446
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChukisТоже мучился с подобными проблемами, но так и не смог победить.
У меня файл трассировки для 10053 не создается. Для 10046 - нормально.
Уже и alter session set events '10053 trace name context forever, level 1' делал. Пусто в udamp
http://www.sql.ru/faq/faq_topic.aspx?fid=389
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817448
Chukis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex-ls,
это я знаю. Для 10046 это работает. Для 10053 - нет.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817449
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Chukis,

План то из кэша сначала вычистил?
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817473
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChukisДля 10053 - нет.
Для 10053 должен случиться hardparse.
Самый простой способ его обеспечить - поменять comment на таблице перед запуском запроса.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817580
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
andrey_anonymousСамый простой способ его обеспечить - поменять comment на таблице перед запуском запроса.уже не работает этот способ - комменты не инвалидируют курсоры :)
сброс по sql_id:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DECLARE
  name varchar2(50);
  version varchar2(3);
BEGIN
  select regexp_replace(version,'\..*') into version from v$instance;

  if version = '10' then
    execute immediate 
      q'[alter session set events '5614566 trace name context forever']'; -- bug fix for 10.2.0.4 backport
  end if;

  select address||','||hash_value into name
  from v$sqlarea 
  where sql_id like '&sql_id';

  sys.dbms_shared_pool.purge(name,'C',1);

END;
/

...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817691
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderуже не работает этот способ - комменты не инвалидируют курсоры
С какой версии? В 12 вроде как прокатывает.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817727
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, автор обозначил версию 10g.
Во-вторых, для черезпоздних версий:
225598.1Starting in 11g Release 2, you can use this to generate an Optimizer trace for any SQL statement in the cursor cache without having to execute it. The DBMS_SQLDIAG package has been extended to include a procedure called DUMP_TRACE. This procedure, just requires SQL_ID of the statement you wish to generate an Optimizer trace for but it doesn’t require you to re-execute the statement. The procedure will automatically trigger a hard parse of the statement to generate the trace.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817728
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
andrey_anonymous,

18 под рукой прямо сейчас нет, но в 19 уже точно не инвалидирует:
test
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
set echo on;
select version from v$instance;
create table xxtest as select level id from dual connect by level<=1e3;
call dbms_stats.gather_table_stats(user,'xxtest');
select * from xxtest where id = 4;
select * from xxtest where id = 4;
select * from xxtest where id = 4;
select * from xxtest where id = 4;
select * from xxtest where id = 4;
select sql_id,s.executions, s.loads, s.invalidations from v$sql s where sql_text like 'select * from xxtest where id = 4%';
comment on table xxtest is 'xxtest';
select * from xxtest where id = 4;
select sql_id,s.executions, s.loads, s.invalidations from v$sql s where sql_text like 'select * from xxtest where id = 4%';
set echo off;


19.3
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
SQL> select version from v$instance;

VERSION
-----------------
19.0.0.0.0
SQL> create table xxtest as select level id from dual connect by level<=1e3;
SQL> call dbms_stats.gather_table_stats(user,'xxtest');
SQL> select * from xxtest where id = 4;

        ID
----------
         4
SQL> select * from xxtest where id = 4;

        ID
----------
         4
SQL> select * from xxtest where id = 4;

        ID
----------
         4
SQL> select * from xxtest where id = 4;

        ID
----------
         4
SQL> select * from xxtest where id = 4;

        ID
----------
         4
SQL> select sql_id,s.executions, s.loads, s.invalidations from v$sql s where sql_text like 'select * from xxtest where id = 4%';

SQL_ID        EXECUTIONS      LOADS INVALIDATIONS
------------- ---------- ---------- -------------
1905x4g80dfjp          5          1             0
SQL> comment on table xxtest is 'xxtest';
SQL> select * from xxtest where id = 4;

        ID
----------
         4
SQL> select sql_id,s.executions, s.loads, s.invalidations from v$sql s where sql_text like 'select * from xxtest where id = 4%';

SQL_ID        EXECUTIONS      LOADS INVALIDATIONS
------------- ---------- ---------- -------------
1905x4g80dfjp          6          1             0

...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817733
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
-2-,

на версию я не обратил внимания. 10 сейчас это, конечно, жесть...
а насчет
225598.1The DBMS_SQLDIAG package has been extended to include a procedure called DUMP_TRACE.наигрался я в свое время с этим, и нарывался несколько раз на то, что при его вызове иногда строятся совсем другие планы. в итоге пришел к выводу, что лучше включить ивент трейс rdbms.SQL_Optimizer.* на конкретный sql_id и флашануть его план
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817738
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
225598.1The DBMS_SQLDIAG package has been extended to include a procedure called DUMP_TRACE
Bug 23184272 : DBMS_SQLDIAG.DUMP_TRACE USE INVOKER CBO ENV INSTEAD OF CHILD CURSOR
Bug 18195633 : DBMS_SQLDIAG.DUMP_TRACE DOES NOT SHOW EXECUTION PLAN OF CARDINALITY FEEDBACK
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817846
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что интересно - если пользователю дать админские права, то запросы по вью отрабатыватся быстро.

Попробовал сделать во вью конструкцию:
select * from ( select * from table1 union all select * from table2 union all select * from table3)
и под под простыми пользователями запросы стали отрабатываться нормально.

Костыль, конечно, но терпимо.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817923
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗурбаганЧто интересно
Продолжайте наблюдение.
...
Рейтинг: 0 / 0
Разный план выполнение запроса для разных пользователей
    #39817943
Фотография Victor Cookin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зурбаган,

analyse не делали ещё?
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный план выполнение запроса для разных пользователей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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