powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Поиск: Искать последние сообщения автора: Sayan Malakshinov
25 сообщений из 1 000, страница 1 из 40
Oracle / MERGE PARALLEL
    #40136472
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
AleksRous,

Взглянул на планы - параллель есть, проблема не в этом, а в том что планы разные - обрати внимание на порядок и тип джойнов
...
Рейтинг: 0 / 0
Oracle / MERGE PARALLEL
    #40136459
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
AleksRous
Melkomyagkii_newbi
Что после AS? Понимаешь почему темп используется или нет?
https://stackoverflow.com/questions/67373571/how-can-we-use-use-parallel-10-hint-in-oracle-merge-statement



merge /*+ parallel(10) */ into emp , не помогло
там второй ответ - мой читайте
...
Рейтинг: 0 / 0
Oracle / Чем можно заменить временную таблицу?
    #40136074
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
PSD,

самый простой вариант это
PaulWist
XML
Просто взять экселевский файл сохранить как xml и передать его как бинд переменную в
Код: plsql
1.
select * from xmltable(... passing xmltype(:xml) ...)

Всякие PL/SQL Developer позволяют выбрать файл для передачи clob биндов
...
Рейтинг: 0 / 0
Oracle / запрос из приложения vs запрос из IDE
    #40135945
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
mlc
И второй вопрос, как выполнить запрос из IDE так, чтобы он работал также долго?
mlc
Запрос будет иметь в любом случае другой sql_id, так как мне приходится дописывать схему к объектам.

сделайте alter session set current_schema и запускайте запрос as-is с литералами
...
Рейтинг: 0 / 0
Oracle / запрос из приложения vs запрос из IDE
    #40135943
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
mlc
AlexFF__|
пропущено...

Делаешь trace 10053 и не гадаешь.


как выполнить 10053 трассу сессии приложения? Через bms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса.

http://orasql.org/2021/05/20/oracle-diagnostic-events-cheat-sheet/
Код: plsql
1.
alter system set events 'trace[SQL_Compiler.* | SQL_Execution.*][SQL: ...]'
...
Рейтинг: 0 / 0
Oracle / Предикат по короткому условию
    #40135704
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
HOME_X
Sayan Malakshinov,

В качестве проверки использовал поль. функцию , в которую передаю
уникальное значение записи и это значение выводиться в консоль

В целом процесс отслеживается

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * 
   from T1
 where T1.F1=1
      or  T1.F2=2
      or  Exists(select 1 
                      from T2
                    where T2.F1=T1.F3 
                        and MyFunc(T1.F3)=1
                   ) 

введение в запрос функций может заблокировать трансформации. Например, может быть заблокирован join/subquery elimination при FK - тогда без функции подзапрос бы не выполнялся, а из-за добавления функции ораклу придется его выполнять
...
Рейтинг: 0 / 0
Oracle / Как работает result cache
    #40135702
Фотография 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.
drop table t1 purge;
drop table t2 purge;
drop function f1;
set echo on;
create table t1 as select level a, level b from dual connect by level<=100;
create table t2 as select level a, level b from dual connect by level<=100;
create function f1 return int as
   res int;
begin
   select count(*) into res from t2;
   return res;
end;
/
alter system flush shared_pool;

alter table t1 result_cache (mode force);
set feed on sql_id;
select count(*) cnt from t1 where f1>0;
def rc_sqlid = &_sql_id
col result_cache for a15;
select sql_id,child_number,plan_hash_value,invalidations,optimizer_env_hash_value,result_cache from v$sql s where sql_id='&rc_sqlid';
col PLAN_TABLE_OUTPUT for a120;
select t.* from v$sql s,table(dbms_xplan.display_cursor('&rc_sqlid',child_number)) t
where s.sql_id='&rc_sqlid';
col object_name new_val cache_id;
select object_name from v$sql_plan p where p.sql_id='&rc_sqlid' and operation='RESULT CACHE';
col name for a40;
col cache_id for a10;
col cache_key for a10;
select o.id,o.name, 
       d.*,
       do.cache_id, do.cache_key,do.object_no
