CftClub.ru
Клуб специалистов ЦФТ-Банк

работа операции, без блокировки this

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеЧт Июл 03, 2014 10:17   работа операции, без блокировки this Ответить с цитатой
Полезность: Нет оценки
Здравствуйте, уважаемые знатоки.
Решаю такую задачу:
у нас много джобов, и короткое технологическое окно для накатов. при остановке джобов нужно искать сессии и рубить их, что отнимает время.
Озадачился я вопросом создания операции по удалению задания из очереди вместе с его сессией.

Все написал, снял галочки на операции "Проверка изменения экземпляра" и "Блокировка по умолчанию", согласно соседней темы http://cftclub.ru/viewtopic.php?t=290&highlight=%E1%EB%EE%EA%E8%F0%EE%E2+this

однако, при запуске выдает ошибку "неверно предложение на языке SQL"

в теле выполняю execute immediate ibs.method.kill_session
либо ibs.runtime.rtl.sql_execute ...
если я закомменчу этот вариант - операция отрабатывает этот блок, и ошибок не выдает.


подскажите как найти ошибку? пакет валидный.
Amper
Профи


Вступление в Клуб: 29.10.2010
СообщениеЧт Июл 03, 2014 10:34   Re: работа операции, без блокировки this Ответить с цитатой
Полезность: Нет оценки
wolfio пишет:
Здравствуйте, уважаемые знатоки.
Решаю такую задачу:
у нас много джобов, и короткое технологическое окно для накатов. при остановке джобов нужно искать сессии и рубить их, что отнимает время.
Озадачился я вопросом создания операции по удалению задания из очереди вместе с его сессией.

Все написал, снял галочки на операции "Проверка изменения экземпляра" и "Блокировка по умолчанию", согласно соседней темы http://cftclub.ru/viewtopic.php?t=290&highlight=%E1%EB%EE%EA%E8%F0%EE%E2+this

однако, при запуске выдает ошибку "неверно предложение на языке SQL"

в теле выполняю execute immediate ibs.method.kill_session
либо ibs.runtime.rtl.sql_execute ...
если я закомменчу этот вариант - операция отрабатывает этот блок, и ошибок не выдает.


подскажите как найти ошибку? пакет валидный.

Если я правильно понял проблему, то Вам, видимо, нужно взять аргумент execute immediate в одинарные кавычки.
Reddom
Участник со стажем


Вступление в Клуб: 25.01.2013
СообщениеЧт Июл 03, 2014 12:03    Ответить с цитатой
Полезность: Нет оценки
Попробуй в этой области покапать:

Код:

declare
       v_session varchar2(200);
begin
       select sid||','||serial# into v_session from V$SESSION where sid = ***;
       execute immediate 'begin ibs.method.kill_session('''||v_session||'''); end;';
end;
Reddom
Участник со стажем


Вступление в Клуб: 25.01.2013
СообщениеЧт Июл 03, 2014 12:10    Ответить с цитатой
Полезность: Нет оценки
Хотя суть выполнить это:

Код:
ALTER SYSTEM KILL SESSION 'sid,serial#';


по-моему, ibs.method.kill_session делает тоже самое
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеПт Июл 04, 2014 00:34    Ответить с цитатой
Полезность: Нет оценки
Reddom пишет:
Хотя суть выполнить это:

Код:
ALTER SYSTEM KILL SESSION 'sid,serial#';


по-моему, ibs.method.kill_session делает тоже самое


Да, но в методе стоит ище журналирование.

Все оказалось проще, я не правильно передавал параметры в kill_session.
думал что нужно передать 2 параметра, sid и serial#, а оказалось, что это один параметр.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Июл 08, 2014 09:24    Ответить с цитатой
Полезность: Нет оценки
Reddom пишет:
Попробуй в этой области покапать:

Код:

declare
       v_session varchar2(200);
begin
       select sid||','||serial# into v_session from V$SESSION where sid = ***;
       execute immediate 'begin ibs.method.kill_session('''||v_session||'''); end;';
end;


Зачем execute immediate?
установить галочку "Расширенный синтаксис" и можно писать сразу method.kill_session();
Reddom
Участник со стажем


Вступление в Клуб: 25.01.2013
СообщениеВт Июл 08, 2014 09:42    Ответить с цитатой
Полезность: Нет оценки
Random пишет:

Зачем execute immediate?
установить галочку "Расширенный синтаксис" и можно писать сразу method.kill_session();

Это был pl/sql, если вы не обратили внимание (into v_session from) Smile - Человек в вопросе писал:
wolfio пишет:

в теле выполняю execute immediate ibs.method.kill_session
либо ibs.runtime.rtl.sql_execute ...
если я закомменчу этот вариант - операция отрабатывает этот блок, и ошибок не выдает.

wolfio пишет:

Все оказалось проще, я не правильно передавал параметры в kill_session

Надеюсь информация вам помогла:
Reddom пишет:

select sid||','||serial# into v_session from V$SESSION where sid = ***;
execute immediate 'begin ibs.method.kill_session('''||v_session||'''); end;';
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Июл 09, 2014 13:09    Ответить с цитатой
Полезность: Нет оценки
Reddom пишет:
Random пишет:

Зачем execute immediate?

Это был pl/sql


В любом случае, я не понимаю, зачем нужен execute immediate.
чем прямой вызов не нравится?
wolfio
Участник - экстремал


Вступление в Клуб: 22.10.2012
СообщениеСр Июл 16, 2014 04:48    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Reddom пишет:
Random пишет:

Зачем execute immediate?

Это был pl/sql


В любом случае, я не понимаю, зачем нужен execute immediate.
чем прямой вызов не нравится?


ну так в прямом вызове надо будет делать pl/sql вставку
зачем она, если можно использовать execute immediate? у него есть серьезные отличия от прямого вызова?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПн Июл 28, 2014 10:57    Ответить с цитатой
Полезность: Нет оценки
wolfio пишет:
Random пишет:
Reddom пишет:
Random пишет:

Зачем execute immediate?

Это был pl/sql


В любом случае, я не понимаю, зачем нужен execute immediate.
чем прямой вызов не нравится?


ну так в прямом вызове надо будет делать pl/sql вставку
зачем она, если можно использовать execute immediate? у него есть серьезные отличия от прямого вызова?


И pl/sql-вставку делать не надо.
Всё и так хорошо, прямым включением вызова в тело операции.
Просто включи флажок "Расширенный синтаксис"
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru