Бэкап пакета в оракуле plsql

Я новичок в pl/sql, у меня есть pkg_body, и я хочу внести в него изменения. Но перед этим я хочу сделать резервную копию оригинального pkg. Итак, я могу создать новый pkg с именем **_bkp и просто скопировать в него код.

Я нашел приведенный ниже код при поиске в сети

set pagesize 0
set linesize 800
set trimspool on
set heading off
set feedback off
spool filename.pkb
select text from dba_source where name='objectname' and type='PACKAGE BODY';
spool off
exit

Но должен ли я это делать? Могу ли я создать новый pkg с другим именем и скопировать в него исходный код, а затем внести изменения?

Спасибо


person sandywho    schedule 13.08.2015    source источник


Ответы (2)


Для этого и предназначен контроль исходного кода (например, SVN, PVCS и т. д.).

Но вот что вы можете сделать.

select dbms_metadata.get_ddl('PACKAGE_SPEC', 'your-package-name-here', user) from dual;

Затем отредактируйте возвращаемый CLOB, чтобы изменить имя. Сделайте то же самое для тела пакета.

select dbms_metadata.get_ddl('PACKAGE_BODY', 'your-package-name-here', user) from dual;

Но опять же, вы должны использовать SVN или что-то подобное. Чтобы внести изменения, отредактируйте файл DDL, полученный от SVN, и запустите его в базе данных. Не используйте возможности SQL*Navigator/TOAD для прямого редактирования пакетов и "сохранения" их в базе данных. Разве что если вы единственный разработчик в вашей команде.

person Matthew McPeak    schedule 13.08.2015
comment
Никогда не используйте возможности клиентов SQL GUI для редактирования пакетов непосредственно в базе данных. (Если вы намеренно не хотите создавать искусственные проблемы.) - person user272735; 14.08.2015

В разработчике PL/SQL в верхней строке меню есть пункт «Инструменты».

  • щелкните левой кнопкой мыши, чтобы выбрать это
  • появится раскрывающийся список, выберите «Экспортировать пользовательские объекты».
  • изменить пользователя на владельца пакета
  • нажмите на крошечный пустой квадрат в правом верхнем углу столбца «Имя», чтобы отсортировать по имени
  • щелкните левой кнопкой мыши, чтобы выбрать заголовок и тело пакета
  • в правом нижнем углу щелкните значок папки и выберите место назначения и имя для резервной копии.
  • нажмите Экспорт
  • закрыть окно
  • чтобы вернуться, откройте файл в разработчике PL/SQL как командное окно и запустите
person kevinskio    schedule 13.08.2015