Извлечь код или скрипт из объектов базы данных

Мне нужно извлечь код (скрипт) из всех моих функций, процедур, пакетов, представлений и таблиц, чтобы при переходе в производство я мог запустить скрипт для создания всех объектов.

При разработке я не брал скрипт для резервного копирования всех объектов базы данных.

Каков наилучший способ извлечь код или скрипт? Любое предложение или помощь очень заметны.

Спасибо

Ответы на вопрос(4)

Решение Вопроса

Вы используете систему контроля версий, не так ли? Пожалуйста, сделай.

В противном случае вы можете использовать системную функциюdbms_metadata.get_ddl, который возвратит клочок DDL, использованного для создания объекта. Это нужно будет сделать для каждого отдельного объекта, так что, возможно, стоит просмотреть егоuser_objects.

В качестве альтернативы вы можете просмотреть определения в PL / SQL Developer, щелкнув правой кнопкой мыши по объекту и используяview Затем в правом нижнем углу вы можете просмотреть SQL, использованный для создания объекта.

Также естьэкспортировать & quot; инструмент & quot;, который не имеет такого хорошего объяснения того, как его использовать, как вариант SQL Developer.

Конечно, правильный ответ - получить систему контроля версий и использовать ее.

 Jåcob09 июн. 2012 г., 16:41
Можно ли интегрировать контроль версий с базой данных?
 Jåcob10 июн. 2012 г., 14:28
Что нужно сделать, чтобы включить VCS в базе данных? Любая настройка или сценарии должны быть выполнены, чтобы включить это? Спасибо
 Jåcob09 июн. 2012 г., 17:15
Да, VCS - хороший вариант. Большое спасибо.
 14 авг. 2015 г., 08:08
@ user75ponic Вы не включаете VCS в базе данных. Вместо этого вы пишете все SQL и PL / SQL DDL / DML в виде текстовых файлов, используя ваш любимый редактор на вашем компьютере. Сохраните файлы в VCS (SVN, git, hg и т. Д.) И выполните команду «Выполнить». файлы в базу данных с помощью инструмента командной строки (sqlplus в Oracle).
 09 июн. 2012 г., 16:58
Не то, что я знаю из. Вы можете создать свой собственный, сохранив все объекты DDL в таблице, однако, это все еще не так безопасно, как вы можете потерять все. У нас просто есть однострочный скрипт, который перебирает все папки в нашей VCS и выполняет там скрипты.

В моем случае все пользовательские объекты начинаются с «XX». Вы можете использовать или изменить мой скрипт:

DECLARE
   CURSOR c_tables IS
     SELECT replace(object_type, ' ', '_') type,
            object_name name,
            owner schema,
            object_type||'#'||object_name||'.sql' files
       FROM all_objects
      WHERE UPPER(object_name) LIKE 'XX%'
        AND object_type NOT IN ('DIRECTORY');

   ddl_text CLOB;

 BEGIN
   FOR rec_tables IN c_tables LOOP
     dbms_output.put_line('OBJECT_TYPE: '||rec_tables.type||', OBJECT_NAME: '||rec_tables.name||', SCHEMA: '||rec_tables.schema||' ->'||rec_tables.files);

     SELECT dbms_metadata.get_ddl(rec_tables.type, rec_tables.name, rec_tables.schema)
       INTO ddl_text
       FROM DUAL;

     dbms_xslprocessor.clob2file(ddl_text, 'UTL_CUSTOM_DDL', rec_tables.files, nls_charset_id('WE8MSWIN1252'));
   END LOOP;
 END;

С уважением

Извините, но у вас есть неоптимальная практика разработки, которая не распространяется за пределы одного разработчика.

Никогда не используйте клиенты SQL GUI & apos; Возможность редактировать объекты базы данных непосредственно в базе данных. (Если вы сознательно не хотите создавать искусственные проблемы.)

Вместо этого все SQL и PL / SQL DDL и DML должны находиться в текстовых файлах, сохраненных всистема контроля версий (VCS) (например,диверсия, мерзавец, ртутный). Используй свойлюбимый редактор редактировать файлы.

Измените базу данных, выполнив текстовые файлы, сохраненные в VCS, с помощью инструмента командной строки (в Oracle, которыйsqlplus). Это относится ко всем экземплярам базы данных: разработка, контроль качества, производство.

Для крупных проектов развития рассмотреть возможность использованиямиграция схемы инструменты (например,пролетный путь, Roundhouse).

За эти годы я смог устранить тонны проблем разработки и производства, применяя простое правило:

If the code is not in the VCS it doesn't exists.

(Удивительно, что еще в 2015 году было много команд разработчиков, не использующих VCS.)

Я не знаю о самой базе данных, ноРазработчик SQL сделаю это. Я уверен, что TOAD и другие подобные инструменты тоже.

Ваш ответ на вопрос