powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный план выполнение запроса для разных пользователей
8 сообщений из 33, страница 2 из 2
Разный план выполнение запроса для разных пользователей
    #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
8 сообщений из 33, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный план выполнение запроса для разных пользователей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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