#oracle #plsql #oracle10g
#Oracle #plsql #oracle10g
Вопрос:
Итак, я взял экспорт (с использованием Data Pump) из схемы Oracle 10g, где все пакеты PLSQL были зашифрованы с помощью утилиты Wrap Oracle. Проблема в том, что когда я импортирую это в новую схему, все мои пакеты недействительны, и попытка ручной компиляции не работает.
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"
Итак, каково решение для перекомпиляции всех этих недействительных пакетов?
Комментарии:
1. была ли импортированная база данных другого выпуска, чем исходная БД?
2. @tbone да, я считаю, что это был немного другой выпуск, но коллега сообщил мне, что это также происходит между одним и тем же выпуском. На самом деле, по-видимому, это известная ошибка в Oracle. Тем не менее, это все еще не дает мне решения. 🙁
3. Я считаю, что перенос не совместим с понижением (т. Е. Не может экспортировать с более высокого уровня и импортировать в выпуск более низкого уровня). Вот почему я все равно спросил. Кроме того, я полагаю, что в 10g есть известная ошибка, связанная с упакованными пакетами и перекачкой данных. У вас есть последние исправления?
4. @tbone спасибо за это. Нет, у нас нет последних исправлений для этой конкретной системы.
Ответ №1:
Попробуйте использовать системную DBMS_UTILITY.COMPILE_SCHEMA
процедуру для компиляции объектов вашей схемы. Эта процедура определит порядок, в котором следует компилировать ваши объекты, и даже обрабатывает циклические зависимости. После сборки скриптовой схемы рекомендуется вызвать процедуру очистки.
BEGIN
DBMS_UTILITY.COMPILE_SCHEMA('MYSCHEMA');
END;
/
Мне было бы любопытно узнать, насколько хорошо он обрабатывает обернутые объекты.
Комментарии:
1. @BrianFenton: Спасибо за отзыв, это полезно знать. Мне было любопытно, справится ли она с этой проблемой.
Ответ №2:
Итак, похоже, что для этой проблемы нет «исправления», только обходные пути, ни один из которых не идеален.
- Повторите экспорт и импорт, используя старые программы exp и imp (вместо data pump)
- Если у вас есть .Файлы SQL, содержащие определения пакетов, вы можете вручную скомпилировать в SQL * Plus (это могут быть тысячи файлов, что делает эту большую работу).
- Вы можете исправить базу данных (см. Статью Metalink 460267.1)