Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ora-01795 maximum number of expressions in a list is 1000 / 14 сообщений из 14, страница 1 из 1
27.02.2019, 14:47
    #39779863
dimyaz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
Всем доброго дня!
В одном приложении выскакивает такая ошибка ora-01795 при создании нового объекта.
Подозреваю, что есть баг в ядре, но надо найти точный запрос, который это делает.

Пытался поймать его по v$sql, но там выдает слишком много запросов с конструкцией %IN%(%SELECT%
Подскажите какие еще варианты есть поймать оригинальный запрос, который выдает эту ошибку?
...
Рейтинг: 0 / 0
27.02.2019, 14:54
    #39779873
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
dimyazмного запросов с конструкцией %IN%(%SELECT%
не дают такую ошибку.
...
Рейтинг: 0 / 0
27.02.2019, 15:08
    #39779881
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
обратиться к разработчикам программы
...
Рейтинг: 0 / 0
27.02.2019, 15:47
    #39779927
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
dimyaz,

например триггер
Код: 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.
create table ERROR_LOG
(
  id       NUMBER,
  username VARCHAR2(30),
  errcode  INTEGER,
  seq      INTEGER,
  tmstmp   TIMESTAMP(6),
  msg      VARCHAR2(4000),
  sql_text CLOB
)
/
create sequence err_seq
/
create or replace trigger trg_error_logging
after servererror
on database
disable
declare
   v_id       number   := err_seq.nextval();
   v_tmstmp   timestamp:= systimestamp;
   n          int;
   sql_text   dbms_standard.ora_name_list_t;
   v_sql_text clob;
begin
   v_sql_text:=null;
   n := ora_sql_txt(sql_text);
   for i in 1..n loop
      v_sql_text := v_sql_text || sql_text(i);
   end loop;

   for i in 1.. ora_server_error_depth
   loop
      if i=1 then
         insert into error_log(id,seq,tmstmp,username,errcode,msg,sql_text)
            values( v_id, i, v_tmstmp, user, ora_server_error(i), ora_server_error_msg(i), v_sql_text);
      else
         insert into error_log(id,seq,tmstmp,username,errcode,msg)
            values( v_id, i, v_tmstmp, user, ora_server_error(i), ora_server_error_msg(i) );
      end if;
   end loop;
   commit;
END;
/
alter trigger trg_error_logging enable
/

...
Рейтинг: 0 / 0
27.02.2019, 19:22
    #39780061
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
dimyazВсем доброго дня!
В одном приложении выскакивает такая ошибка ora-01795 при создании нового объекта.
Подозреваю, что есть баг в ядре, но надо найти точный запрос, который это делает.

Пытался поймать его по v$sql, но там выдает слишком много запросов с конструкцией %IN%(%SELECT%
Подскажите какие еще варианты есть поймать оригинальный запрос, который выдает эту ошибку?
попробуйте искать запрос, в котором (кроме select in) ещё тысяча запятых
...
Рейтинг: 0 / 0
27.02.2019, 19:30
    #39780064
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
orawishещё тысяча запятых
Противным занудно-ворчливым голосом: "...не менее девятисот девяноста девяти."
...
Рейтинг: 0 / 0
27.02.2019, 20:04
    #39780086
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
orawish искать запрос, в котором (кроме select in) ещё тысяча запятыхвопрос не что искать, а где искать.
...
Рейтинг: 0 / 0
27.02.2019, 20:06
    #39780087
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
-2-orawish искать запрос, в котором (кроме select in) ещё тысяча запятыхвопрос не что искать, а где искать.
Выставить event -01795 и, потирая лапки, ждать злоумышленника - трейс все расскажет :)
...
Рейтинг: 0 / 0
28.02.2019, 08:46
    #39780183
dimyaz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
orawishdimyazВсем доброго дня!
В одном приложении выскакивает такая ошибка ora-01795 при создании нового объекта.
Подозреваю, что есть баг в ядре, но надо найти точный запрос, который это делает.

Пытался поймать его по v$sql, но там выдает слишком много запросов с конструкцией %IN%(%SELECT%
Подскажите какие еще варианты есть поймать оригинальный запрос, который выдает эту ошибку?
попробуйте искать запрос, в котором (кроме select in) ещё тысяча запятых

Так тоже делал через regexp_count.
Вылавливал только свои эмуляции.

В общем перерыв пол сервера так и не нашли ошибку.
А потом в поисках другой ошибки, случайно наткнулись на этот запрос в корневых логах. Там это фиаско полностью описано.
Но вот все равно странно что я его не смог зацепить в v$sql.
...
Рейтинг: 0 / 0
28.02.2019, 08:51
    #39780185
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
подкину еще одну идею
...
Рейтинг: 0 / 0
28.02.2019, 09:14
    #39780189
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
dimyazстранно что я его не смог зацепить в v$sql.Странно было бы наоборот.
...
Рейтинг: 0 / 0
28.02.2019, 09:22
    #39780193
dimyaz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
123ййподкину еще одну идею

Эту версия я первым делом проверил.
Нет, в этом случае все гораздо тривиальнее.

Эта программа, перед созданием сущности, где то динамически собирает все названия в in(name,name...)
В итоге один разработчик вытащил свой тысячный лотерейный билет!
...
Рейтинг: 0 / 0
28.02.2019, 10:37
    #39780221
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
dimyazНо вот все равно странно что я его не смог зацепить в v$sql.Странно это ожидать в v$sql наличие курсора, для которого свалилась ORA на этапе парса.

Если немного покумекать, можно вспомнить, что v$sql отображает shared SQL area, а смысла шарить курсор который никогда не будет выполнен особого нет.

Как уже заметил Эндрю Анонимный, отловить в трейс можно было бы путем установки event 01795 или даже просто sql trace (event 10046) и еще туча других способов через set events.
...
Рейтинг: 0 / 0
28.02.2019, 10:47
    #39780229
dimyaz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01795 maximum number of expressions in a list is 1000
КобанчегdimyazНо вот все равно странно что я его не смог зацепить в v$sql.Странно это ожидать в v$sql наличие курсора, для которого свалилась ORA на этапе парса.

Если немного покумекать, можно вспомнить, что v$sql отображает shared SQL area, а смысла шарить курсор который никогда не будет выполнен особого нет.

Как уже заметил Эндрю Анонимный, отловить в трейс можно было бы путем установки event 01795 или даже просто sql trace (event 10046) и еще туча других способов через set events.

Спасибо, в следующий раз попробую так.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ora-01795 maximum number of expressions in a list is 1000 / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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