Как я могу различить две схемы Oracle 10g?


14

У меня такое чувство, что между двумя большими сложными схемами 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

Ответы:


14

Бесплатный инструмент с открытым исходным кодом SchemaCrawler , который я написал, сделает то, что вам нужно. SchemaCrawler выводит сведения о вашей схеме (таблицы, представления, процедуры и т. Д.) В простом текстовом формате (текст, CSV или XHTML). SchemaCrawler также может выводить данные (включая CLOB и BLOB) в тех же форматах. Вы можете использовать стандартную программу сравнения для сравнения текущего вывода с эталонной версией вывода.

https://www.SchemaCrawler.com

Вам нужно будет предоставить драйвер JDBC для вашей базы данных.


2
Позже я понял, что в ответах на часто задаваемые вопросы говорится, что вам необходимо раскрыть свою принадлежность к проекту с открытым исходным кодом, и я начал это делать сейчас. Тем не менее, я поддерживаю свой ответ и думаю, что это решение стоит изучить. Я использовал SchemaCrawler в двух моих прошлых компаниях, и обе команды разработчиков согласились, что это полезный инструмент для этой цели. (Нет, я не был боссом.)
Суале Фатехи

6

Вам не нужно ничего из этого.

otn.oracle.com

У Oracle есть бесплатный инструмент под названием SQL Developer. у него есть схема diff.


4

Вы можете использовать TOAD - отличный инструмент для разработки Oracle. Есть пробная версия для тестирования. Из списка возможностей:

  • Мастер сравнения и синхронизации данных
  • Синхронизировать данные между платформами баз данных

Еще один продукт, который вы можете протестировать, это OraPowerTools :

OraPowerTools - это набор утилит для работы с базами данных Oracle. В эту коллекцию входит OraEdit PRO, полная среда разработки Oracle, DBDiff для Oracle, сравнение и обновление любых двух баз данных Oracle и DBScripter для Oracle, создание сценариев sql из объектов и / или данных базы данных Oracle.

В качестве бесплатной альтернативы вы можете проверить эту статью CodeProject: Schema Compare Tool для Oracle

Это небольшое приложение VB.NET позволяет сравнивать схемы баз данных Oracle друг с другом. Это очень полезно, когда нужно убедиться, что ваш экземпляр разработки совпадает с производственным экземпляром; особенно при реализации внешних изменений.

1 : 1 : http://www.toadsoft.com/toad_oracle.htm


2

Мы используем DKGAS 'DBDiff for Oracle' , он может сравнивать всю схему или ее часть (таблицы, последовательности, индексы, ограничения, привилегии, пакеты, объекты и данные) в качестве отчета сравнения или в качестве сценария обновления.

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


1

Если вы умеете запускать Perl, вы можете взглянуть на SQLFairy , который должен иметь возможность создавать дамп вашей схемы как SQL. Вы можете использовать стандартные инструменты для разметки текста. Существует также инструмент, который возьмет две схемы и выдаст команды ALTER, чтобы сделать их идентичными.


1

Если у вас есть немного денег, рассмотрите возможность использования PowerDIFF для Oracle: http://www.orbit-db.com . Этот инструмент превосходно сравнивает таблицы, индексы и триггеры и поставляется с рядом опций сравнения для настройки операции 'diff'. Сценарий полной разницы (команды DDL и DML) генерируется опционально. Вам нужен драйвер ODBC для подключения к базе данных.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.