powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замена плана запроса на план с Parallel хинтом
25 сообщений из 26, страница 1 из 2
Замена плана запроса на план с Parallel хинтом
    #40116177
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть приложение с закрытым ядром .
В нем есть генерируемый запрос, который считает данные по одной табличке через count(*).
Данных в табличке собралось очень много (1млрд). И запрос соответственно начал подвисать. А приложуха отваливаться из-за различных таймаутов.

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

А на быстрое решение пытался сделать 2 варианта.

1. Подмена запроса
через
Код: plsql
1.
sys.dbms_advanced_rewrite.declare_rewrite_equivalence

попытался перехватить запрос, и добавить ему условие
Код: plsql
1.
and 1=0



На простых запросах получилось это сделать, но именно на моем запросе, с использованием bind переменных и несколькими подзапросами, данный механизм отказался работать.

2. Добавление хинта PARALLEL(N)
После нескольких экспериментов, получилось сильно ускорить запрос только с помощью хинта parallel(32). Вместо 3-5 минут, выполняется за 10-40 секунд.
Теперь пытаюсь подменить план запроса, baseline создается на этот запрос, но план все равно используется старый.
При удалении родного baseline, он просто пересоздается, и опять использует свой план.

Использую следующий механизм из одного форума:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
-- загрузка плана настроенного запроса
declare
  l_sql_id_src varchar2(13)    :='31w6zb213gdfs';   -- sql_id образца
  l_plan_hash_value_src number := 4059279870;       -- plan_hash_value образца
  l_sql_id_trg  varchar2(13)   :='318dkg1gq87gm';   -- 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;
  -- загрузка плана и создание SQL plan baseline
  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(l_res);  
end;  



что не хватает ему?
или может есть другие способы заставить не редактируемый запрос работать с параллельностью?
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116178
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, версия:

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116194
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyaz,

У SQL Baseline есть ряд ограничений (DocID: 2308153.1). И есть баги, связанные, в частности, с вызовом из PL/SQL с биндами. Так же есть документ многообещающим названием "How to Diagnose Issues where a SQL Plan Management (SPM) Baseline is Not Used" (DocID: 1663691.1).
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116214
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyaz,

И вообще, что выдает БД после применения "механизма с форума"?
Код: plsql
1.
SQL> select * from DBA_SQL_PLAN_BASELINES;
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116225
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dimyaz,

1. вместо подмены запроса, можно просто навесить ивент останавливающий данный запрос через control_c:
https://www.freelists.org/post/oracle-l/sql-text-during-parsing,30
https://twitter.com/dbms_xtender/status/1392499158368624641
Код: plsql
1.
2.
alter system set events 'trace [SQL_Compiler.*][sql: 99g4t6h9kfumw] {callstack: 
fname opiParse} controlc_signal()'  ;



2. вместо сложного бейслайна(еще и требующего купленного пака), лучше бы воспользовались простым и доступным для всех SQL Patch - он чуть надежнее в данном случае, т.к. при парсе просто и безусловно добавляет хинты. Но в целом, все равно вам нужен разрешенный parallel query на уровне сессии.
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116236
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov,

Код: sql
1.
alter system set events 'trace [SQL_Compiler.*][sql: 99g4t6h9kfumw] {callstack: fname opiParse} controlc_signal()'  ;



А что он возвращает в ответ после перехвата?
Потому-что сейчас приложение ругается, что не может выполнить запрос этот.
Но отрабатывает быстро)
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116245
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyaz,

ORA-01013: user requested cancel of current operation.

К сожалению не подходит, так как в этой сессии это не единственный запрос, и ее не нужно всю грохать.
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116258
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asmodeus,

SQL_HANDLE SQL_295037bb56d51e83 SQL_TEXT <CLOB> PLAN_NAME SQL_PLAN_2kn1rrdbda7n3a66eba26 CREATOR USERYORIGIN MANUAL-LOAD-FROM-CURSOR-CACHE PARSING_SCHEMA_NAME USERX DESCRIPTION VERSION 12.2.0.1.0 CREATED 30-NOV-21 09.19.42.000000 PM LAST_MODIFIED 30-NOV-21 09.19.42.000000 PM LAST_EXECUTED LAST_VERIFIED ENABLED YES ACCEPTED YES FIXED YES REPRODUCED YES AUTOPURGE YES ADAPTIVE NO OPTIMIZER_COST 83888 MODULE PL/SQL Developer ACTION Command Window - New EXECUTIONS 1 ELAPSED_TIME 73157769 CPU_TIME 59236650 BUFFER_GETS 3064030 DISK_READS 334 DIRECT_WRITES 0 ROWS_PROCESSED 1 FETCHES 1 END_OF_FETCH_COUNT
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116277
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyaz,

А в сесси, в которой работает приложение, разрешено параллельное выполнение (как Саян спрашивал)?
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116609
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asmodeus
dimyaz,

А в сесси, в которой работает приложение, разрешено параллельное выполнение (как Саян спрашивал)?


namevaluerecovery_parallelism 0fast_start_parallel_rollback FALSEparallel_min_percent 0parallel_min_servers 176parallel_max_servers 1760parallel_instance_group parallel_execution_message_size 16384parallel_degree_policy MANUALparallel_adaptive_multi_user FALSEparallel_threads_per_cpu 2parallel_min_time_threshold AUTOparallel_degree_limit CPUparallel_force_local FALSEparallel_servers_target 704containers_parallel_degree 65535
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116611
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asmodeus,
Код: sql
1.
2.
select PDML_ENABLED, PDML_STATUS, PDDL_STATUS, PQ_STATUS FROM V$session 
where sid = 3715


PDML_ENABLED PDML_STATUS PDDL_STATUS PQ_STATUSNO DISABLED ENABLED ENABLED
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116612
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dimyaz,

Вы хинты бейслайна то проверили? Уверены, что там есть хинт parallel?
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116613
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вообще я выше сказал, сделали бы sql патч с хинтом parallel и не парились...
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116614
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dimyaz,

parallel_min_servers=176? Жестоко...
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116616
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Sayan Malakshinov
dimyaz,

Вы хинты бейслайна то проверили? Уверены, что там есть хинт parallel?
Код: plsql
1.
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(PLAN_NAME => '...', FORMAT => 'OUTLINE'));
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116617
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dimyaz


На простых запросах получилось это сделать, но именно на моем запросе, с использованием bind переменных и
емнип, в таких случаях рерайтить надо часть запроса до биндов (если, конечно, они в конце)
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116680
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov
dimyaz


На простых запросах получилось это сделать, но именно на моем запросе, с использованием bind переменных и
емнип, в таких случаях рерайтить надо часть запроса до биндов (если, конечно, они в конце)


Пробовал, не получается.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
drop table test_t1;
create table test_t1 as 
(
      select level id, 1 + level c2, 1 status, ' ' err   from dual
      connect by level <= 1000
      union all
      select 1000+level id, 1 + level c2, 2 status, ' ' err   from dual
      connect by level <= 500
      union all
      select 999999 id, 999999 c2, 1 status, 'ERROR' err   from dual

);



Пусть это будет наш целевой запрос для перехвата:
Код: sql
1.
2.
3.
4.
select count(*)
from test_t1
where test_t1.status = 1
and err <> ' ';



COUNT(*)1

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
begin

  begin
      sys.DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE ('dy_rewrite_test4');
  exception 
      when others then 
        null;
  end;

  begin
      sys.dbms_advanced_rewrite.declare_rewrite_equivalence
      (
          name             => 'dy_rewrite_test4',
          source_stmt      => 'select count(*) from test_t1 where test_t1.status = 1',
          destination_stmt => 'select 0 from dual',
          validate         => false,
          rewrite_mode     => 'GENERAL'
      );
  end;

end;



Код: plsql
1.
2.
3.
4.
select count(*)
from test_t1
where test_t1.status = 1
;



COUNT(*)0

Код: plsql
1.
2.
3.
4.
5.
select count(*)
from test_t1
where test_t1.status = 1
and err <> ' '
;



COUNT(*)1
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116697
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov
Sayan Malakshinov
dimyaz,

Вы хинты бейслайна то проверили? Уверены, что там есть хинт parallel?
Код: plsql
1.
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(PLAN_NAME => '...', FORMAT => 'OUTLINE'));



Да, план, тот который я ожидаю

и внизу дописан такой нот

Note
-----
- dynamic statistics used: dynamic sampling (level=7)
- Degree of Parallelism is 32 because of hint
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116713
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
dimyaz
Код: sql
1.
2.
3.
4.
5.
6.
7.
  begin
      sys.dbms_advanced_rewrite.declare_rewrite_equivalence
      (
...
--          rewrite_mode     => 'GENERAL'
rewrite_mode     => 'RECURSIVE'
      );

