|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, пожалуйста, почему возникает ошибка ORA-03111: Break received on communication channel для Код: sql 1. 2. 3.
Использую библиотеку Oracle.ManagedDataAccess.dll ver: 4.122.1.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 15:19 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Потому что серверный процесс нештатно завершается. Ищите в серверном логе ORA-600 или ORA-7445 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 15:32 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
andrey_anonymous, Проблема оказалась в другом. Я неверно информировал. У меня там еще есть операторы после TRUNCATE. Если после TRUNCATE поставить COMMIT, то ошибки нет. Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 16:14 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
SergiiW andrey_anonymous, Проблема оказалась в другом. Я неверно информировал. У меня там еще есть операторы после TRUNCATE. Если после TRUNCATE поставить COMMIT, то ошибки нет. Код: plsql 1. 2. 3. 4. 5.
Очень странно это. TRUNCATE предполагает автоматическое выполнение двух COMMIT'ов: один перед выполнением TRUNCATE, а второй после выполнения TRUNCATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 18:05 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
SQL*Plus ... Очень странно это. ... мож есть какие-то нюансы в связке execute immediate 'TRUNCATE и Oracle.ManagedDataAccess.dll недавно меня удивил результат (допускаю что доку невнимательно понял) апекс Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 18:41 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Stax SQL*Plus ... Очень странно это. ... мож есть какие-то нюансы в связке execute immediate 'TRUNCATE и Oracle.ManagedDataAccess.dll недавно меня удивил результат (допускаю что доку невнимательно понял) апекс Код: plsql 1. 2. 3.
А это здесь откуда? Под каким юзером создавали private temporary table? RestrictionsYou must be a user other than SYS to create private temporary tables. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 18:49 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Stax, я до высот 18й версии еще не дожил, но, заглянув сейчас в определение увидел, что поведение по умолчанию для таких таблиц - ON COMMIT DROP DEFINITION; Почти наверно, это однозначно означает, что для такого случая commit на create просто может и не возникать. В нем не так уж много смысла проглядывается. В этом предположении - показанное поведение выглядит как чистое. Натурально, откатывается лишь одна запись, требующая логируемого отката. Остальные и так помрут. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 18:57 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Stax SQL*Plus ... Очень странно это. ... мож есть какие-то нюансы в связке execute immediate 'TRUNCATE и Oracle.ManagedDataAccess.dll недавно меня удивил результат (допускаю что доку невнимательно понял) апекс Код: 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.
Предполагаю, что что объяснение здесь: PRIVATE TEMPORARYA private temporary table differs from a temporary table in that its definition and data are visible only within the session that created it. Use the ON COMMIT clause to define the scope of a private temporary table: either transaction or session. The ON COMMIT clause used with the keywords DROP DEFINITION creates a transaction-specific table whose data and definition are dropped when the transaction commits. This is the default behavior. The ON COMMIT clause used with keywords PRESERVE DEFINITION creates a session-specific table whose definition is preserved when the transaction commits. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 19:18 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Код: 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.
То есть определение таблицы было на уровне транзакции. Транзакция завершилась командой ROLLBACK и PRIVATE TEMPORARY TABLE пропала. Если использовать Код: plaintext
Причем, не обращая внимания ни на какие ROLLBACK'и (!!!???) : Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 19:28 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
Stax мож есть какие-то нюансы в связке execute immediate 'TRUNCATE и Oracle.ManagedDataAccess.dll Если запускать в интерфейсе без COMMIT - ошибки нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 08:09 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
SergiiW, а есть гарантия, что это именно в этом месте ошиька валится? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 13:17 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
SQL*Plus Причем, не обращая внимания ни на какие ROLLBACK'и (!!!???) : И не должна, раз уж эта механика заранее задумывалась, как внетранзакционная. Практический интерес может представлять выявление ответа на вопрос - а на нее реагирует dbms_transaction или нет. Пустой или нет будет получен ответ от LOCAL_TRANSACTION_ID на создание такой таблицы. Это может оказаться интересным для какого-то кода, касающегося работы в автономной транзакции. Было бы совсем чисто, хотя и непривычно, если бы transaction_id такой штукой не формировался. PS Вариант полезного использования такой конструкции мне примерно понятен. Что называется "нам бы ее лет 10 назад"... :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 13:46 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
booby SQL*Plus Причем, не обращая внимания ни на какие ROLLBACK'и (!!!???) : И не должна, раз уж эта механика заранее задумывалась, как внетранзакционная. Практический интерес может представлять выявление ответа на вопрос - а на нее реагирует dbms_transaction или нет. Пустой или нет будет получен ответ от LOCAL_TRANSACTION_ID на создание такой таблицы. :)) А вы проведите эксперимент и расскажите, что получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 17:16 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
andreymx а есть гарантия, что это именно в этом месте ошибка валится? Вчера я не мог от этой ошибки избавиться, сегодня я не могу ее воспроизвести. Все тоже самое делаю - работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 19:03 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
booby SQL*Plus Причем, не обращая внимания ни на какие ROLLBACK'и (!!!???) : И не должна, раз уж эта механика заранее задумывалась, как внетранзакционная. Практический интерес может представлять выявление ответа на вопрос - а на нее реагирует dbms_transaction или нет. Пустой или нет будет получен ответ от LOCAL_TRANSACTION_ID на создание такой таблицы. Это может оказаться интересным для какого-то кода, касающегося работы в автономной транзакции. Было бы совсем чисто, хотя и непривычно, если бы transaction_id такой штукой не формировался. PS Вариант полезного использования такой конструкции мне примерно понятен. Что называется "нам бы ее лет 10 назад"... :)) Братья, в смысле сестры! (С) Опомнитесь :) Rollback он везде Rollback и применительно к PRIVATE TEMPORARY TABLE ON COMMIT PRESERVE DEFINITION он работает так как и должен - откатывает транзакцию. А у вас в примере откатывать нечего, там только CTAS, добавьте вставку в PRIVATE TEMPORARY TABLE и все у вас получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 21:27 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
AlexFF__| ...Опомнитесь :) Rollback он везде Rollback... Интересно, какая "срочная потребность" вообще родила этот баян. Кому-то надо помочь срочно перевести "большую систему" с MySql на Oracle Database? Без пояснения смысла выглядит как чепуха, с неизвестно зачем приляпанным undo. Быть похожим на "других" - не всегда предмет гордости, и особенно, когда перед использованием в лоб такой похожести, ещё надо почесать затылок. В общем, мутная история. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 01:39 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
booby AlexFF__| ...Опомнитесь :) Rollback он везде Rollback... Интересно, какая "срочная потребность" вообще родила этот баян. Кому-то надо помочь срочно перевести "большую систему" с MySql на Oracle Database? Без пояснения смысла выглядит как чепуха, с неизвестно зачем приляпанным undo. Быть похожим на "других" - не всегда предмет гордости, и особенно, когда перед использованием в лоб такой похожести, ещё надо почесать затылок. В общем, мутная история. Да, история мутная. Создалась временная таблица, живущая только на время сессии. Причем создалась как-то так, что вставленные в неё данные "заккомитились", но на остальные транзакции этот COMMIT не повлиял. Как будто команда CREATE PRIVATE TEMPORARY TABLE была выполнена в автономной транзакции. Может быть её хранение в памяти такой отпечаток на её поведение накладывает? Private temporary tablesPrivate temporary tables are temporary database objects that are automatically dropped at the end of a transaction or a session. A private temporary table is stored in memory and is visible only to the session that created it. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 22:33 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
SQL*Plus, нет. Это именно больше всего похоже на желание сделать временные таблицы, похожие на то, что существует в "других системах". В этих "других системах" у таких временных таблиц может быть время жизни в пределах вызова хранимой процедуры, или до конца сеанса, что указывается в их объявлении. Обычно они внетранзакционны . В целом, это всегда логический аналог массива, с которым работать предлагается исключительно методом применения команд sql. Ясно, что там где совсем никаких транзакционных следов не предполагается, можно рассчитывать и верить в максимально эффективную реализацию, по сравнению с историей, в которой такие массивы умеют откликаться на rollback. С этим тоже можно жить, но, при таких обстоятельствах, я уже скорее предпочту явную, и более традиционную для Oracle императивную манипуляцию с массивом, чем вот эту привносимую от "других систем" sql-декларативную. Хотя точно знаю, где мог бы извлечь из этого пользу, хоть и ограничиваемую применением только динамического sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 23:38 |
|
TRUNCATE TABLE - Error ORA-03111
|
|||
---|---|---|---|
#18+
booby SQL*Plus, нет. Это именно больше всего похоже на желание сделать временные таблицы, похожие на то, что существует в "других системах". В этих "других системах" у таких временных таблиц может быть время жизни в пределах вызова хранимой процедуры, или до конца сеанса, что указывается в их объявлении. Обычно они внетранзакционны . Не будем гадать, кто и чего хотел сделать на что-то похожим. Это совершенно неинтересно. Лучше проведем простой эксперимент. Код: 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. 48. 49.
Откат был выполнен, третьей строки в таблице не стало. То есть, не считая приведенного выше CREATE PRIVATE TEMPORARY TABLE ... AS SELECT ..., видим, что поведение нормальное, транзакционное. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 00:45 |
|
|
start [/forum/topic.php?fid=52&msg=40118937&tid=1879668]: |
0ms |
get settings: |
26ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
385ms |
get tp. blocked users: |
1ms |
others: | 369ms |
total: | 880ms |
0 / 0 |