from  v$result_cache_objects o
     ,v$result_cache_dependency d
     ,v$result_cache_objects do
where o.cache_id='&cache_id'
  and d.result_id=o.id
  and do.id = d.depend_id;
set echo off;

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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
SQL> create table t1 as select level a, level b from dual connect by level<=100;

Table created.

SQL> create table t2 as select level a, level b from dual connect by level<=100;

Table created.

SQL> create function f1 return int as
  2     res int;
  3  begin
  4     select count(*) into res from t2;
  5     return res;
  6  end;
  7  /

Function created.

SQL> alter table t1 result_cache (mode force);

Table altered.

SQL> set feed on sql_id;
SQL> select count(*) cnt from t1 where f1>0;

       CNT
----------
       100

1 row selected.

SQL_ID: a9nyksby4dfqm
SQL> def rc_sqlid = &_sql_id
SQL> col result_cache for a15;
SQL> select sql_id,child_number,plan_hash_value,invalidations,optimizer_env_hash_value,result_cache from v$sql s where sql_id='&rc_sqlid';

SQL_ID        CHILD_NUMBER PLAN_HASH_VALUE INVALIDATIONS OPTIMIZER_ENV_HASH_VALUE RESULT_CACHE
------------- ------------ --------------- ------------- ------------------------ ---------------
a9nyksby4dfqm            0      4294799605             0               1605398594 Y

1 row selected.

SQL_ID: bf2z9mfkdwnb1
SQL> col PLAN_TABLE_OUTPUT for a120;
SQL> select t.* from v$sql s,table(dbms_xplan.display_cursor('&rc_sqlid',child_number)) t
  2  where s.sql_id='&rc_sqlid';

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------
SQL_ID  a9nyksby4dfqm, child number 0
-------------------------------------
select count(*) cnt from t1 where f1>0

Plan hash value: 4294799605

-------------------------------------------------------------------------------------------
| Id  | Operation            | Name                       | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                            |       |     3 (100)|          |
|   1 |  RESULT CACHE        | 0d95aym0kvw37casnbgjdnqzfh |     1 |            |          |
|   2 |   SORT AGGREGATE     |                            |     1 |            |          |
|*  3 |    FILTER            |                            |       |            |          |
|   4 |     TABLE ACCESS FULL| T1                         |   100 |     3   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("F1"()>0)

Result Cache Information (identified by operation id):
------------------------------------------------------

   1 -

SQL> col object_name new_val cache_id;
SQL> select object_name from v$sql_plan p where p.sql_id='&rc_sqlid' and operation='RESULT CACHE';

OBJECT_NAME
------------------------------
0d95aym0kvw37casnbgjdnqzfh

1 row selected.

SQL> col name for a40;
SQL> col cache_id for a10;
SQL> col cache_key for a10;
SQL> select o.id,o.name,
  2         d.*,
  3         do.cache_id, do.cache_key,do.object_no
  4  from  v$result_cache_objects o
  5       ,v$result_cache_dependency d
  6       ,v$result_cache_objects do
  7  where o.cache_id='&cache_id'
  8    and d.result_id=o.id
  9    and do.id = d.depend_id;

        ID NAME                                      RESULT_ID  DEPEND_ID  OBJECT_NO     CON_ID CACHE_ID   CACHE_KEY   OBJECT_NO
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
        64 select count(*) cnt from t1 where f1>0           64         66      79027          3 XTENDER.T2 XTENDER.T2      79027
        64 select count(*) cnt from t1 where f1>0           64         95      79026          3 XTENDER.T1 XTENDER.T1      79026
        64 select count(*) cnt from t1 where f1>0           64         71      78995          3 XTENDER.F1 XTENDER.F1      78995

3 rows selected.

...
Рейтинг: 0 / 0
Oracle / Как работает result cache
    #40135701
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
Никанор Кузьмич
Код: plsql
1.
-- username на следующей строке - это функция

а тут учтите, что каждая такая функция в запросе и ее зависимости будет добавлена в зависимости... вы таким образом форсируете кучу промежуточных result_cache
...
Рейтинг: 0 / 0
Oracle / Как работает result cache
    #40135700
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
Никанор Кузьмич
Есть Oracle 12.1
Скорее всего, у вас 12.1. 0.1 и вы нарвались на баг Bug 16301888 - A query with result cache annnotated table is not cached (Doc ID 16301888.8) (вкратце, там автоматически не инвалидировался курсор при alter table ...result_cache)

Вообще после
Никанор Кузьмич
Код: plsql
1.
alter table parameter_table result_cache (mode force);

у вас должен инвалидироваться курсор (v$sql.object_status должен стать INVALID_UNAUTH), а при последующем парсе в плане должна появиться строка "RESULT CACHE".
А лучше бы проапгрейдиться до 19, тогда у вас прямо в v$sql появится столбец RESULT_CACHE.

Если же надо протрейсить RC, то есть
Код: plsql
1.
alter session set events 'trace[Result_Cache] disk = highest';


пример трейса: https://gist.github.com/xtender/b3401a5118cd6898ddb8be2ad82acac9

В целом же, лучше не делать alter table result_cache force, а точечно втыкать result_cache в запросе или на функцию, причем все зависимости должны быть крайне редко изменяемыми, иначе помрете на RC латчах.
...
Рейтинг: 0 / 0
Oracle / Предикат по короткому условию
    #40134691
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
ASNexus
Кстати, MSSQL в подзапросах [NOT] EXISTS игнорирует всё, что перечислено в его SELECT
Oracle тоже.
ASNexus
"where exists (select 1/0 from ...)" и это не вызовет ошибку "divisor is equal to zero"
смотрите внимательнее, там где ошибка, там было не exists, а просто скалярный подзапрос.
ASNexus
я бы для проверки того, выполняется подзапрос или нет добавил бы условие в WHERE подзапроса, что-то вроде "and T2.F1 / 0 > 0"
вообще это не очень хороший способ проверять, что выполняется...
...
Рейтинг: 0 / 0
Oracle / Есть ли способы после определенного этапа в скрипте подать звук? Ну типа BEEP :)
    #40134434
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
bezrukov_pva,

