powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
16 сообщений из 16, страница 1 из 1
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999769
Sergey Balter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нашей системе на базу Oracle имеется (updateable) view. Установленная у заказчика SAP запрашивает поодиночке записи из View. Идентифицировано 4 строчки (из нескольких сотен) View, запрос которых вызывает ошибку ORA-01747. Текст SQL-запроса не меняется, меняются только параметры WHERE. Выполнение этого SQL-запроса из sqlplus или HORA на той же системе выполняется без ошибок, однако вызов из потрохов SAP (в ABAP) стабильно приводит к исключению ORA-01747.

Запрос к данным из SAP ABAP выглядит так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
TRY.
        EXEC SQL.
          SELECT ID,
                 UEBER_DATUM,
                 UEBER_UHRZEIT,
                 SAP_AE_DATUM,
                 SAP_AE_UHRZEIT,
                 STORT_ZUORDNUNG,
                 SAP_AUFT_NR,
                 SAP_AUFT_VR,
                 P_ZEIT,
                 P_GEWERK,
                 M_ZEIT,
                 M_GEWERK,
                 RTEXT,
                 RDATE,
                 R_STATUS,
                 JUSTIERUNG
           INTO  :ZPM_CUKA_RUEC-ID,
                 :ZPM_CUKA_RUEC-UEBER_DATUM,
                 :ZPM_CUKA_RUEC-UEBER_UHRZEIT,
                 :ZPM_CUKA_RUEC-SAP_AE_DATUM,
                 :ZPM_CUKA_RUEC-SAP_AE_UHRZEIT,
                 :ZPM_CUKA_RUEC-STORT_ZUORDNUNG,
                 :ZPM_CUKA_RUEC-SAP_AUFT_NR,
                 :ZPM_CUKA_RUEC-SAP_AUFT_VR,
                 :ZPM_CUKA_RUEC-P_ZEIT,
                 :ZPM_CUKA_RUEC-P_GEWERK,
                 :ZPM_CUKA_RUEC-M_ZEIT,
                 :ZPM_CUKA_RUEC-M_GEWERK,
                 :ZPM_CUKA_RUEC-RTEXT,
                 :ZPM_CUKA_RUEC-RDATE,
                 :ZPM_CUKA_RUEC-R_STATUS,
                 :ZPM_CUKA_RUEC-JUSTIERUNG
           FROM  ZPM_CUKA_RUEC
           WHERE SAP_AUFT_NR = IT_TRANS-RUEC_SAP_AUFT_NR
           AND   SAP_AUFT_VR = IT_TRANS-RUEC_SAP_AUFT_VR.
        ENDEXEC.

      CATCH cx_sy_native_sql_error INTO gv_exc_ref.
        gv_error_text = gv_exc_ref->get_text( ).
        CONCATENATE text-s01
                    gv_error_text INTO gv_error_text
                    SEPARATED BY space.
        MESSAGE gv_error_text TYPE 'I'.
        pv_subrc = 4.
    ENDTRY.



Ошибка возникает в SAP как при нормальном выполнении, так и в отладчике при пошаговом проходе.
Запрос к этой же строке данных из HORA отрабатывает без ошибок:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
          SELECT ID,
                 UEBER_DATUM,
                 UEBER_UHRZEIT,
                 SAP_AE_DATUM,
                 SAP_AE_UHRZEIT,
                 STORT_ZUORDNUNG,
                 SAP_AUFT_NR,
                 SAP_AUFT_VR,
                 P_ZEIT,
                 P_GEWERK,
                 M_ZEIT,
                 M_GEWERK,
                 RTEXT,
                 RDATE,
                 R_STATUS,
                 JUSTIERUNG
           FROM  ZPM_CUKA_RUEC
           WHERE SAP_AUFT_NR = '000048917940'
           AND   SAP_AUFT_VR = '0100'



Рабочая гипотеза такова, что ABAP каким-то образом либо криво преобразует ABAP-SQL в нативный SQL-запрос к Ораклу, либо выполняет какие-то добавочные SQL-операторы. Один из этих SQL-Statemens / SQL Query вызывает ошибку ORA-01747

Как отловить этот SQL с ошибкой? В трейсах не удалось ничего найти.
Попадает ли такой SQL в alert log?
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999777
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter,
странновато IT_TRANS - RUEC_SAP_AUFT_NR=='000048917940'

не в - (миннусе) проблема (нет двойных кавичек)?

.....
stax
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999812
Sergey Balter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторне в - (миннусе) проблема (нет двойных кавичек)?
Вряд ли. Это ABAP (который я вижу впервые), а не PL/SQL. Видимо, в ABAP так можно. В каждой избушке свои погремушки.
Снова-таки, текст запроса не генерируется динамически, а фиксирован раз и навсегда. И используется без изменений уже лет эдак 20 без проблем. И, главное - работает на 99,99% строк View, но валится на 4 конкретных строках. Впервые в конце прошлой недели.
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999816
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter,

Там точно буковки везде? И нет приколов, например с NLS для дробных частей через запятую вместо точки?

И если отловить этот запрос на оракловой стороне, то как он там выглядит?
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999817
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter,

имхо, смотреть строки, чем-то они уникальны

В символьных данных кавычек (д'Артаньян) нет?


......
stax
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999818
Sergey Balter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey BalterПопадает ли такой SQL в alert log?
Убедился, что не попадает.
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999825
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter
Как отловить этот SQL с ошибкой?

Не увидел сразу вопрос. Для начала, какая версия оракла и какие опции включены. Есть ли AWR/ASH и т.п.?
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999887
serpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Balter
Как отловить этот SQL с ошибкой?


Код: plsql
1.
alter system set events '1747 trace name errorstack level 3 ';


воспроизводим ошибку ORA-01747
Код: plsql
1.
alter system set events '1747 trace name errorstack off';


смотрим содержимое дампа в diag_dest
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999897
Sergey Balter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ символьных данных кавычек (д'Артаньян) нет?
Вылетает на следующих данных
WHERE SAP_AUFT_NR = '000048917940'
AND SAP_AUFT_VR = '0100'
Тип данных Varchar2

авторДля начала, какая версия оракла и какие опции включены. Есть ли AWR/ASH и т.п.?
12.2.xxx
Доступные опции надо спрашивать тамошнего админа, а его не предвидится.

Гадость в том, что
1. ошибка ловится только на продакшн
2. Организационно это GxP-производство с жесткими требованиями к надежности и повторямости техпроцессов. Упомянутая система включена в техпроцесс. Потому любой минимальный чих в продакшене требует специальной процедуры, состоящей из доказательства необходимости изменения, анализа рисков, разработки протоколов тестирования, согласования, утверждения, подписания и пр.


Есть идея забацать Schema-Trigger AFTER SERVERERROR и вручную писать ошибки в собственный лог.
Если удастся уговорить заказчика на изменения в живой системе... См. п. 2
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999909
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Польцем в небо, а не может быть, что где-то имена переменных ABAP совпадают с именами полей в таблице?
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999911
Sergey Balter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсмотрим содержимое дампа в diag_dest
спасибо!

Только что заказчик сообщил, что нашел ошибку.
Ошибка в SAP, в тексте ABAP-запроса. "Одна лишняя точка", что при определенной комбинации условий вело к вылету.
Говнюки, блин.
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999913
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter
Код: plsql
1.
     AND   SAP_AUFT_VR = IT_TRANS-RUEC_SAP_AUFT_VR.

я не знаком с ABAB, но здесь точно точка нужна в конце? возможно, интерпретатор понимает ее как часть текста запроса из-за какого-нибудь лишнего whitespace в конце?

Код: plsql
1.
select * from dual where 'X' = dummy.
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999914
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey BalterГовнюки, блин.

Ты разве не берёшь с них почасовую оплату вне зависимости от результатов?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999918
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter,

А в каких именно комбинациях лишняя точка давала ошибку, неизвестно?
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999943
Sergey Balter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТы разве не берёшь с них почасовую оплату вне зависимости от результатов?
Контракт на support они не хотят, но мы добираем свое через заказы на развитие системы. Так для нашей фирмы выходит типа "политически выгоднее". И в любом случае не моя компетенция, это забота шефа.

авторА в каких именно комбинациях лишняя точка давала ошибку, неизвестно?
Известно, все 4 случая идентифицированы в ходе работы. 4 records

Спасибо всем откликнувшимся!
...
Рейтинг: 0 / 0
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
    #39999947
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Balter
все 4 случая идентифицированы

А от частного к общему перейти удалось? Т.е. получить критерий при котором сочетание данных и "лишней точки" стабильно даст ошибку в следующий раз.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]