Кто это диана, и почему она не позволяет компилировать объекты моей базы данных?

Хорошо, поэтому заголовок вопроса немного ироничен, но вопрос достаточно серьезный. Иногда при компиляции объектов в схеме или импорте файла дампа я вижу следующее сообщение об ошибке:

ORA-04028: cannot generate diana for object SCOTT.VW_EMP

что это на самом деле означает и как этого избежать?

24
задан skaffman 14 October 2011 в 08:01
поделиться

2 ответа

Здесь уместно: PL / SQL, размер пакета, узлы дерева разбора, строки кода.

Diana - это язык определения интерфейса Oracle, который представляет структуру таблиц базы данных и логику программных модулей PL / SQL в виде атрибутивных деревьев.

Существуют внутренние ограничения на количество узлов дерева разбора. Версия компилятора устанавливает максимальное количество строк кода.

Итак, проверьте размер логики PL / SQL и строки кода. Может быть невозможно или даже необходимо знать фактические ограничения, которые может обрабатывать ваша версия.

Как только вы знаете, как правильно подобрать размер вашей упаковки, половина проблемы решена.

Дайте нам знать, когда вы решили и другую половину, спасибо.

4
ответ дан 29 November 2019 в 00:28
поделиться

У меня была похожая проблема при компиляции больших пакетов в режиме отладки. Это происходит, если размер отладочной информации превышал лимит компилятора на размер таблицы символов отладки. Вы можете отключить режим отладки с помощью

alter session set plsql_debug=false; 

или для всей базы данных:

alter system set plsql_debug=false;
0
ответ дан 29 November 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: