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

Откуда:
Сообщений: 9
Добрый день,

прошу помощи.

Имеется скрипт который отлично работает вне триггера...

set serveroutput on

DECLARE
 value VARCHAR2(32000);
BEGIN
 value := utl_http.request('http://userlink/');
  dbms_output.put_line(value);

END;
/



... но как только доходит дело до триггера, то получаю "identifier 'UTL_HTTP' must be declared

скрипт триггера:

CREATE OR REPLACE TRIGGER TRIGGER1
 AFTER INSERT ON TABLE1
 for each row
WHEN (new.create_date=to_date(sysdate,'DD-MM-YY'))
DECLARE
 value VARCHAR2(32000);
BEGIN
 value := utl_http.request('http://userlink/');
  dbms_output.put_line(value);

END;
/



Как объявить не понимаю, подскажите люди добрые :)
Заранее большое спасибо!)
27 июн 13, 15:09    [14492260]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
GRANT ... TO <user>
27 июн 13, 15:11    [14492275]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
tru55, спасибо.

поставил GRANT EXECUTE ON UTL_HTTP TO <user>

триггер успешно создался, но при добавлении данных (условии работы самого триггера) выдает

ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1722
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at "TWITTERBETA.TWITTERBETA5", line 6
ORA-04088: error during execution of trigger 'TWITTERBETA.TWITTERBETA5'


Я так полагаю нужно все проделать как описано в http://all-oracle.ru/content/view/?part=1&id=38
верно? или же можно найти иной выход вызова ссылки?

Заранее спасибо.
28 июн 13, 13:41    [14497132]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2386
Блог
yungfate,

http вызов в триггере - мягко говоря странная архитектура. Вам надо оповещать кого-то о событии? Пихайте в триггере в очередь и джобом выгребайте из очереди с дерганием http.
28 июн 13, 14:05    [14497325]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
Павел Воронцов,
мне необходимо ссылаться на url (в триггере), который в свою очередь выполняет кое-какие иные действия ,
кроме UTL_HTTP я ничего не нашел.

Если есть иные методы то подскажите пожалуйста.
28 июн 13, 14:27    [14497460]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
Алымов Анатолий
Member

Откуда: Оренбург
Сообщений: 1309
А если rollback пройдет? А вы "там" уже поменяли что-то.
28 июн 13, 14:29    [14497475]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
Алымов Анатолий,

пока этот вариант исключается.
Все проходит 100% через commit.

но в дальнейшем буду разбирать это условие, спасибо.
28 июн 13, 14:40    [14497563]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
JaRo
Member

Откуда:
Сообщений: 1659
yungfate
Все проходит 100% через commit.
Вот бы мне такую уверенность :) Идеальный мир...
28 июн 13, 14:54    [14497668]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
JaRo
yungfate
Все проходит 100% через commit.
Вот бы мне такую уверенность :) Идеальный мир...

ага. про красную шапочку сказ.
из пункта A куда-то вышли три рубля, тут и <сказочке конец>

ТС читать основы про транзакционность. по просветлению - разъяснить постановщикам задачи, под что они подписываются ничтоже сумляшеся
28 июн 13, 15:18    [14497844]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
orawish,

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

Это бесконечно классно являться профессионалом своего дела и тыкать в незнание новичков.
Но еще лучше просто помочь человеку, я так полагаю, для Вас это не составит труда.

Спасибо.
28 июн 13, 15:25    [14497893]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Дык все вроде ясно -- других способов нет (для PL/SQL), в 11g ужесточилась система безопасности (подробности в Upgrade Guide)
Настроить ACL на все (как раньше) работы на пару минут

А про очередь не зря сказали -- подумай, триггер не закончит работу (соответственно, не отработает взорвавший его оператор) пока не отработает utl_http.request. А там таймаут может быть весьма неслабым...
28 июн 13, 16:12    [14498233]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2386
Блог
yungfate
Это бесконечно классно являться профессионалом своего дела и тыкать в незнание новичков.
Но еще лучше просто помочь человеку, я так полагаю, для Вас это не составит труда.
Ну так тебе и пытаются помочь. Бескорыстно и благожелательно. Ты спрашиваешь как решить задачу, тебе говорят, что в условии задачи ошибка, ее решение не будет правильным в любом случае.
1 июл 13, 09:01    [14503170]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
выражаю свою благодарность за помощь ребята)

я не желал кого-либо задеть
4 июл 13, 07:42    [14520005]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
Павел Воронцов,

и Вы были правы :)

Возможна ли проверка на commit?
10 июл 13, 10:20    [14545108]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
JaRo
Member

Откуда:
Сообщений: 1659
yungfate
Возможна ли проверка на commit?
Не очень понятен вопрос. Имеется ввиду, что-то типа триггера на любой commit? Такого нет.
10 июл 13, 10:24    [14545124]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
JaRo,

что-то вроде

CREATE OR REPLACE TRIGGER TRIGGER1
AFTER INSERT ON TABLE1
ON COMMIT

такого волшебного кода нет?)
10 июл 13, 10:26    [14545135]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
JaRo
Member

Откуда:
Сообщений: 1659
нет
10 июл 13, 10:37    [14545220]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
yungfate
Member

Откуда:
Сообщений: 9
JaRo,

жаль(

и получается что нет никаких иных альтернатив?
чтобы обойти как то данную ситуацию
10 июл 13, 10:54    [14545362]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
JaRo
Member

Откуда:
Сообщений: 1659
Ну так было уже в ветке: ставите в очередь сообщение. Очередь транзакционна, так что реально сообщение пройдёт только по commit.
10 июл 13, 11:04    [14545421]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
JaRo
Очередь транзакционна, так что реально сообщение пройдёт только по commit.

Всегда? ;)
10 июл 13, 12:49    [14546301]     Ответить | Цитировать Сообщить модератору
 Re: Триггер и UTL_HTTP  [new]
JaRo
Member

Откуда:
Сообщений: 1659
ten
JaRo
Очередь транзакционна, так что реально сообщение пройдёт только по commit.
Всегда? ;)
Ok, уточним: при дефолтном visibility :)
10 июл 13, 15:01    [14547389]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить