У меня есть ощущение, что есть некоторая разница между двумя большими сложными схемами Oracle, которые должны быть идентичными, поэтому я решил сбросить и сравнить их для исследования. Нашла статью (http://www.dba-oracle.com/art_builder_get_schema_syntax.htm), который дает следующие команды для дампа определений таблиц и индексов.
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
Однако, когда я сбрасывал и сравнивал спул выходных схем, почти в каждой строке были тривиальные различия, делающие разницу бесполезной. Например, имя схемы включено в каждое определение таблицы.
Есть ли лучший способ сделать это, который предоставит наиболее важные данные схемы в формате, который можно легко сравнить с помощью инструмента сравнения. Меня интересуют таблицы, индексы и триггеры.
Я использую Oracle Database 10g Enterprise Edition Release 10.2.0.3.0
Бесплатная и с открытым исходным кодом SchemaCrawler инструмент, который я написал, сделает то, что вам нужно. SchemaCrawler выводит подробную информацию о вашей схеме (таблицы, представления, процедуры и т. Д.) В удобном для различий текстовом формате (текст, CSV или XHTML). SchemaCrawler также может выводить данные (включая CLOB и BLOB) в тех же текстовых форматах. Вы можете использовать стандартную программу сравнения, чтобы сравнить текущий вывод с эталонной версией вывода.
Вам нужно будет предоставить драйвер JDBC для вашей базы данных.
вам не нужно ничего из этого.
otn.oracle.com
У Oracle есть бесплатный инструмент под названием SQL Developer. у него есть схема diff.
Вы могли бы использовать ЖАБА - отличный универсальный инструмент для разработки Oracle. Есть пробная версия для тестирования. Из списка функций:
- Мастер сравнения и синхронизации данных
- Синхронизация данных между платформами баз данных
Еще один продукт, который вы можете протестировать, это OraPowerИнструменты:
OraPowerTools - это набор утилит для работы с базами данных Oracle. Эта коллекция включает OraEdit PRO, полную среду разработки Oracle, DBDiff для Oracle, сравнивайте и обновляйте любые 2 базы данных Oracle, а также DBScripter для Oracle, создавая сценарии sql из объектов и / или данных вашей базы данных Oracle.
В качестве бесплатной альтернативы вы можете ознакомиться с этой статьей CodeProject: Инструмент сравнения схем для Oracle
Это небольшое приложение VB.NET позволяет сравнивать схемы базы данных Oracle друг с другом. Это очень полезно, когда вы убедитесь, что ваш экземпляр разработки такой же, как и ваш производственный экземпляр; особенно при внесении изменений в интерфейс.
Мы используем DKGAS 'DBDiff для Oracle', он может сравнивать всю схему или ее часть (таблицы, последовательности, индексы, ограничения, привилегии, пакеты, объекты и данные) в виде отчета сравнения или сценария обновления.
Мы используем последний как основу для сценариев обновления базы данных.
Если вы умеете запускать Perl, вы можете посмотреть SQLFairy, который должен иметь возможность создавать дамп вашей схемы как SQL. Затем вы можете использовать стандартные инструменты для различения текста. А также есть инструмент который возьмет две схемы и создаст команды ALTER, чтобы сделать их идентичными.
Если у вас есть деньги, которые можно потратить, подумайте об использовании PowerDIFF для Oracle: http://www.orbit-db.com. Этот инструмент отлично сравнивает таблицы, индексы и триггеры, а также имеет ряд параметров сравнения для настройки операции 'diff'. Сценарий полной разницы (команды DDL и DML) генерируется дополнительно. Для подключения к базе данных вам понадобится драйвер ODBC.