Как перекомпилировать недопустимые пакеты PLSQL, которые были зашифрованы с помощью утилиты Wrap Oracle 10g? - PullRequest
2 голосов
/ 24 октября 2011

Итак, я взял экспорт (используя Data Pump) из схемы Oracle 10g, где все пакеты PLSQL были зашифрованы с использованием утилиты Oracle Wrap .Проблема в том, что когда я делаю импорт этого в новую схему, все мои пакеты недействительны, и попытка ручной компиляции не работает.

SQL> ALTER PACKAGE mypackage compile;

Warning: Package altered with compilation errors.

SQL> show errors
Errors for PACKAGE MYPACKAGE:

LINE/COL ERROR
-------- -----------------------------------------------------------------
36/2     PLS-00103: Encountered the symbol "2"

Так каково решение для перекомпиляции всех этих недействительных пакетов?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Похоже, что для этой проблемы нет «исправления», есть только обходные пути, ни один из которых не является идеальным.

  1. Повторите экспорт и импорт, используя старые программы exp и imp (вместо данныхpump)
  2. Если у вас есть файлы .SQL, содержащие определения пакетов, вы можете вручную скомпилировать их в SQL * Plus (может быть тысячи файлов, делающих это большой работой).
  3. Вы можете исправлятьбаза данных (см. статью Metalink 460267.1)
1 голос
/ 24 октября 2011

Попробуйте использовать системную DBMS_UTILITY.COMPILE_SCHEMA процедуру для компиляции объектов схемы. Эта процедура определит порядок компиляции ваших объектов и даже обрабатывает циклические зависимости. После создания скриптовой схемы рекомендуется выполнить очистку.

BEGIN
  DBMS_UTILITY.COMPILE_SCHEMA('MYSCHEMA');
END;
/

Мне было бы интересно узнать, насколько хорошо он обрабатывает обернутые объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...