Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ошибка ORA-01747 при выполнении SELECT из ABAP (SAP) / 16 сообщений из 16, страница 1 из 1
17.09.2020, 13:39
    #39999769
Sergey Balter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
В нашей системе на базу 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
17.09.2020, 13:52
    #39999777
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
Sergey Balter,
странновато IT_TRANS - RUEC_SAP_AUFT_NR=='000048917940'

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

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

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

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

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

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


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

Не увидел сразу вопрос. Для начала, какая версия оракла и какие опции включены. Есть ли AWR/ASH и т.п.?
...
Рейтинг: 0 / 0
17.09.2020, 15:21
    #39999887
serpv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
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
17.09.2020, 15:30
    #39999897
Sergey Balter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
авторВ символьных данных кавычек (д'Артаньян) нет?
Вылетает на следующих данных
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
17.09.2020, 15:41
    #39999909
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
Польцем в небо, а не может быть, что где-то имена переменных ABAP совпадают с именами полей в таблице?
...
Рейтинг: 0 / 0
17.09.2020, 15:45
    #39999911
Sergey Balter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
авторсмотрим содержимое дампа в diag_dest
спасибо!

Только что заказчик сообщил, что нашел ошибку.
Ошибка в SAP, в тексте ABAP-запроса. "Одна лишняя точка", что при определенной комбинации условий вело к вылету.
Говнюки, блин.
...
Рейтинг: 0 / 0
17.09.2020, 15:46
    #39999913
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
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
17.09.2020, 15:51
    #39999914
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка ORA-01747 при выполнении SELECT из ABAP (SAP)
Sergey BalterГовнюки, блин.

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

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

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

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

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


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