powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Непредсказуемое кеширование
25 сообщений из 37, страница 1 из 2
Непредсказуемое кеширование
    #39315527
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая ситуация:

В пакете обычная процедура и стоит логирование вызова, внутри процедуры только select.

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

Преднамеренно создать такую ситуацию не представляется возможным.

Если отключиться от базы и полностью выключить клиент затем заново подключиться, бага сохранится в неизменном виде.
Лечение только одно, нужно развалить пакет, и удалить эту процедуру (например добавить 1 к названию) скомпилить с единицей, затем удалить единицу и скомпилить в том виде как изначально было, тогда лечится проблема мгновенно без перезапусков чего либо.

Этот баг с клиентом думаю не связан, так как даже если выполнить скрипт с вызовом процедуры в окне PL\SQL Developer будут те же не корректные данные и тоже отсутствие лога, а после "слома" пакета все сразу корректно становится.

Кто-то сталкивался с там?

Проблема распространяется не на пакет в целом, а на отдельно взятые процедуры, причем ни чем не отличающиеся от других.
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315591
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalmобычная процедураНе result_cache функция?
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315599
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm.. в непредсказуемый момент эта процедура перестает вызываться и лог вызова по ней так же перестает писаться, однако .. продолжает возвращать ..
поясните
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315600
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
текст бы посмотреть
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315622
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishZalm.. в непредсказуемый момент эта процедура перестает вызываться и лог вызова по ней так же перестает писаться, однако .. продолжает возвращать ..
поясните

Я вызываю на клиенте процедуру (или в окне pl/sql developer), в итоге мне приходит какой-то результат (чаще всего тот, который ничего не имеют общего с действительностью), и при этом лог вообще не записывается
pf_json_error('test','profile'); хотя он записывается ВСЕГДА и везде, но только не тут когда случается такой залип.
Я могу даже написать pf_json_error('test','profile_lala'); перекомпилить пакет, перезапустить клиент и тд, ничего не изменится, всегда будет мусор в ответе, и только когда я сделаю что пакет стал инвалидным, затем скомпилю снова, тогда все ошибки и баги пропадают даже клиент перезапускать не нужно.

ElicZalmобычная процедураНе result_cache функция?
Нет, это процедура


andreymxтекст бы посмотреть


Код: 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.
-- Дать профайл пользователя
Procedure GetProfile ( ASuperKey varchar2, HTTPRES out varchar2 ) is
-- [17.08.2016 21:47]
 ouResult clob;
 tm number;
--
 lClobWriter pls_integer:=1;
 lBlockSize pls_integer:=16000;
 vBuf varchar2(16000);
--
 res number:=0;
 UBlock pf_types.pf_t_user_block; 
 
 -- Информация клиента 
 cursor user_cur is
  select us.us_name,decode(SubStr(us.us_phone,1,4),'7000',null,us.us_phone) phone,us.us_email,d.client_bank_account   
    from pf_users us 
   inner join pf_users_dop d on d.us_id = us.us_id
   where us.us_id = UBlock.rUser_ID; 
   
 us_info user_cur%ROWTYPE;
 
 vMsg varchar2(512);
