![]() |
|
Программирование >> Oracle
Импорт и экспорт 419 set trimspool on set verify off spool &1..sql prompt set define off selectdecode(type -to char(line, fm99999) , PACKAGE BODY-1 , /chr(10) , null) decode(line,1,create or replace , ) text text from user source where name = upper(&&1) order by type, line; prompt / prompt set define on spool off set feedback on set heading on set termout on set linesize 100 Для тех, кто хотел бы получить весь код из схемы, я предлагаю сценарий getallcode.sql. Сначала он создаст по файлу для каждого хранимого объекта PL/SQL в текущем каталоге, а затем - сценарий getallcode INSTALL, который будет автоматически устанавливать весь этот код в другой схеме: set termout off set heading off set feedback off set linesize 50 spool xtmpx.sql select ©getcode object name from user objects where object type in (PROCEDURE, FUNCTION, PACKAGE) / spool off spool getallcode INSTALL.sql select © object name from user objects where object type in (PROCEDURE , FUNCTION, PACKAGE) / spool off set heading on set feedback on set linesize 130 set termout on ©xtmpx.sql Следующий сценарий позволяет выбрать код одного представления. Если выполнить команду SQL> @getaview view name, он создаст в текущем каталоге файл view name.sql, содержащий оператор CREATE VIEW: Глава 8 REM getaview.sql set heading off set long 99999999 set feedback off set linesize 1000 set trimspool on set verify off set termout off set embedded on column column name format Al000 column text format Al000 spool &1..sql prompt create or replace view 41 ( select decode (column id,l ,) column name column name from user tab colunms where table name = upper(&1) order by column id prompt ) as select text from user views where view name = upper(&1) prompt / spool off set termout on set heading on set feedback on set verify on Конечно, если необходимо получить все представления, можно использовать CL рий getallviews: set heading off set feedback off set linesize 1000 set trimspool on set verify off set termout off set embedded on spool tmp.sql select ©getaview view name from user views spool off set termout on set heading on set feedback on set verify on @tmp Импорт и экспорт 421 Наконец, имеется сценарий gettrig.sql. Он обрабатывает не все триггеры. Например, я не извлекаю конструкцию referencing OLD as поскольку никогда ее не использую. Идея - та же, что и в представленных ранее сценариях; этот сценарий очень легко изменить, если необходимо использовать корреляционные имена: set echo off set verify off set feedback off set termout off set heading off set pagesize 0 set long 99999999 spool &1..sql select create or replace trigger trigger name chr(10) decode(substr(trigger type, 1, 1), A, AFTER, B, BEFORE, I, INSTEAD OF) chr(10) triggering event chr (10) ON table owner . table name chr(10) decode(instr( trigger type, EACH ROW) , 0, null, FOR EACH ROW) chr(10), trigger body from user triggers where trigger name = upper(&1) prompt / spool off set verify on set feedback on set termout on set heading on Итак, мы показали, как с помощью утилит EXP/IMP получать операторы ЯОД для таблиц и индексов, занимающих определенное место на диске. Для объектов, много места не занимающих, в том числе триггеров, хранимых процедур, представлений, последовательностей, синонимов и т.д., больше подходят простые сценарии SQL*Plus. Утилиту IMP с параметром SHOW=Y можно использовать как последнее средство спасения, но если получать код требуется постоянно, лучше использовать сценарий. Резервное копирование и восстановление Утилиты ЕХР и IMP не следует использовать для резервного копирования и восстановления. Реальные резервные копии позволяет создавать только утилита RMAN и операционная система. Утилиты EXP/IMP не стоит использовать как средства резервного копирования по следующим причинам.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |