Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 77 78 79 80 81 [82] 83 84 85 86 .. 92   вперед  Ctrl
 Re: Извините за офтоп. Просто посмеяться  [new]
mayton
Member

Откуда: loopback
Сообщений: 49764
Не в тему Оракла. Но все таки.

Страуструп: просто о сложном
Картинка с другого сайта.
18 авг 14, 13:16    [16455654]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
Простите, что я лезу сюда с ораклом, но таки

function get_some_value(...) return varchar2 is
  some_value varchar2;
  ....
begin
  if some_value is not null then
    return some_value;
  end if;
  ....
28 авг 14, 14:52    [16507316]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
О, ещё из той же хранимки

  ...
  select ..., flag_lock into ..., some_lock 
    from ...
    where ... and flag_lock is null
    for update nowait;
  if some_lock is not null then
    raise no_data_found;
  end if;
  ...
28 авг 14, 14:57    [16507353]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
андреймкс
Guest
softwarer
О, ещё из той же хранимки

  ...
  select ..., flag_lock into ..., some_lock 
    from ...
    where ... and flag_lock is null
    for update nowait;
  if some_lock is not null then
    raise no_data_found;
  end if;
  ...
один корректирует запрос, второй - логику
28 авг 14, 15:03    [16507406]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
андреймкс
Guest
softwarer
Простите, что я лезу сюда с ораклом, но таки

function get_some_value(...) return varchar2 is
  some_value varchar2;
  ....
begin
  if some_value is not null then
    return some_value;
  end if;
  ....
может, они выделенную строчку корректируют дефолтными значениями по три раза на день
28 авг 14, 15:05    [16507423]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
андреймкс
Guest
предлагаю объяснение:
  ...
  select ..., flag_lock into ..., some_lock 
    from ...
    where ... and flag_lock is null
    for update nowait;
  if some_lock is not null then
    raise no_data_found;
  end if;
  ...
сначала было слово без выделенного фрагмента. Все работало. Для строк flag_lock is not null валилась ошибка, что данных таки нет.
НО ведь строка-то блокировалась! Решили избавиться от блокировок. А проверку уже никто не убрал - вдруг пригодится на будущее.
28 авг 14, 15:28    [16507634]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
stax..
Guest
softwarer
Простите, что я лезу сюда с ораклом, но таки

function get_some_value(...) return varchar2 is
  some_value varchar2;
  ....
begin
  if some_value is not null then
    return some_value;
  end if;
  ....

раньше some_value "определялось" параметром some_value varchar2 :=:=p_some_value
:=p_some_value убрали, текст в коде остался

......
stax
28 авг 14, 15:29    [16507644]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
stax..
раньше some_value "определялось" параметром some_value varchar2 :=:=p_some_value

Да нет, скорее всего собирались переделать из локальной в переменную пакета (кэшировать и второй раз не вычислять) и не доделали.
28 авг 14, 15:52    [16507874]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
андреймкс
Guest
softwarer
stax..
раньше some_value "определялось" параметром some_value varchar2 :=:=p_some_value

Да нет, скорее всего собирались переделать из локальной в переменную пакета (кэшировать и второй раз не вычислять) и не доделали.
а если в результате вычислений ее результат становился NULLом?
:)
28 авг 14, 15:54    [16507899]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
Посмеяться от души: Как обычно повышают производительность базы
7 сен 14, 15:24    [16546053]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Подскажите топик, где обсуждалось это кино:

Картинка с другого сайта.

Помню где-то тут видел, а найти не могу...
24 окт 14, 01:44    [16751819]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
rockclimber
Подскажите топик, где обсуждалось это кино:

Оно?
24 окт 14, 03:08    [16751874]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Bogdanov Andrey
rockclimber
Подскажите топик, где обсуждалось это кино:

Оно?
Нет, вроде здесь было, в этом разделе, около года назад видел или чуть больше. Там еще обсуждали, как сделать так, чтобы запросы работали как на скриншотах.
24 окт 14, 09:32    [16752219]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Ужасно сложно
https://www.sql.ru/forum/afsearch.aspx?s=????? ???????????? ????????????&submit=?????&bid=3
24 окт 14, 09:36    [16752239]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Вячеслав Любомудров
Ужасно сложно
https://www.sql.ru/forum/afsearch.aspx?s=????? ???????????? ????????????&submit=?????&bid=3
Оно, спасибо!
24 окт 14, 10:25    [16752454]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
Чего только не найдёшь на просторах инета. Помни - твоя горячая СУБД ждёт тебя ...

К сообщению приложен файл. Размер - 45Kb
1 мар 15, 16:18    [17328291]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
xxx: это будет медленный запрос
yyy: почему?
xxx: он будет медленно выполняться
yyy: логично, а поконкретнее?
xxx: пока он выполнится, пройдет много времени
3 мар 15, 09:18    [17335442]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Почему Том Кайт похож на Шнура?

Картинка с другого сайта.

К сообщению приложен файл. Размер - 10Kb
5 мар 15, 22:17    [17349711]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
Anton Demidov
Почему Том Кайт похож на Шнура?

Картинка с другого сайта.

Картинка с другого сайта.
это еще кто на кого!
5 мар 15, 22:34    [17349753]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 679
Здесь меня порадовала не только гениальность решения но и благодарственные коментарии типа
Thanks a lot. I spent more than 5 hours to solve this kink of problem.
1 апр 15, 14:56    [17459732]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Зато букв много
Guest
Глупый Телевизор
Здесь меня порадовала не только гениальность решения но и благодарственные коментарии типа
Thanks a lot. I spent more than 5 hours to solve this kink of problem.
это ж бложек, до чего смог дойти, за то себя и похвалил.
1 апр 15, 15:46    [17460122]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Глупый Телевизор
Здесь меня порадовала не только гениальность решения но и благодарственные коментарии типа
Thanks a lot. I spent more than 5 hours to solve this kink of problem.
как ты туда попал-то?
1 апр 15, 16:13    [17460401]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 679
Зато букв много,

Существо (которое себя гордо величает geek with blog) за 7 лет так и не поняло невероятный идиотизм написанного.
Хоть это и прискорбно, но остается только посмеятся.
1 апр 15, 16:15    [17460425]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 679
xtender
как ты туда попал-то?
+ длинная история
При получении реф курсора в Си шарпе был крайне плавающий баг с invalid number.
Был поиск по инету возможных вариантов кроме уже мне известных
1. Как известно в шарпе типы и их точность несколько отличается от оракловых и несколько лет надад мы приняли соглашение округлять все намберы до -надцати значащих цифр после запятой. Проблемы подобного характера исчезли. Да и вообще при cast-e возникет вроде шарпное исключение а не оракловое, так что эта версия отбрасывается.
2. Самая главная версия - это изменение плана на пример такого
SQL> with t1 as (select 1 id from dual where rownum > 0)
  2  , t2 as (select 2 id from dual where rownum > 0)
  3  , t3 as (select '2' id from dual union all select 'A' from dual where rownum > 0)
  4  select --+ leading(t1 t2 t3) use_nl(t1 t2 t3)
  5  *
  6  from t1
  7  left join t2 on t1.id = t2.id
  8  left join t3 on t2.id = t3.id;

        ID         ID I
---------- ---------- -
         1

SQL>
SQL> with t1 as (select 1 id from dual where rownum > 0)
  2  , t2 as (select 2 id from dual where rownum > 0)
  3  , t3 as (select '2' id from dual union all select 'A' from dual where rownum > 0)
  4  select -- leading(t1 t2 t3) use_nl(t1 t2 t3)
  5  *
  6  from t1
  7  left join t2 on t1.id = t2.id
  8  left join t3 on t2.id = t3.id;
left join t3 on t2.id = t3.id
                        *
ERROR at line 8:
ORA-01722: invalid number
Но я как не медитировал над конкретным проблемным запросом так и не смог придумать как оно там может "выстрелить".
3. Есть чудесные версии типа такой.

Короче, после определенного момента как я не экспериментировал с вызовами при этом и меняяя окрйжения оптимизатора и "выталкивая" курсор из библиотечного кеша и меняя самые разнообрызные бизнес параметры и множество попыток воспроизведения без изменений ничего мне так и не дало. В итоге я сказал "не воспроизводится", тестируйте дельше и дайте знать сразу же, если выстрелит.

Единственное доказательство со стороны Оракла - это v$sql.executions <> v$sql.end_of_fetch_count.
Но думаю при invalid number это более чем очевидно.
Ну это скорее офтоп здесь.
Сомневаюсь, что кто-то подкинет знанимые варианты произошедшего, а иначе лучше созать новый топик.
1 апр 15, 16:31    [17460546]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 679
Глупый Телевизор
Ну это скорее офтоп здесь.
Сомневаюсь, что кто-то подкинет знанимые варианты произошедшего, а иначе лучше созать новый топик.
Чтоб закрыть вопрос:
Металинк возвращает множество результатов по "oracle parallel wrong results".
В моем случае Оракл искажал определенный столбец и баг воспроизводился при условии
1) данных нет в буферном кеше
2) параллельное выполнение
То есть для стабильного вопроизведения необходим включенный параллелизм и очищенный кеш.
К си шарпу не имеет ни малейшего отношения и легко воспроизводится в sql*plus.
Решилось изменением optimizer_features_enable='10.2.0.4'.
2 апр 15, 19:41    [17466396]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 77 78 79 80 81 [82] 83 84 85 86 .. 92   вперед  Ctrl
Все форумы / Oracle Ответить