SAPфорум.RU https://sapboard.ru/forum/ |
|
Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY? https://sapboard.ru/forum/viewtopic.php?f=13&t=100103 |
Страница 1 из 1 |
Автор: | Валерка [ Вт, июн 21 2022, 09:30 ] |
Заголовок сообщения: | Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY? |
Есть код 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 в цикле? |
Автор: | broker.chelny [ Вт, июн 21 2022, 10:00 ] |
Заголовок сообщения: | Re: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY? |
Тут же явно проблема на стороне СУБД, код ошибки есть ORA-0036. Думаю у Oracle есть описание ошибки. Разбейте на несколько частей, и после каждого делайте COMMIT (возможно поможет) |
Автор: | DED_MOROZ [ Вт, июн 21 2022, 10:51 ] |
Заголовок сообщения: | Re: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY? |
Делай 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. |
Автор: | Валерка [ Вт, июн 21 2022, 11:21 ] |
Заголовок сообщения: | Re: Как починить ошибку DBSQL_SQL_ERROR (искл.CX_SY_OPEN_SQL_DB) при команде MODIFY? |
При удалении, кстати, тоже валится с такой же ошибкой, но в другом месте. Всем спасибо, буду переделывать commit-ы. Как я понял, тут уже серверу БД не хватает памяти, чтобы такие объемы данных заносить. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |