Як я можу відрізняти дві схеми 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;

Однак, коли я скидав і розширював котушку вихідних схем, майже у кожному рядку були тривіальні відмінності, що робить різницю марною. Наприклад, ім'я схеми міститься у кожному визначенні таблиці.

Чи є кращий спосіб зробити це, що дасть найважливіші дані схеми у форматі, який можна легко порівняти, використовуючи інструмент diff. Мене цікавлять таблиці, індекси та тригери.

Я використовую Oracle Database 10g Enterprise Edition випуску 10.2.0.3.0

Відповіді:


14

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

https://www.SchemaCrawler.com

Вам потрібно буде надати драйвер JDBC для вашої бази даних.


2
Набагато пізніше я зрозумів, що відповіді на поширені запитання говорять про те, що вам потрібно розкрити свою приналежність до проекту з відкритим кодом, і я почав це робити зараз. Однак я стоятиму за свою відповідь і вважаю, що це рішення, яке варто вивчити. Я використовував SchemaCrawler у двох своїх минулих компаніях, і обидві команди розробників погодилися, що це корисний інструмент для цієї мети. (Ні, я не був начальником.)
Sualeh Fatehi

6

вам не потрібно нічого з цього матеріалу.

otn.oracle.com

У Oracle є безкоштовний інструмент під назвою SQL Developer. у неї є схема розл.


4

Ви можете використовувати TOAD - це чудовий загальний інструмент для розвитку Oracle. Існує пробна версія для тестування. Зі списку функцій:

  • Майстер порівняння та синхронізації даних
  • Синхронізуйте дані на платформах баз даних

Ще один продукт, який ви можете протестувати, це OraPowerTools :

OraPowerTools - це сукупність нативних утиліт бази даних Oracle. Ця колекція включає OraEdit PRO, повне середовище розробки Oracle, DBDiff для Oracle, порівняйте та модернізуйте будь-які 2 бази даних Oracle та DBScripter для Oracle, створюйте сценарії sql із об'єктів та / або даних вашої бази даних Oracle.

Як безкоштовну альтернативу ви можете ознайомитись із цією статтею CodeProject: Інструмент порівняння схем для Oracle

Цей невеликий додаток VB.NET дозволяє порівнювати схеми баз даних Oracle один проти одного. Це дуже корисно, якщо ваш екземпляр розробки такий, як ваш екземпляр виробництва; особливо при здійсненні передових змін.

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


2

Ми використовуємо DKGAS "DBDiff для 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.