Jak mogę różnicować dwa schematy Oracle 10g?

14

Mam wrażenie, że istnieją dwie różnice między dwoma dużymi skomplikowanymi schematami Wyroczni, które powinny być identyczne, więc postanowiłem je zrzucić i zróżnicować w celu zbadania. Znalazłem artykuł ( http://www.dba-oracle.com/art_builder_get_schema_syntax.htm ), który podaje następujące polecenia do zrzucenia definicji tabeli i indeksu.

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;

Jednak gdy zrzuciłem i zdywersyfikowałem szpulę danych wyjściowych schematów, w każdej linii występowały trywialne różnice, co czyni tę różnicę bezwartościową. Na przykład nazwa schematu jest zawarta w każdej definicji tabeli.

Czy jest lepszy sposób, aby to zrobić, który da najważniejsze dane schematu w formacie, który można łatwo porównać za pomocą narzędzia do porównywania. Interesują mnie tabele, indeksy i wyzwalacze.

Korzystam z Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

Stuart Woodward
źródło

Odpowiedzi:

14

Bezpłatne i otwarte narzędzie SchemaCrawler , które napisałem, zrobi wszystko, czego potrzebujesz. SchemaCrawler wyświetla szczegółowe informacje o twoim schemacie (tabele, widoki, procedury i więcej) w różnym formacie zwykłego tekstu (tekst, CSV lub XHTML). SchemaCrawler może również wyprowadzać dane (w tym CLOB i BLOB) w tych samych formatach zwykłego tekstu. Możesz użyć standardowego programu różnicowego, aby różnicować bieżące wyjście z referencyjną wersją wyjścia.

https://www.SchemaCrawler.com

Konieczne będzie podanie sterownika JDBC dla bazy danych.

Sualeh Fatehi
źródło
2
Zdałem sobie sprawę znacznie później, że często zadawane pytania mówią, że musisz ujawnić swoją przynależność do projektu open source, i zacząłem to robić teraz. Pozostaję jednak przy mojej odpowiedzi i uważam, że jest to rozwiązanie, które warto zbadać. Użyłem SchemaCrawler w dwóch moich wcześniejszych firmach i oba zespoły programistów zgodziły się, że jest to przydatne narzędzie do tego celu. (Nie, nie byłem szefem.)
Sualeh Fatehi
6

nie potrzebujesz żadnej z tych rzeczy.

otn.oracle.com

Oracle ma bezpłatne narzędzie o nazwie SQL Developer. ma różnicę schematu.

Kok
źródło
4

Możesz użyć TOAD to świetne ogólne narzędzie do programowania Oracle. Istnieje wersja testowa do testowania. Z listy funkcji:

  • Kreator porównywania i synchronizacji danych
  • Synchronizuj dane między platformami baz danych

Kolejnym produktem, który możesz przetestować, jest OraPowerTools :

OraPowerTools to zbiór rodzimych narzędzi bazy danych Oracle. Ta kolekcja zawiera OraEdit PRO, kompletne środowisko programistyczne Oracle, DBDiff dla Oracle, porównuj i aktualizuj dowolne 2 bazy danych Oracle, a DBScripter dla Oracle, twórz skrypty SQL z obiektów i / lub danych Twojej bazy danych Oracle.

Jako bezpłatną alternatywę możesz sprawdzić ten artykuł CodeProject: Schema Compare Tool for Oracle

Ta niewielka aplikacja VB.NET pozwala porównywać ze sobą schematy bazy danych Oracle. Jest to bardzo pomocne, gdy upewniasz się, że instancja programistyczna jest taka sama jak instancja produkcyjna; szczególnie przy wdrażaniu zmian interfejsu.

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

splattne
źródło
2

Używamy DKGAS „DBDiff for Oracle” , który może porównywać cały schemat lub jego część (tabele, sekwencje, indeksy, ograniczenia, uprawnienia, pakiety, obiekty i dane), jako raport porównawczy lub jako skrypt aktualizacji.

Używamy tego ostatniego jako podstawy skryptów aktualizacji bazy danych.

Andrzej
źródło
1

Jeśli jesteś w stanie uruchomić Perla, możesz spojrzeć na SQLFairy , które powinno być w stanie wygenerować zrzut twojego schematu jako SQL. Możesz wtedy użyć standardowych narzędzi do różnicowania tekstu. Istnieje również narzędzie, które pobierze dwa schematy i utworzy polecenia ALTER, aby były identyczne.

David Pashley
źródło
1

Jeśli masz trochę pieniędzy do wydania, rozważ użycie PowerDIFF dla Oracle: http://www.orbit-db.com . To narzędzie doskonale porównuje tabele, indeksy i wyzwalacze i jest wyposażone w wiele opcji porównawczych umożliwiających dostosowanie operacji „różnicowania”. Skrypt różnicy całkowitej (polecenia DDL i DML) jest generowany opcjonalnie. Aby połączyć się z bazą danych, potrzebujesz sterownika ODBC.


źródło