...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116717
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
А так?
dimyaz
Код: sql
1.
2.
3.
4.
5.
6.
7.
  begin
      sys.dbms_advanced_rewrite.declare_rewrite_equivalence
      (
...
--          rewrite_mode     => 'GENERAL'
rewrite_mode     => 'RECURSIVE'
      );



тоже пробовал и RECURSIVE и TEXT_MATCH

не срабатывает, даже на это примере
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116718
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov
А вообще я выше сказал, сделали бы sql патч с хинтом parallel и не парились...


Это помогло

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE
  l_patch_name  VARCHAR2(32767);
BEGIN
  l_patch_name := SYS.DBMS_SQLDIAG.create_sql_patch(
    sql_id    => 'c84nuf4kkb684',
    hint_text => 'PARALLEL(32)',
    name      => 'c84nuf4kkb684_PARALLEL(32)');
END;



Страничка открывает быстро.
но теперь по перформансу пошли конкуренции
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116728
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dimyaz
Sayan Malakshinov
пропущено...
Код: plsql
1.
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(PLAN_NAME => '...', FORMAT => 'OUTLINE'));



Да, план, тот который я ожидаю

и внизу дописан такой нот

Note
-----
- dynamic statistics used: dynamic sampling (level=7)
- Degree of Parallelism is 32 because of hint
в секции аутлайн хинт parallel был? Я не план, а хинт спрашивал
...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40116738
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov,

Только в таком виде:

Код: 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.
49.
50.
51.
52.
53.
54.
Outline Data
-------------
 
  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('12.2.0.1')
      DB_VERSION('12.2.0.1')
      OPT_PARAM('optimizer_dynamic_sampling' 7)
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$8C4C4DD2")
      ELIMINATE_JOIN(@"SEL$44CD65FF" "TABLE1"@"SEL$4")
      OUTLINE_LEAF(@"SEL$6DE12525")
      MERGE(@"SEL$BF82FE11" >"SEL$1")
      OUTLINE(@"SEL$44CD65FF")
      MERGE(@"SEL$54D64B3C" >"SEL$8")
      OUTLINE(@"SEL$1")
      OUTLINE(@"SEL$BF82FE11")
      MERGE(@"SEL$6BD737F4" >"SEL$7")
      OUTLINE(@"SEL$8")
      OUTLINE(@"SEL$54D64B3C")
      MERGE(@"SEL$64EAE176" >"SEL$4")
      OUTLINE(@"SEL$7")
      OUTLINE(@"SEL$6BD737F4")
      MERGE(@"SEL$5" >"SEL$6")
      OUTLINE(@"SEL$4")
      OUTLINE(@"SEL$64EAE176")
      MERGE(@"SEL$2" >"SEL$3")
      OUTLINE(@"SEL$6")
      OUTLINE(@"SEL$5")
      OUTLINE(@"SEL$3")
      OUTLINE(@"SEL$2")
      INDEX_FFS(@"SEL$6DE12525" "TABLE2"@"SEL$6" ("TABLE2"."IS_ACTIVE" "TABLE2"."ID"))
      FULL(@"SEL$6DE12525" "TABLE1"@"SEL$5")
      FULL(@"SEL$6DE12525" "TABLE3"@"SEL$5")
      LEADING(@"SEL$6DE12525" "TABLE2"@"SEL$6" "TABLE1"@"SEL$5" "TABLE3"@"SEL$5")
      USE_HASH(@"SEL$6DE12525" "TABLE1"@"SEL$5")
      USE_HASH(@"SEL$6DE12525" "TABLE3"@"SEL$5")
      PQ_DISTRIBUTE(@"SEL$6DE12525" "TABLE1"@"SEL$5" HASH HASH)
      PX_JOIN_FILTER(@"SEL$6DE12525" "TABLE1"@"SEL$5")
      PQ_DISTRIBUTE(@"SEL$6DE12525" "TABLE3"@"SEL$5" BROADCAST NONE)
      INDEX(@"SEL$8C4C4DD2" "TABLE3"@"SEL$2" ("TABLE3"."STATUS_ID" "TABLE3"."TENANT_ID" 
              "TABLE3"."PROCESS_DEF_ID" "TABLE3"."ID"))
      INDEX(@"SEL$8C4C4DD2" "TABLE4"@"SEL$2" ("TABLE4"."PROCESS_ID"))
      FULL(@"SEL$8C4C4DD2" "TABLE5"@"SEL$3")
      LEADING(@"SEL$8C4C4DD2" "TABLE3"@"SEL$2" "TABLE4"@"SEL$2" "TABLE5"@"SEL$3")
      USE_NL(@"SEL$8C4C4DD2" "TABLE4"@"SEL$2")
      NLJ_BATCHING(@"SEL$8C4C4DD2" "TABLE4"@"SEL$2")
      USE_HASH(@"SEL$8C4C4DD2" "TABLE5"@"SEL$3")
      PQ_DISTRIBUTE(@"SEL$8C4C4DD2" "TABLE4"@"SEL$2" RANDOM NONE)
      PQ_DISTRIBUTE(@"SEL$8C4C4DD2" "TABLE5"@"SEL$3" HASH HASH)
      SWAP_JOIN_INPUTS(@"SEL$8C4C4DD2" "TABLE5"@"SEL$3")
      END_OUTLINE_DATA
  */

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

ну, что, собственно, и следовало ожидать - нет хинта - нет параллели. Вместо создание бейслайна через копирование, надо было создавать со своим, вручную созданным списком хинтов...

ну и про переписывание: сейчас этот кривой и ограниченный rewrite equivalence не актуален. Пользуйтесь SQL Translation framework : он поддерживает бинды.

Простой пример:
DBMS_SQL_TRANSLATOR
Код: 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.
49.
50.
51.
/*
drop table test_t1 purge;
*/
set echo on feed on;

create table test_t1 as 
(
      select level id, 1 + level c2, 1 status, ' ' err   from dual
      connect by level <= 1000
      union all
      select 1000+level id, 1 + level c2, 2 status, ' ' err   from dual
      connect by level <= 500
      union all
      select 999999 id, 999999 c2, 1 status, 'ERROR' err   from dual

);

declare
  profile_name varchar2(30):='XT_TRANSLATE_PROFILE';
  PROFILE_DOES_NOT_EXIST exception;
  pragma EXCEPTION_INIT(PROFILE_DOES_NOT_EXIST, -24252);
BEGIN
  begin
       DBMS_SQL_TRANSLATOR.DROP_PROFILE(profile_name);
  exception
      WHEN PROFILE_DOES_NOT_EXIST THEN NULL; /* ignore if non-existant */
  end;

  DBMS_SQL_TRANSLATOR.CREATE_PROFILE (profile_name);
END;
/

BEGIN
DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION (
    profile_name => 'XT_TRANSLATE_PROFILE',
    sql_text => q'[select count(*) from test_t1 where test_t1.status = :B and err <> ' ']',
    translated_text => 'select count(*) from test_t1 where 1=0 and status=:B',
    enable => TRUE);
END;
/
 
--select * from all_sql_translation_profiles;
var B number;
exec :B:=1;

ALTER SESSION SET SQL_TRANSLATION_PROFILE = XT_TRANSLATE_PROFILE;
alter session set events = '10601 trace name context forever, level 32';

select count(*) from test_t1 where status=1;
select count(*) from test_t1 where test_t1.status = :B;
select count(*) from test_t1 where test_t1.status = :B and err <> ' ';


output
Код: 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.
SQL> BEGIN
  2  DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION (
  3      profile_name => 'XT_TRANSLATE_PROFILE',
  4      sql_text => q'[select count(*) from test_t1 where test_t1.status = :B and err <> ' ']',
  5      translated_text => 'select count(*) from test_t1 where 1=0 and status=:B',
  6      enable => TRUE);
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL> var B number;
SQL> exec :B:=1;

PL/SQL procedure successfully completed.

SQL> ALTER SESSION SET SQL_TRANSLATION_PROFILE = XT_TRANSLATE_PROFILE;

Session altered.

SQL> alter session set events = '10601 trace name context forever, level 32';

Session altered.

SQL> select count(*) from test_t1 where status=1;

  COUNT(*)
----------
      1001

SQL> select count(*) from test_t1 where test_t1.status = :B;

  COUNT(*)
----------
      1001

SQL> select count(*) from test_t1 where test_t1.status = :B and err <> ' ';

  COUNT(*)
----------
         0

...
Рейтинг: 0 / 0
Замена плана запроса на план с Parallel хинтом
    #40118396
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov,

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


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