|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#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.
Возникает ошибка "ORA-22161: код типа [0] неверен" в одной БД, или ошибка "ORA-03113: end-of-file on communication channel" в другой. Обе базы версии 12.1 Ошибка возникает только при определенных количествах данных например если считать 1035 записей - ошибка есть, 1034 - нет. В чем тут дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 10:53 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576, Даренному ПО в ошибки не смотрят, а недаренному - смотрят в саппорт. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 11:07 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576, если case заменить decode тож слетает? или явно добавить else? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 11:18 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, Тут дело (ошибка) не в данных, возвращаемых выборкой, а в удалении ненужных элементов из массива. Ведь при изменении количества строк в запросе ошибка пропадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 11:22 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576, я как варианты предложил, возможно есть какой-то бажок в сцепке for j in va_data.first .. va_data.last loop и va_data.delete(j); нет 12-ки, нa других версиях отрабатывает без ора ps for заменить while + next .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 11:40 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, Запилил иной цикл, результат такой же - ошибка возникает при одном наборе строк, и отсутствует при другом: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:04 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Количество записей при котором выходит ошибка меняется, если массив объявить индексированным, т.е. вместо: Код: plsql 1.
Написать Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:08 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576, Что ты ожидаешь от форума? С багами нужно обращаться в поддержку, хотя 12.1 уж больше года как с premier снята. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:10 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576 Stax, Запилил иной цикл, результат такой же - ошибка возникает при одном наборе строк, и отсутствует при другом: не повезло слетает на первой итерации (лимит), или второй? зы идей много, да и у Вас я думаю также кто-то б подтвердил что 12.1 тож слетает ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:32 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production ORA-22161: type code [0] is not valid ORA-06512: at line 26 А вот в в этой версии "Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production" нет ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:45 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, Админы БД сообщили, что удаление элементов массива вызывает ошибку ядра (...Address not mapped to object...) На сайте поддержки нет никаких статей по данной ошибке ядра. Если подкрутите цифры в запросе, то скорее всего вы получите ошибку. Решено переписать код, отказавшись от удаления элементов массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:53 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Oleg M.Ivanov, спасибо не ясно из-за чего слетает (лимит или фор) зы попробовать fetch rc_data into va_data2 ... rc_data:=rc_data2; .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:56 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, Ошибка выходит на второй "неполной" пачке. Причем можно вытащить много строк, но ошибка будет возникать только в последней неполной (до limit) пачке. Причем эта неполная пачка должна содержать определенное количество строк для разных БД. И еще кое-что: если выборку ограничить так, чтобы сразу первая же пачка была бы неполной, то ошибка не выходит. Уот так уот! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 12:59 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576 Решено переписать код, отказавшись от удаления элементов массива. молодцы админы удаление часть логики переприсвоение rc_data:=rc_data2; не помогает? слетает в цикле удаления? .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 13:00 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, Админы молодцы без сарказма. Был вариант завести "Service Request", но на это уйдет время (возможно много времени). Поэтому я сам решил переложить данные из одного массива в другой по тому же условию, по которому я удалял данные. Ошибка выходит именно при удалении элемента в цикле, а не в выборке и считывании данных в массив. Не совсем понял про переприсвоение rc_data:=rc_data2: rc_data2 - это аналогичный rc_data курсор? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 13:06 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
user1048576 Stax, Ошибка выходит именно при удалении элемента в цикле может выстрелить в любом месте, надо патчится (SR тож не помешает) зи невнимательно набрал вместо rc надо va но раз слетает в цикле (странно что и while) то нет смысла зыы даж интересно стало, как "переложить данные из одного массива в другой" имитируя дырку от delete (шоб в копии возникал no data found) .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 13:36 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax, может выстрелить в любом месте, надо патчится - патчей нет)) зи невнимательно набрал вместо rc надо va - это и есть "переложить данные из одного массива в другой" (дырки мне не нужны, нужны только данные, которые останутся после удаления ненужных) но раз слетает в цикле (странно что и while) то нет смысла - слетает только при удалении. зыы даж интересно стало, как "переложить данные из одного массива в другой" имитируя дырку от delete (шоб в копии возникал no data found) - "дырки" в конкретно моем случае не нужны Спасибо за неравнодушие и помощь. Все переписал, работает акейна) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 14:17 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#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.
а вообще проще фильтровать ненужные значения еще в запросе ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 15:21 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
andrey_anonymous, он удаляет із массива імхо va_data.count станет меньше 1000 (50) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 15:37 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax andrey_anonymous, он удаляет із массива імхо va_data.count станет меньше 1000 (50) Главное - оно не наступает на багу 12.1, с остальным можно работать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 15:45 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
andrey_anonymous Главное - оно не наступает на багу 12.1, с остальным можно работать :) не понял совсем 1) бага ж не из-за exit when rc_data%notfound; 2) из-за exit when va_data.count < 1000; (va_data.count=50) не будет второй итерации (1001-1035) зы я так понял слетает va_data.delete(j); ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 15:57 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax я так понял слетает va_data.delete(j); Был невнимателен, сорри. Проблема решается зачисткой "дырявого" массива перед выходом в новую итерацию bulk collect: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 16:40 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
andrey_anonymous, сначала ( 22024523 ) было ощущение что слетает на втором fetch limit 1000; но вроде ето не так я так понял что слетает va_data.delete(j); и до va_data.delete; не дойдет ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 16:50 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
Stax ощущение ... я так понял что слетает va_data.delete(j); и до va_data.delete; не дойдет Проверено на 12.1 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 16:55 |
|
ORA-22161: код типа [0] неверен
|
|||
---|---|---|---|
#18+
andrey_anonymous, перед fetch во второй итерации массив очищается автоматически. дополнительно очищать массив не требуется. Прикрутил очистку массива после обработки каждой пачки - все-равно выходит ошибка. Еще раз это ошибка ядра, а не кривой код. В зависимости от конфы сервера на котором крутится ваш БД, ошибка конкретно у Вас может вылететь при другом количестве записей. Про фильтровку данных на этапе запроса - не подходит именно в этом случае, т.к. данные сначала используются, и только в конце алгоритма эти данные выборочно удаляются и используются далее. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 06:08 |
|
|
start [/forum/topic.php?fid=52&startmsg=39893800&tid=1881813]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 430ms |
0 / 0 |