Ogeeon писал(а):В ORA90DRV.log вот что:
ALTER PROCEDURE GAL."MEMO_INCREF" COMPILE
ORA-24344: success with compilation error
Это нормально, если можно так сказать. (в целом, конечно так не должно быть - все обьекты должны компиляться или их не должно быть в структуре).
Чутка недоглядели. Это задел на будущее в части оптимизации хранения данных в SYS#MEMO. По итогу её объем должен будет сильно уменьшиться со всеми вытекающими последствиями.
Ogeeon писал(а):...
а ошибке расчёта прав соответствует такое сообщение:
SELECT MEMODATA FROM GAL."SYS#MEMO" WHERE ID = : P1
ORA-24801: illegal parameter value in OCI lob function
а вот это к INCREF-у никакого отношения вообще не имеет.
Тут, скорее всего, из данных, ссылающихся на строку в SYS#MEMO "приходит" ID (значение), которое по сути не является допустимым для него.
О чем ОРАКЛ нам и сообщает.
Для выявления того, чо у нас там не так, нужно выполнить расчет прав при использовании протокольного драйвера ora90drv.dll.
По итогу он создаст протокол работы с БД, в котором подробно даст информацию о всех запросах и значениях параметров.
Вот тут-то и станет всё видно.
По поводу протокольного драйвера стоит обратиться в поддержку Галактическую.
Ogeeon писал(а):...
Насчёт инвалидных объектов можно перефразировать так: в EM в этом списке было 3 пункта: INCREF и 2 триггера, лежащих в корзине.
вот теперь понятно.
Ogeeon писал(а):...
Проверку триггеров запускали, проблем нет с ними.
А вот насчёт успешности расчёта прав история запутанная:
- в пятницу днём всё рассчитывалось успешно
- вечером я запустил расчёт прав - получил ошибку;
между этими событиями что-то обновлялось/менялось в составе атлантиса, с объектами БД что-то делали ? чеку запускали ? руками может быть что-то меняли/компилировали ?
Ogeeon писал(а):...
... Залез в EM - инвалидных объектов нет, вообще. Каюсь, не посмотрел другими средствами, в каком состоянии сама MEMO_INCREF.
да. досадно.
Хотя она ДОЛЖНА была быть инвалидной - SYS#MEMO не содержит поля REF#COUNT, соответственно процедура использующая его не может быть скомпилирована без ошибки.
Если процедура была, то должна была быть инвалидной. третьего не дано.
Ogeeon писал(а):...
- утром в субботу после завершения работы чеки ещё раз попробовал рассчитывать права - снова ошибка.
честное слово - такое впечатление, что Вы с разными базами работаете
Ogeeon писал(а):...
И да, TOAD на вкладке Deps(Used by) для процедуры MEMO_INCREF ничего не показывает - видать, нет у нас неправильных процедур.
Что это вообще за REF#COUNT? Поле такое должно быть в sys#memo? Судя по запросу
Код: Выделить всё
UPDATE GAL.SYS#MEMO SET REF#COUNT = rc WHERE ID = MEMO_ID;
это именно поле. Но у нас его нет: по-прежнему всего 2 поля в этой таблице - id и memodata.
да. это поле, которое со временем, возможно, появится в сисмемо. Сейчас его там быть не должно.
Еще раз акцентирую - наличие инвалидной процедуры MEMO_INCREF никак не влияет на работоспособность системы.