https://en.m.wikipedia.org/wiki/Bell_character
+
http://orasql.org/2013/05/22/sqlplus-tips-6-colorizing-output/
Код: plsql
1.
2.
def _C_BEll         =[7m
prompt ::: &_C_BELL ***  TEST PASSED  *** 
...
Рейтинг: 0 / 0
Oracle / Row_ID базовой таблицы в View
    #40134418
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
HOME_X
RowID в качестве поля View - не представлено !? (Точно проверял много раз)
Но при вызове представление можно писать непосредственно RowID (не ПОЛЕ A_rowid !!!!)
rowid - это псевдостолбец , а не обычное поле таблицы
...
Рейтинг: 0 / 0
Oracle / Row_ID базовой таблицы в View
    #40134417
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
HOME_X,

В общем случае, никак из-за
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table
Код: 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.
SQL> select * from t;

        ID DES
---------- ---
         1 aaa
         2 bbb
         3 eee
         4 xxx

SQL> create or replace view tv as select * from t;

View created.

SQL> select rowid from tv;

ROWID
------------------
AAATNbAAMAAARRDAAA
AAATNbAAMAAARRDAAB
AAATNbAAMAAARRDAAC
AAATNbAAMAAARRDAAD

SQL> create or replace view tv as select * from t, dual;

View created.

SQL> select rowid from tv;
select rowid from tv
                  *
ERROR at line 1:
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table



Но с "key-preserved table"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> create or replace view tv2 as select t.* from t join t t2 on t.id=t2.id;

View created.

SQL> select rowid from tv2;
select rowid from tv2
                  *
ERROR at line 1:
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table

SQL> alter table t add constraint t_pk primary key (id);

Table altered.

SQL> select rowid from tv2;

ROWID
------------------
AAATNbAAMAAARRDAAA
AAATNbAAMAAARRDAAB
AAATNbAAMAAARRDAAC
AAATNbAAMAAARRDAAD

...
Рейтинг: 0 / 0
Oracle / XML Parse with custom schema
    #40134325
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
SY
Код: plsql
1.
2.
3.
xmlquery(...
   for $e in /invoice:invoiceMessage
      return xs:integer($e)'


тут не нужен for, достаточно
Код: plsql
1.
/invoice:invoiceMessage

а если уж так хочется кастануть в xs:integer, то
Код: plsql
1.
/invoice:invoiceMessage/xs:integer(.)
...
Рейтинг: 0 / 0
Oracle / XML Parse with custom schema
    #40134318
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
...
Рейтинг: 0 / 0
Oracle / Запрос по телефонным кодам стран
    #40134079
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
я б сделал так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select/*+ use_nl(a) */ *
from phones p
    ,lateral(
       select/*+ no_decorrelate */ *
       from (
         select
            c_operator
         from operators o
         where o.c_range<=p.phone
           and p.phone like o.c_range||'%'
         order by o.c_range desc
       )
       where rownum=1
     )(+) a;

тестовая таблица с нужным индексом
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table operators(c_operator,c_range) as (
                   select 'Moldova-fix' c_operator,'810373' c_range from dual union all
                   select 'Moldova-Mobile Moldcell' operator,'81037376' range from dual union all
                   select 'Moldova-Mobile Moldcell' operator,'81037378' range from dual union all
                   select 'Moldova-Mobile Moldcell' operator,'81037379' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'81037360' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'810373610' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'810373611' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'810373620' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'810373621' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'81037368' range from dual union all
                   select 'Moldova-Mobile Orange' operator,'81037369' range from dual
                  )
/
alter table operators
 add constraint uq_operators 
 unique(c_range) 
 using index(create index uq_operators on operators(c_range,c_operator))
/


план
Код: 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.
with phones as (
                   select '81037361100' phone from dual union all
                   select '81037378987' phone from dual union all
                   select '81037368223' phone from dual union all
                   select '81037399999' phone from dual union all
                   select 'XYZ' phone from dual
)
select/*+ use_nl(a) */ *
from phones p
    ,lateral(
       select/*+ no_decorrelate */ *
       from (
         select
            c_operator
         from operators o
         where o.c_range<=p.phone
           and p.phone like o.c_range||'%'
         order by o.c_range desc
       )
       where rownum=1
     )(+) a;

Plan hash value: 3028188581

---------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                       | Name            | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |                 |      1 |        |       |    15 (100)|          |      5 |00:00:00.01 |       5 |
|   1 |  NESTED LOOPS OUTER             |                 |      1 |      5 |   100 |    15   (0)| 00:00:01 |      5 |00:00:00.01 |       5 |
|   2 |   VIEW                          |                 |      1 |      5 |    35 |    10   (0)| 00:00:01 |      5 |00:00:00.01 |       0 |
|   3 |    UNION-ALL                    |                 |      1 |        |       |            |          |      5 |00:00:00.01 |       0 |
|   4 |     FAST DUAL                   |                 |      1 |      1 |       |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       0 |
|   5 |     FAST DUAL                   |                 |      1 |      1 |       |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       0 |
|   6 |     FAST DUAL                   |                 |      1 |      1 |       |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       0 |
|   7 |     FAST DUAL                   |                 |      1 |      1 |       |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       0 |
|   8 |     FAST DUAL                   |                 |      1 |      1 |       |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       0 |
|   9 |   VIEW                          | VW_LAT_5E5D704D |      5 |      1 |    13 |     1   (0)| 00:00:01 |      4 |00:00:00.01 |       5 |
|* 10 |    COUNT STOPKEY                |                 |      5 |        |       |            |          |      4 |00:00:00.01 |       5 |
|  11 |     VIEW                        |                 |      5 |      1 |    13 |     1   (0)| 00:00:01 |      4 |00:00:00.01 |       5 |
|* 12 |      INDEX RANGE SCAN DESCENDING| UQ_OPERATORS    |      5 |      1 |    31 |     1   (0)| 00:00:01 |      4 |00:00:00.01 |       5 |
---------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

  10 - filter(ROWNUM=1)
  12 - access("O"."C_RANGE"<="P"."PHONE")
       filter("P"."PHONE" LIKE "O"."C_RANGE"||'%')


40 rows selected.



еще возможно хорошо было бы сделать функцию с result_cache возвращающую макс длину range, чтобы в подзапрос передавать уже не полный номер, а только substr(phone,1,max_range_length()) для scalar subquery caching
...
Рейтинг: 0 / 0
Oracle / Пятничная задача: single from
    #40134069
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
dbms_photoshop
Код: plsql
1.
2.
3.
from points t
unpivot (id for type in (id as 'original', id as 'new')) upvt
match_recognize

ах, здорово! в голову не пришло, что unpivot с match_recognize вместе могут работать. Да еще я и зашорен был: после игр с match_recognize давным давно, почему-то засело в голову что одна и та же строка не может входить в несколько наборов... Теперь понятно, что это ограничение только стартовой строки.
...
Рейтинг: 0 / 0
Oracle / Tuning Advisor ORA-00979
    #40133517
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
SQL*Plus
Вместо полезной работы по другим важным направлениям вы занимаетесь поиском путей обхода не ваших ошибок.

траблшутинг и есть одна из важнейших частей работы... Что может быть важнее падающих процессов, базы или wrong results?
SQL*Plus
мы терпим по некритичным проблемам.
Если бы проблема угрожала бизнесу или даже миссии компании,
мы бы не стали ждать её решения месяцами и годами,
устроили бы бурный "кипеж" для ускорения её решения.

Во-первых, вы ложно постулируете, что эскалация SR с максимальным приоритетом всегда решается быстро - это далеко не так. Я уже рассказывал, как крайне критичную проблему с базой сената техподдержка и девелоперы не могли решить больше полугода. Пинали их по всем фронтам - нулевой выхлоп. Воркэраунд я нашел и применил на 3 день - три дня простоя и так было крайне критично. В итоге плюнули на техподдержку, закрыли SR. Так что баг скорее всего так и остался.
Во-вторых, платят все как раз за решение проблем сейчас, а не 5+ лет спустя. Ни одна серьезная компания не сможет ждать даже полгода. И все показанные мной SR тоже давным давно решены воркэраундами...
В-третьих, здесь на форуме тоже есть сотрудники оракла и оракловой техподдержки в частности, и куча других экстра-профессионалов решающих проблемы гораздо быстрее техподдержки, так что даже не стоит пытаться как-то принизить форум... То же касается и других ресурсов, типа твиттера или Oracle-L: довольно часто интересные/серьезные проблемы попадают в поле зрения продакт менеджеров оракла и решаются через них быстрее.
...
Рейтинг: 0 / 0
Oracle / Tuning Advisor ORA-00979
    #40133359
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
Скриншот отдельно
...
Рейтинг: 0 / 0
Oracle / Tuning Advisor ORA-00979
    #40133358
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
Приложил 3 примерчика:
Код: plsql
1.
2.
3.
SR 3-16300395971 Opened	4+ years ago	Last Updated	2+ months ago
SR 3-25443884061 Opened	11+ months ago	Last Updated	9+ months ago
SR 3-20491115541 Opened	2+ years ago	Last Updated	1+ year ago



Тот, что на скришоте "Last Updated" - 2 месяца (Wrong backreferences calculation in function REPLACE() in XMLTABLE()), на самом деле Opened 4+ years ago, а апдейт содержал "Can you pls let us know if this is still a current issue for you."

...
Рейтинг: 0 / 0
Oracle / Tuning Advisor ORA-00979
    #40133357
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
SQL*Plus
Если нужно решать проблему быстрее, установите более высокий Severity, выполните эскалацию SR.
и ждите месяцами или годами, ну, а если повезет, то когда-то получите фикс, который скорее всего добавит новых багов... Не буду говорить за всех, но как минимум у меня в большинстве случаев получается быстрее найти workaround оракловых багов самому, чем дождаться фикса от оракла.
...
Рейтинг: 0 / 0
Oracle / Tuning Advisor ORA-00979
    #40133337
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
alex722,

А что у вас в group-by? Литералы какие-то? cursor_sharing на уровне инстанса force/similar?
...
Рейтинг: 0 / 0
Oracle / Пятничная задача: single from
    #40132737
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
dbms_photoshop
Sayan Malakshinov
Код: plsql
1.
collect(...)over(...)

И collect и xmlagg по документации исключительно агрегатные и не аналитические так что тут претензий к Ораклу быть не может.
Sayan Malakshinov
так речь про целые?
Совершенно нет. Я же приложил скрипт создания тестовой таблицы.
да, блин, хватит ночью писать я и так с бессонницей, теперь ещё тяжелее заснуть когда аж две идеи в голове :(
...
Рейтинг: 0 / 0
Oracle / Пятничная задача: single from
    #40132734
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист
Участник
Sayan Malakshinov
посчитав, что нельзя...
ааа... дошло... надо было просто
Код: plsql
1.
2.
3.
4.
from points p
unpivot (
  b for a in (x as -2, x as 2)
);
...
Рейтинг: 0 / 0
Oracle / Пятничная задача: single from
    #40132733
Фотография 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.
with points(ID,X,Y,CNT,DIST) as (
select  1, 1, 1,  5, 61.5629421 from dual union all
select  2, 2, 2, 10, 42.9905342 from dual union all
select  3, 3, 1, 10, 42.3402527 from dual union all
select  4, 3, 2, 13, 33.9007161 from dual union all
select  5, 3, 3, 15, 32.0060445 from dual union all
select  6, 3, 4, 12, 36.5312328 from dual union all
select  7, 4, 1, 10, 40.4182704 from dual union all
select  8, 4, 2, 14, 31.1038271 from dual union all
select  9, 4, 3, 16, 28.2066774 from dual union all
select 10, 4, 4, 14, 32.1841901 from dual union all
select 11, 4, 5, 10, 42.4182704 from dual union all
select 12, 5, 2, 13,  35.300723 from dual union all
select 13, 5, 3, 15, 31.6497533 from dual union all
select 14, 5, 4, 13,  34.916584 from dual union all
select 15, 5, 5, 10, 44.6276236 from dual union all
select 16, 6, 3, 11, 41.6318623 from dual union all
select 17, 6, 4, 10, 44.2841669 from dual 
)
select
    id,x,y,cnt,
                 cardinality( 
                    cast( collect(SYS.KU$_OBJNUM(id))over(order by x range between 2 preceding and 2 following) as sys.ku$_objnumset) 
                    multiset intersect
                    cast( collect(SYS.KU$_OBJNUM(id))over(order by y range between 2 preceding and 2 following) as sys.ku$_objnumset) 
                 )
     as tst
from points
order by id;

ORA-03113: end-of-file on communication channel

...
Рейтинг: 0 / 0
25 сообщений из 1 000, страница 1 из 40
Форумы / Поиск: Искать последние сообщения автора: Sayan Malakshinov
Пользователи онлайн (7): Анонимы (6), Yandex Bot 1 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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