Текущее время: Вт, июл 22 2025, 21:05

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 17:44 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
Проблема в следующем:
1) Есть процедура на PL\SQL, индексирующая текст, при запуске из консоли работает корректно. Все видно и все замечательно.
2) При запуске из SAP происходит дамп с ошибкой (судя по тексту - переиндексация вызывается автоматически во время вставки в таблицу)
Code:
Database error text........: "ORA-29875: failed in the execution of the       
ODCIINDEXINSERT routine#ORA-20000: interMedia Text error:#DRG-10602: failed to queue DML change to column for primary key #DRG-50100: CORE LSF error:    4294967295#ORA-06512: at "ZZZ", line 43 Triggering SQL statement...: " ? ? ? ? ? _RESUME_IDX REBUILD ONLINE parameters  ( 'SYNC' )"                                                                   
Internal call code.........: "[DBDS/NEW DSQL]"                                 

3) Пересоздал индекс и сделал его обновление как REBUILD parameters ( 'SYNC' )". При вызове вижу тот же самый дамп (т.е. слово ONLINE присутствует в тексте).

Вопрос:
1) Откуда SAP берет вызываемые процедуры? Ини кешируются или по-честному каждый раз берутся из ORACLE?

2) Если процедуры кешируются, то как очистить кеш без перезагрузки системы?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 18:07 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
rush7ka написал(а):
Проблема в следующем:
1) Есть процедура на PL\SQL, индексирующая текст, при запуске из консоли работает корректно. Все видно и все замечательно.
2) При запуске из SAP происходит дамп с ошибкой (судя по тексту - переиндексация вызывается автоматически во время вставки в таблицу)
Code:
Database error text........: "ORA-29875: failed in the execution of the       
ODCIINDEXINSERT routine#ORA-20000: interMedia Text error:#DRG-10602: failed to queue DML change to column for primary key #DRG-50100: CORE LSF error:    4294967295#ORA-06512: at "ZZZ", line 43 Triggering SQL statement...: " ? ? ? ? ? _RESUME_IDX REBUILD ONLINE parameters  ( 'SYNC' )"                                                                   
Internal call code.........: "[DBDS/NEW DSQL]"                                 

3) Пересоздал индекс и сделал его обновление как REBUILD parameters ( 'SYNC' )". При вызове вижу тот же самый дамп (т.е. слово ONLINE присутствует в тексте).

Вопрос:
1) Откуда SAP берет вызываемые процедуры? Ини кешируются или по-честному каждый раз берутся из ORACLE?

2) Если процедуры кешируются, то как очистить кеш без перезагрузки системы?


Причём тут Sap и какое он имеет отношение к оракловым процедурам?
Падает ведь оракле в процедуре - ему явно не нравиться следующие -

DRG-10602: failed to queue DML change to column for primary key
Не думаю что это Sap пытается изменить столбец первичного ключа.

ЗЫ:
Цитата:
DRG-10602: failed to queue DML change to column %(1)s for primary key %(2)s

Cause: The system could not record that a change had been made to the given column.

Action: See next error on stack to determine course of action. Contact Oracle Support if necessary. Until this error is fixed, updates to all text columns in the given table may not be indexed.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 18:20 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
sy-uname написал(а):
Причём тут Sap и какое он имеет отношение к оракловым процедурам?
Падает ведь оракле в процедуре - ему явно не нравиться следующие - DRG-10602: failed to queue DML change to column for primary key Не думаю что это Sap пытается изменить столбец первичного ключа.
ЗЫ:
Цитата:
DRG-10602: failed to queue DML change to column %(1)s for primary key %(2)s

Cause: The system could not record that a change had been made to the given column.

Action: See next error on stack to determine course of action. Contact Oracle Support if necessary. Until this error is fixed, updates to all text columns in the given table may not be indexed.

1) SAP при том, что на точно такой же системе все прекрасно работает, Данная функция просто перенесена в QAS-систему.

2) Текст в коде ошибке не соответствует тому, который был последним залит в систему (" ? ? ? ? ? _RESUME_IDX REBUILD ONLINE parameters ( 'SYNC' )") - слова ONLINE уже давно нет в коде процедуры. При попытке вызывать из SAP индексацию отдельно (тот кусок кода Oracle, который якобы падает) все выполняеться хорошо. Поэтому появилось предположение, что функция кешируется.

3) Если я ничего не путаю, то при транспорте объекты должны соответствовать друг другу (по крайней мере в SAP Dictionary все одинаково). То есть ошибок в определении объектов нет. Вопрос - откуда тогда берется ошибка обработки, если комплект инсталяции и набор объектов одинаковы (инсталяция на обоих системах производилась с интервалом 3 часа, ошибок инсталяции не было).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 18:30 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
rush7ka написал(а):
...

3) Если я ничего не путаю, то при транспорте объекты должны соответствовать друг другу (по крайней мере в SAP Dictionary все одинаково). То есть ошибок в определении объектов нет. Вопрос - откуда тогда берется ошибка обработки, если комплект инсталяции и набор объектов одинаковы (инсталяция на обоих системах производилась с интервалом 3 часа, ошибок инсталяции не было).

Что-то я подзабыл - где это в SAP Dictionary можно создавать и носить хранимые оракловые процедуры?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 18:35 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
sy-uname написал(а):
rush7ka написал(а):
...

3) Если я ничего не путаю, то при транспорте объекты должны соответствовать друг другу (по крайней мере в SAP Dictionary все одинаково). То есть ошибок в определении объектов нет. Вопрос - откуда тогда берется ошибка обработки, если комплект инсталяции и набор объектов одинаковы (инсталяция на обоих системах производилась с интервалом 3 часа, ошибок инсталяции не было).

Что-то я подзабыл - где это в SAP Dictionary можно создавать и носить хранимые оракловые процедуры?


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

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 18:43 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
rush7ka написал(а):
.... Вопрос о том, что может не работать пока открыт. Если есть идеи - буду раз услышать.

Что-то не работает, а вот что - нет ни кода вызова хранимки, ни текста самой процедуры. Да и точно ли оно тас в системе такое, какое хотели залить?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 19:02 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
sy-uname написал(а):
Что-то не работает, а вот что - нет ни кода вызова хранимки, ни текста самой процедуры.

Текст процедуры вот он, если это что-то изменит.
Code:
  CREATE OR REPLACE PROCEDURE zhr_itc_get_ora_list2 (
    req_string_   IN   VARCHAR2,
    sort_type_    IN   VARCHAR2,
    valid_from_   IN   NUMBER,
    valid_to_     IN   NUMBER,
    mandt_        IN   NUMBER,
    uname_        IN   VARCHAR2,
    datum_        IN   VARCHAR2,
    useit_        IN   VARCHAR2,
    start_pos_    IN   NUMBER,
    max_lines_    IN   NUMBER
  )
  IS
  BEGIN
    IF sort_type_ = 'R'
       THEN
         INSERT INTO zitc_ora_exch ( mandt, uname, datum, useit,
          ora_rpern, ora_kdate, ora_ksegm, ora_kfile, rel_value,
            line_id)
             SELECT q_r.*, rownum rn
               FROM (  SELECT  to_char(ora_mandt), uname_, datum_,
                 useit_, to_char(ora_rpern), to_char(ora_kdate),
                 to_char(ora_ksegm), ora_kfile,
                  contains (ora_blob, req_string_)
                     FROM zitc_ora_text
                     WHERE contains (ora_blob, req_string_) > 0
                       AND ora_mandt = mandt_
                       AND ora_kdate >= valid_from_
                       AND ora_kdate <= valid_to_
                     ORDER BY contains (ora_blob, req_string_) DESC,
                        ora_rpern ASC, ora_kdate DESC, ora_ksegm ASC,
                        ora_kfile ASC )
                   q_r
                   WHERE ROWNUM BETWEEN start_pos_ AND
                           start_pos_ + max_lines_ - 1;
                    COMMIT;
    END IF;

    IF sort_type_ = 'T'
        THEN
      INSERT INTO zitc_ora_exch ( mandt, uname, datum, useit, ora_rpern,
         ora_kdate, ora_ksegm, ora_kfile, rel_value, line_id)
             SELECT q_t.*, rownum rn
               FROM ( SELECT to_char(ora_mandt), uname_, datum_, useit_,
                  to_char(ora_rpern), to_char(ora_kdate),
                   to_char(ora_ksegm), ora_kfile,
                   contains (ora_blob, req_string_)
                       FROM zitc_ora_text
                       WHERE contains (ora_blob, req_string_) > 0
                         AND ora_mandt = mandt_
                         AND ora_kdate >= valid_from_
                         AND ora_kdate <= valid_to_
                       ORDER BY ora_kdate DESC, ora_rpern ASC,
                         ora_ksegm ASC, ora_kfile ASC )
                    q_t
              WHERE ROWNUM BETWEEN start_pos_ AND
                       start_pos_ + max_lines_ - 1;
            COMMIT;
    END IF;
  EXCEPTION
   WHEN OTHERS
   THEN
       BEGIN
         ROLLBACK;
       END;
  END;
  /

Вызов типовой
Code:
    EXEC SQL.
      EXECUTE PROCEDURE ZHR_ITC_GET_ORA_LIST2 (
            IN :lv_REQ_STRING,
            IN :IM_SORT_TYPE,
            IN :IM_VALID_FROM,
            IN :lv_control_date,
            IN :lv_MANDT,
            IN :lv_UNAME,
            IN :lv_DATUM,
            IN :lv_UZEIT,
            IN :lv_stp,
            IN :lv_mlin )
    ENDEXEC.

Но я так полагаю, что не в параметрах вызова проблема - на системе разработки все прекрасно работает отовысюду. На QAS - только из-под консоли.
sy-uname написал(а):
Да и точно ли оно тас в системе такое, какое хотели залить?
Если закоментировать вызов процедуры, пройтись отладчиком до точки вызова, вызвать вручную на консоли процедуру, а затем продолжить выполнение в SAP - все отработает правильно. Это то ли проблема синхронизации индекса на Oracle (но тогда старнно почему оно нормально работает на разработке), то ли проблема настроек в SAP (но тогда непонятно каких настроек - процедура-то находится и вызывается), то ли еще непонятно что.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 19:38 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
rush7ka написал(а):
...
Но я так полагаю, что не в параметрах вызова проблема - на системе разработки все прекрасно работает отовысюду. На QAS - только из-под консоли.
...

Национальные параметры для обеих баз (для сапа) одинаковые? to_char на обеих системах возвращает одинаковый результат?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибки при вызове из SAP процедур на PL\SQL
СообщениеДобавлено: Вт, апр 10 2007, 19:43 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
sy-uname написал(а):
rush7ka написал(а):
...
Но я так полагаю, что не в параметрах вызова проблема - на системе разработки все прекрасно работает отовысюду. На QAS - только из-под консоли.
...

Национальные параметры для обеих баз (для сапа) одинаковые? to_char на обеих системах возвращает одинаковый результат?

А как это проверить? Транзакция в SAP есть? У меня просто не постоянный доступ к консоли - надо знать что спросить у админов.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 10 2007, 21:17 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Вы бы для проверки скопировали хронь в ZHR_ITC_GET_ORA_LIST2_NEW и вызвали. Может это исключит влияние кэширования, если оно имеет место быть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 10 2007, 21:51 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
vga написал(а):
Вы бы для проверки скопировали хронь в ZHR_ITC_GET_ORA_LIST2_NEW и вызвали. Может это исключит влияние кэширования, если оно имеет место быть.

Необязательно переименовывать. Достаточно просто закоментировать тело процедуры. И убедиться в наличии или отсутствии дампа.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 11 2007, 08:35 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
ИМХО, если дать новое имя, это будет иметь несколько иной эффект, в плане проверки кеширования, чем просто закомментировать тело процедуры. Для чистоты эксперимента.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 11 2007, 08:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
vga написал(а):
ИМХО, если дать новое имя, это будет иметь несколько иной эффект, в плане проверки кеширования, чем просто закомментировать тело процедуры. Для чистоты эксперимента.


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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 11 2007, 09:28 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Вы считаете, что дело только в кешировании хранимой процедуры на Oracle и полностью исключаете влияние кешей в SAP?
Я же предлагаю исключить кеширование как самой хрони, так и программы, ее вызывающей (потому что будет изменено имя вызывающей процедуры в коде абап).

Хотя сдается мне, что если проблема в кешировании, сегодня уже бы все заработало. Где автор? ;-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 11 2007, 10:03 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
vga написал(а):
Хотя сдается мне, что если проблема в кешировании, сегодня уже бы все заработало. Где автор? ;-)

Автор здесь. Сделали сброс кеша - пока что эффект никакой. То есть не то, чтобы совсем никакой, но не тот, что надо.
Теперь на выходе имею другой дамп:
Code:
Database error text........: "ORA-29875: failed in the execution of the           
ODCIINDEXINSERT routine#ORA-20000: interMedia Text error:#DRG-10602: failed to   
queue DML change to column ORA_BLOB for primary key #DRG-50100: CORE LSF         
error: 4294967295#ORA-06512: at "SAPR3.ZHR_ITC_ORA_PASTE2", l                   
Triggering SQL statement...: " ? ? ? ? ? l ( maxbytes, 0 ) - bytes ) from         
dba_data_files where tablespace_name = ? and nvl ( maxbytes, 0 ) > bytes"       
Internal call code.........: "[DBDS/NEW DSQL]"                                   

Ребята, объясните пожалуйста:
1) если кто в курсе что такое CORE LSF ?
2) "tablespace_name = ?" - это что за зверь? Не определено пространство имен для объекта?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB