robotto7831a Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Hallo zusammen, wir haben ein altes Dictionary Programm, mit dem man Tabellen anlegen, ändern, löschen kann und wenn man das Programm laufen läst, dann prüft das in der Oracle Datenbank ob Tabellen fehlen und legt diese dann wieder an, wenn man die mal gelöscht haben sollte. Leider ist das Programm nicht mit Oracle 9 kompatibel. Die Firma von der das Programm ist, gibt es schon lange nicht mehr. Kennt jemand ein ähnliches Programm für Oracle 9? Frank Zitieren
mme Geschrieben 9. Oktober 2003 Geschrieben 9. Oktober 2003 Ein solches Tool was überwacht ob alle angelegten Tabellen noch existieren kenne ich nicht, aber du kannst sowas doch selber machen. Du lässt einfach in regelmäßigen Abständen ein Script laufen was alle Tabellen anlegt. Existiert eine Tabelle schon gibts ne Fehlermeldung und alle die nicht existieren werden neu angelegt. Das ganze kannst du auch mit Export/Import machen. Du exportierst die Datenbank (oder alle relevanten Tabellen) und Importierst die dann in regelmäßigen Abständen. Wenn du nur die Strucktur beim Import haben willst und nicht auch die Inhalte gibts du beim Export das Attribut "rows=no" an. Nachteil ist, das du bei jeder Struckturveränderung einen neuen Export-Dump bzw. ein neues Tabellenerstellungsscript erstellen musst.... Aber wieso kommt es überhaupt dazu das bei euch jemand Tabellen löscht? Nimm doch allen das Recht "drop Table" weg..... Zitieren
robotto7831a Geschrieben 9. Oktober 2003 Autor Geschrieben 9. Oktober 2003 Das mit dem Tabellen löschen war nur ein Beispiel. Wir haben nämlich 6 Testdatenbank und 1 Produktivdatenbank. Und die Testdatenbanken haben nicht alle immer alle Tabellen. Und dann kann ich mit dem Programm die fehlenden Tabellen schnell anlegen. Frank Zitieren
mme Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 Ok, dafür ist der andere Vorschlag unpraktisch..... Ich kann dir höchstens noch vorschlagen die Verschiedenen DBs zu vergleichen mit einem sql-Script und dann die fehlenden von hand anlegen... Handelt es sich tatsächlich um 7 Datenbanken (instanzen) oder lediglich um Schemata?? Wenn du Schemata vergleichen willst ist das ja ziemlich einfach mit z.B. folgendem Select: select max(owner) object_name, object_type from dba_objects where owner in('SchemaA','SchemaB') group by object_name, object_type having count(object_name) < 2; Du must nur noch für SchemaA und SchemaB die namen einzutragen und bekommst die Tabellen, Indizes,.... angezeigt die in dem jeweils anderem Schema nicht da sind. Das gleiche kannst du mit den sonstigen Attributen (Colums,...) in der Datenbanken machen. Wenn du allerdings mehrere Instanzen hast, müsstest du die Abfrage über mehrer Datenbanken machen vielleicht mit einem union select über die beiden dba_objects der Datenbanken (Wofür die Datenbanken optimalerweise verlinkt sind). Ansonsten hast du natürlich noch die Möglichkeit einen einfachen Datenmodelldesigner zu nehmen. Z.B. Sybase Powerdesigner. Du kannst mit reverse engeneering das Datenmodell aus einer DB (Schema) holen und dieses dann zum abgleich gegen eine anderes Schema laufen lassen und als ergebnis bekommst du dann die sql-Scripte um das fehlende hinzuzufügen. Aber diese Programme sind meiner meinung nach nicht die besten, da die physical options bei Oracle DB in diesen Tools fast immer probleme machen..... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.