Текущее время: Пт, апр 19 2024, 21:08

Часовой пояс: 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 часа


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

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


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

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