begin
 pf_json_error('test','profile');
 tm:=MyGetTickCount;
 begin   
 
  UBlock:=pf_f_get_user_block(ASuperKey);
  if UBlock.rFind = 1 then   
   
   ouResult:=null;
   for us_info in user_cur 
   loop
    res:=1;
    ouResult:='"user":{"name":"'||us_info.us_name||'","phone":"'||us_info.phone||'","email":"'||us_info.us_email||'","pay":"'||us_info.client_bank_account||'"},';
   end loop;      
   
  else
   vMsg:='Пользователь не найден';
  end if;
    
  if res=0 then 
   ouResult:='"msg":"'||vMsg||'",';     
  end if;  
  
  ouResult:=ouResult||'"result":'||res; 
 exception
  when others then
   begin
    ouResult:=null;
    pf_json_error(SQLCODE||' - '||SQLErrm,dbms_utility.format_error_backtrace);
    
    if ouResult is null then
     ouResult:='"result":0,"error":"'||replace(replace(SQLCODE||' - '||SQLErrm,'"',''''),SQLCODE||' - ORA'||SQLCODE||': ')||'"';
    end if;
 
    if SQLCODE = -6508 or sqlcode = -20787 then 
     raise_application_error (-20787,'RCS');
    end if;
 
   end;
 end;
 
 tm:=MyGetTickCount-tm;
 ouResult:='{'||ouResult||',"speed":'||To_Char(tm)||'}';
 
 -- Записать клоб в ответ
 loop   
  vBuf:=SubStr(ouResult,lClobWriter,lBlockSize);   
  HTTPRES:=Concat(HTTPRES,vBuf);
  lClobWriter:=lClobWriter+lBlockSize;
  exit when lClobWriter>Length(ouResult);  
 end loop; 
  
end;


...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315630
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm,

В pf_json_error ошибки не глотаются?
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315634
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Zalm,

В pf_json_error ошибки не глотаются?

Нет, она просто в автономной транзакции пишет 1 строку в таблицу без индексов, больше ничего не происходит

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

Причем если скомпилить валидный пакет в это время - ничего не происходит, баг не пропадает, опять же повторюсь что с клиентом это не связано, так как клиент не нужно перезапускать что бы все начало норм работать, надо ток сломать пакет и собрать заново
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315637
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему вы думаете, что процедура не вызывается? Потому что pf_json_error не вызывается? Ну, так до него много чего происходит, например, объявление курсора.
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315652
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValergradПочему вы думаете, что процедура не вызывается? Потому что pf_json_error не вызывается? Ну, так до него много чего происходит, например, объявление курсора.

1) Думаю так потому что pf_json_error('test','profile'); перестает работать
2) Потому что процедура начинает отдавать невменяемые данные не связанные с реальностью (если взять тот же селект и выполнить, будут совершенно другие данные)
3) + еще так думаю потому, что инвалидация пакета решает только проблему, почему тогда только это помогает?
4) Если через pf_json_error('test','profile'); проверять вызов не корректно, каким еще способом проверить вызывается ли она?
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315744
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm,

Попробуй вывод информации через dbms_output
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315881
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже на какой-то пакет с глобальной переменной, в котором есть обращение к указанной процедуре
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315887
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Zalm,

Попробуй вывод информации через dbms_output

в момент залипухи dbms_output тоже ничего не выводит, это я проверял когда еще впервые сталкивался с этой проблемой...(
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315888
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZalmAlexFF__|Zalm,

Попробуй вывод информации через dbms_output

в момент залипухи dbms_output тоже ничего не выводит, это я проверял когда еще впервые сталкивался с этой проблемой...(

Глобальных переменных нет ни где
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315890
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО - ТС хитро настроил transparent failover и теперь троллит публику, рассказывая как он подключается то к одной, то к другой БД с одного дескриптора :)
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315896
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousИМХО - ТС хитро настроил transparent failover и теперь троллит публику, рассказывая как он подключается то к одной, то к другой БД с одного дескриптора :)
Другой вариант - ТС не видит реальную проблему, поскольку задавил ее в довольно своеобразном when others.
Рекомендация: убрать when others и посмотреть, что на самом деле происходит при вызове.
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315914
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousandrey_anonymousИМХО - ТС хитро настроил transparent failover и теперь троллит публику, рассказывая как он подключается то к одной, то к другой БД с одного дескриптора :)
Другой вариант - ТС не видит реальную проблему, поскольку задавил ее в довольно своеобразном when others.
Рекомендация: убрать when others и посмотреть, что на самом деле происходит при вызове.

Говорю же, ничего не происходит, не доходит туда вызов когда пакет так залипает
ни dbms_output ни другие мои процедуры логирования не срабатывают в проблемной процедуре до момента инвалидации пакета и новой сборки


andrey_anonymousИМХО - ТС хитро настроил transparent failover и теперь троллит публику, рассказывая как он подключается то к одной, то к другой БД с одного дескриптора :)
про эту настройку я ничего не слышал, и работаю я с одной базой
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39315915
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZalmГоворю же, ничего не происходит, не доходит туда вызов когда пакет так залипает...
Не верим ( C ) Станиславский(е)

Не бывает такого. Вам уже сказали: исправьте свой говно код, уберите "exception when others" или, на худой конец, реализуйте его по человечески.

IMHO
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39316118
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А клиент использует dedicated соединение? Никакие пулы сессий, случайно, не используются?
И секции инициализации точно нет в конце пакета? (про переменные понятно). По поведению, все-таки, похоже, что-то переинициализируется после изменения спецификации пакета.

Кстати, текст процедуры был приведен в конце сообщения , если вдруг кто-то не заметил...
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39316123
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще бы текст pf_json_error было бы хорошо привести...
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39316225
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Деев И.Еще бы текст pf_json_error было бы хорошо привести...
Да лучше наверное неформатированную (raw) трассу 10046 level 4 по проблемной сессии... Хоть вызов увидим и рекурсивные курсоры.
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39316696
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Деев И.А клиент использует dedicated соединение? Никакие пулы сессий, случайно, не используются?
И секции инициализации точно нет в конце пакета? (про переменные понятно). По поведению, все-таки, похоже, что-то переинициализируется после изменения спецификации пакета.

Кстати, текст процедуры был приведен в конце сообщения , если вдруг кто-то не заметил...

В основном использую dedicated да, но но проблема повторяется как с клиента PL\SQL Developer так и с dedicated соединения на клиенте

Деев И.Еще бы текст pf_json_error было бы хорошо привести...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
create or replace procedure pf_json_error ( ER_Msg varchar2, ER_JSON varchar2, AIP varchar2 default null ) as pragma autonomous_transaction;
-- [25/01/2015] Записывает ошибки
begin
 insert into pf_json_errors(er_date,er_msg,er_json,ip)
   values (sysdate,Er_msg,Er_JSON,AIP);
 commit;
end;



andrey_anonymousДеев И.Еще бы текст pf_json_error было бы хорошо привести...
Да лучше наверное неформатированную (raw) трассу 10046 level 4 по проблемной сессии... Хоть вызов увидим и рекурсивные курсоры.

Самое главное как я и говорил, проблема не в конкретной сессии, когда залипает процедура, то можно выключать\включать клиент, можно PL\SQL Developer включить\выключить, ничего не поменяется, процедура так и будет залипшей, лечится исключительно инвалидацией пакета, других методов пока не нашел, вот это и есть основная проблема, если увидеть что она залипла - можно развалить пакет и снова собрать и все будет идеально, можно даже ни где не переподключаться

Ошибку эту никак не отследить, кроме как глазами увидеть что упало что-то на клиенте, и то, по факту ничего не падает, просто данные отдаются совсем не те, что есть в базе в текущий момент и логирования не происходит этой процедуры, вот только по этим двум признакам можно определить залипуху
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39317215
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zalm,
и это только с одним пакетом такое творится? Чем он такой особенный, интересно. Постоянно ли такое было с этим пакетом или началось ни с того ни с сего?

Бывало такое несколько раз, что возникали какие-то необъяснимые явления на базах, где многие разработчики или тестировщики активно накатывали изменения и т.п. Лечилось топорно - сбросом библиотечного кеша или перезагрузкой инстанса. Может, попробовать? Вдруг поможет...
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39317995
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm
andrey_anonymousпропущено...
лучше наверное неформатированную (raw) трассу 10046 level 4 по проблемной сессии... Хоть вызов увидим и рекурсивные курсоры.

Самое главное как я и говорил, проблема не в конкретной сессии, когда залипает процедура, то можно выключать\включать клиент, можно PL\SQL Developer включить\выключить, ничего не поменяется, процедура так и будет залипшей, лечится исключительно инвалидацией пакета, других методов пока не нашел
...
Ошибку эту никак не отследить
Мсье противоречит сам себе.
Если проблемное состояние стабильно - то подключаетесь, включаете трассировку и делаете вызов.
В трассе смотрите - кто, кого, как, когда и зачем позвал.
Или не позвал.
Или позвал, но не только того, кого ожидалось
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39318018
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Прямо в Pl/sql developer есть Pl/sql трассировка
...
Рейтинг: 0 / 0
Непредсказуемое кеширование
    #39318025
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderПрямо в Pl/sql developer есть Pl/sql трассировкадля этого надо пакет с отладочной инфой перекомпилить, ситуация уйдёт
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Непредсказуемое кеширование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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