Текущее время: Чт, апр 18 2024, 06:16

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY?
СообщениеДобавлено: Вт, июн 21 2022, 09:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 301
Есть код
Code:
MODIFY ztable FROM TABLE lt_table.

Который падает в в фоновой задаче в ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB).
Анализ ошибки
Цитата:
An exception has occurred which is explained in more detail below. The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB' was not caught and therefore caused a runtime error.
The reason for the exception is:  Database error text: SQL message: ORA-30036: unable to extend segment by 8 in  undo tablespace 'PSAPUNDO'    
Return value of the database layer: "SQL dbsl rc: 99"

Количество строк в lt_table = 1.470.768
Длинна строки lt_table = 1.766
Общий размер = 2.597.376.288

Есть мнение что тут слишком много данных во внутренней таблице. В связи с этим вопрос, как корректно это обойти? INSERT в цикле?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY?
СообщениеДобавлено: Вт, июн 21 2022, 10:00 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 131
Откуда: Набережные Челны
Пол: Мужской
Тут же явно проблема на стороне СУБД, код ошибки есть ORA-0036. Думаю у Oracle есть описание ошибки.

Разбейте на несколько частей, и после каждого делайте COMMIT (возможно поможет)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY?  Тема решена
СообщениеДобавлено: Вт, июн 21 2022, 10:51 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Делай commit на каждый пакет из 100 000 записей
Вот пример удаления:
Code:
    DATA:
      l_packs_count TYPE i,
      l_packs_total TYPE i.
    LOOP AT lt_query ASSIGNING FIELD-SYMBOL(<wa_query>).
      DELETE FROM ZTAB_DB
        WHERE sync_object = @<wa_query>-sync_object AND
                      id_session = @<wa_query>-id_session.
      IF sy-subrc = 0.
        ADD sy-dbcnt TO l_packs_count.
        ADD sy-dbcnt TO l_packs_total.

*       Каждый 100тыс записей коммит
        IF l_packs_count > '100000'.
          CALL FUNCTION 'DB_COMMIT'.
          CLEAR l_packs_count.
        ENDIF.
      ENDIF.
    ENDLOOP.
    WRITE: text-t03, ' ', l_packs_total,/.

    COMMIT WORK.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY?
СообщениеДобавлено: Вт, июн 21 2022, 11:21 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 301
При удалении, кстати, тоже валится с такой же ошибкой, но в другом месте.

Всем спасибо, буду переделывать commit-ы. Как я понял, тут уже серверу БД не хватает памяти, чтобы такие объемы данных заносить.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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