Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 помогите советом по ora-1013  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
сделали мы у себя в приложении возможность прерывания длительных запросов (запускаем и отслеживаем через stream)
админы недовольны - валятся ошибки ora-1013, а с ними алерты, на которые админам надо реагировать

+
Есть несколько приложений с долгоиграющими запросами
Запросы с удаленкой, подзапросами, UDFами, группировками и аналитикой. Полный фарш.
Длительность может зависить от задаваемых параметров – например, ограничить данные конкретным цехом или нет.
Сделали отбор в отдельном потоке – с возможностью прерывания этого запроса. Чтобы пользователь мог остановить и все-таки задать цех.

Теперь админы недовольны – звонят недовольным голосом несколько раз в день и требуют прекратить безобразия:
При остановке запроса нередко валится ora-1013 - user requested cancel of current operation tips. И валится в алерты (или куда-то еще) с автоматической регистрацией в нашем Service Desk'е.
Админов понять тоже можно - любое событие должно быть отработано.

Посоветуйте пути решения ситуации:
- ускорить запрос - понятное требование, но не всегда реально; да и хочется решить ситуацию в целом.
- каким-то образом избегать ORA-01013. Каким? Убрать из запросов удаленку и UDF не получается
- Есть еще метод решения - каким-то образом связывать события в алерте (или где там) и прерывания запроса и заявки в Service Desk. Например, доработать блок "Остановить запрос" – писать строку в какую-то таблицу с идентификатором прерванной сессии и датой прерывания, и т.д.
9 фев 16, 13:47    [18793054]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
Nobody1111
Guest
Почему бы не перехватывать в блоке plsql exception на код ошибки ORA-1013?
9 фев 16, 15:58    [18794242]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
Nobody1111
Почему бы не перехватывать в блоке plsql exception на код ошибки ORA-1013?
если я прерываю выполнение этого самого блока, то мне не верится, что в нем я перехвачу ошибку
9 фев 16, 16:29    [18794494]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
SQL> edi
Wrote file afiedt.buf

  1  DECLARE
  2    e_cancelled EXCEPTION;
  3    PRAGMA EXCEPTION_INIT(e_cancelled, -1013);
  4  BEGIN
  5      RAISE e_cancelled;
  6    EXCEPTION
  7      WHEN e_cancelled THEN RAISE_APPLICATION_ERROR(-20020,'BLOCK CANCEL');
  8* END;
SQL> /
DECLARE
*
ERROR at line 1:
ORA-20020: BLOCK CANCEL
ORA-06512: at line 7
9 фев 16, 16:43    [18794631]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
я же прерываю запрос снаружи
9 фев 16, 17:00    [18794802]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
andreymx
я же прерываю запрос снаружи

А какая разница?
9 фев 16, 17:02    [18794813]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
SYS@cdb441 SQL> edi
Wrote file afiedt.buf

  1  DECLARE
  2    e_cancelled EXCEPTION;
  3    PRAGMA EXCEPTION_INIT(e_cancelled, -1013);
  4  BEGIN
  5      RAISE e_cancelled;
  6    EXCEPTION
  7      WHEN e_cancelled THEN
  8      RETURN;
  9  -- RAISE_APPLICATION_ERROR(-20020,'BLOCK CANCEL');
 10* END;
SYS@cdb441 SQL> /

PL/SQL procedure successfully completed.

SYS@cdb441 SQL> edi
Wrote file afiedt.buf

  1  DECLARE
  2    e_cancelled EXCEPTION;
  3    PRAGMA EXCEPTION_INIT(e_cancelled, -1013);
  4  BEGIN
  5      RAISE e_cancelled;
  6  --  EXCEPTION
  7  --    WHEN e_cancelled THEN
  8  --    RETURN;
  9  -- RAISE_APPLICATION_ERROR(-20020,'BLOCK CANCEL');
 10* END;
SYS@cdb441 SQL> /
DECLARE
*
ERROR at line 1:
ORA-01013: user requested cancel of current operation
ORA-06512: at line 5
9 фев 16, 17:05    [18794841]     Ответить | Цитировать Сообщить модератору
 Re: помогите советом по ora-1013  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
Вот почитай что такое сигналы в UNIX (В Oracle практически то же самое, за исключением кодов сигналов)
Сигналы (UNIX)
9 фев 16, 17:13    [18794900]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить