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

Откуда:
Сообщений: 65
Есть функция в котрой формируется курсор по результату другой функции
FOR com_rec IN
(
	SELECT t1.command_id
	FROM table(get_child_commands(CAST (command_id AS NUMBER(19)))) t1
)
LOOP
	result := transport_command(com_rec.command_id);
END LOOP;
сама функция выполняется в автономной транзакции, и функции get_child_commands и transport_command тоже.
При попытке выпольнить функцию вылетает ошибка, что принят сигнал конца файла по коммуникационному каналу.
Если вместо
SELECT t1.command_id FROM table(get_child_commands(CAST (command_id AS NUMBER(19))))
Поставить
SELECT 123 command FROM dual
то все работает номарльно.
Не знаю где копать даже, в чем ошибка?
30 сен 06, 10:53    [3206257]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116328
А сама по себе функция get_child_commands
вызывается без проблем ?

Покажите ее .
В чем необходимость автономной транзакции ?
Вы в функции get_child_commands делаете INSERT/UPDATE/DELETE/MERGE ?
30 сен 06, 11:08    [3206275]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
   FUNCTION get_child_commands
   ( par_com_id IN NUMBER)
   RETURN  child_com_table parallel_enable pipelined
   IS
   PRAGMA AUTONOMOUS_TRANSACTION;
   BEGIN
        FOR i IN
            (
                SELECT  t1."command_id" com_id
                FROM activation_command@MSSQL_LINK t1
                WHERE   t1."par_command_id" = par_com_id
                        AND t1."date_begin" <= sysdate
            )
        LOOP
            pipe row (i);
        END LOOP;
        COMMIT;
        RETURN;
   END;
А автономная потому, что у меня не работают распределенные транзакции, настроить их у меня не получилось: MSSQL 2000 рядом с ним Oracle 9 на винде, как transparent getaway (tg4msql) и oracle сервер на Linux.
30 сен 06, 11:17    [3206288]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Да кстати если убераю вызов transport_command, которая в свою очередь лезет в MSSQL, то все работает. Может проблема в том что не может за одну сессию два канала связи открыться, может есть какие то настройки такие?
1 окт 06, 14:09    [3207547]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Неужели никто с подобным не сталкивалься? Нужна помощь как можно скорее, а то работа стоит.
2 окт 06, 09:42    [3208726]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8136
serg_luk
Неужели никто с подобным не сталкивалься? Нужна помощь как можно скорее, а то работа стоит.
А что говорит техническая поддержка Oracle?
2 окт 06, 10:02    [3208787]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Если бы была она, эта техническая поддержка. ;)
2 окт 06, 10:08    [3208803]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
serg_luk
принят сигнал конца файла по коммуникационному каналу.
Не знаю где копать даже, в чем ошибка?

"принят сигнал конца файла по коммуникационному каналу", ORA-3113, является признаком аварийного завершение серверного процесса.
Смотреть alert.log и трейс, который будет указан в описании очень вероятной ora-600.
2 окт 06, 10:11    [3208818]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Ни ORA-3113, ни ora-600 в логе не нашел.
2 окт 06, 10:24    [3208905]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
serg_luk
Ни ORA-3113, ни ora-600 в логе не нашел.

Имеется ввиду серверный alert<SID>.log
2 окт 06, 10:25    [3208915]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Я его и смотрел, не думайте что уж совсем чайник.
2 окт 06, 10:27    [3208922]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
serg_luk
Я его и смотрел, не думайте что уж совсем чайник.

Тогда включите трассировку.
2 окт 06, 10:29    [3208937]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
andrey_anonymous
serg_luk
Я его и смотрел, не думайте что уж совсем чайник.

Тогда включите трассировку.

Поподробней если можно, а то вроде как трассировка идет, может не совсем такая как нужно?
2 окт 06, 10:31    [3208949]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
serg_luk
andrey_anonymous
включите трассировку.

Поподробней если можно, а то вроде как трассировка идет, может не совсем такая как нужно?

https://www.sql.ru/faq/faq_topic.aspx?fid=389
2 окт 06, 10:34    [3208963]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
ORA-07445: ▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒: core dump [7FF00000] [SIGSEGV] [Address not mapped to object] [0x7FF00000] [] []

Интересно, что бы это значило.
Попытался заменить прямой запрос к MSSQL в функции transport_command на запрос через DBMS_HS_PASSTHROUGH, перестало разрывать связь, зато вылетает с ошибкой на OPEN_CURSOR. Походу не может hgb открытом курсоре в удаленную бд, открыть еще один.
2 окт 06, 11:09    [3209150]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Ну так что, есть у кого еще мысли?
2 окт 06, 12:20    [3209627]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
serg_luk
Ну так что, есть у кого еще мысли?

Ora-7445 - в некотором смысле коллега ora-600.
В том смысле, что "в данном случае огромное значение имеют параметры".
А у Вас вместо них - какие-то точки :)
2 окт 06, 12:25    [3209666]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
в трейс файле пустота на этом месте. видимо при копировании так получилось.
2 окт 06, 12:35    [3209753]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
В таблице MSSQL есть поля типа NTEXT?
2 окт 06, 12:41    [3209809]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
нет
2 окт 06, 12:43    [3209823]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Проблема в PRAGMA AUTONOMOUS_TRANSACTION, как только комментирую ее функция отрабатывает. А как без нее если функция вызывается в триггере, а он пытается открыть распределенную транзакцию :(.
2 окт 06, 12:49    [3209856]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с курсором  [new]
serg_luk
Member

Откуда:
Сообщений: 65
Вобщем забил и создал процедуру на MSSQL и ее дергаю.
2 окт 06, 19:31    [3212452]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить