Announcement

Collapse
No announcement yet.

Datenbank-Struktur vergleichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank-Struktur vergleichen

    Hallo zusammen

    Ich habe eine neue Version meiner Applikation erhalten, welche ich in einer Testumgebung installiert habe.

    Nun brauche ich eine Liste von Änderungen an der Datenstruktur, also z.B. welche Tabellen sind neu, bzw. wurden gelöscht.
    Die Liste muss aber auch innerhalb der Tabelle schauen, was sich geändert hat, also neue Felder, gelöschte Felder, Änderung des Datentyps, Änderung der Feldlänge, etc.

    Die beiden Datenbanken habe ich nun mit einem DB-Link verbunden, so dass ich den Vergleich mit einem SQL machen könnte.

    Leider bin ich nicht so der SQL-Spezialist ... hab mal folgendes Versucht, läuft aber ewig ... also scheint's nicht so richtig zu sein

    select a.table_name, b.table_name, a.data_type, b.data_type, a.data_length, b.data_length from dba_tab_columns a, dba_tab_columns@dbtest b
    where a.owner = 'APSYS'
    and b.owner = 'APSYS'
    and (a.table_name != b.table_name or
    a.data_type != b.data_type or
    a.data_length != b.data_length)


    Wäre toll, wenn mir da jemand weiterhelfen könnte.

    Dafür schon mal im Voraus besten Dank!

    Gruss Rolf

  • #2
    Hallo Rolf

    Du vergleichst "a.table_name != b.table_name", d.h. alle Tabellen miteinander die nicht gleich heissen - dass kann nicht funktionieren.
    Im TOAD kann man das auf Knopfdruck machen - ist halt nicht ganz so preisgünstig.

    Versuche es mal mit einem FULL OUTER JOIN, ungefähr so:
    [highlight=sql]
    select ...
    from dba_tab_columns a
    full outer join dba_tab_columns@dbtest b on a.owner = b.owner and a.table_name = b.table_name and a.column_name = b.column_name
    where a.owner = 'APSYS'
    and (a.table_name is null or b.table_name is null)
    [/highlight]

    Gruss

    Comment


    • #3
      Hallo Wernfrie

      Besten Dank für das Script ...

      Das Ergebnis kann ich nicht ganz nachvollziehen.
      Zum Einen werden Felder angezeigt, die in der neuen Version nicht mehr vorhanden sind, daneben aber auch teilweise Felder, die gar nicht verändert wurden.

      Der Hinweis auf Toad ist toll ... lade mir mal die Trial Version herunter ...
      Bis jetzt verwende ich nur den SQL Navigator von Quest ...

      Mal schauen, ob ich's in der Trial Version dann finde.

      Gruss Rolf




      Originally posted by Wernfried View Post
      Hallo Rolf

      Du vergleichst "a.table_name != b.table_name", d.h. alle Tabellen miteinander die nicht gleich heissen - dass kann nicht funktionieren.
      Im TOAD kann man das auf Knopfdruck machen - ist halt nicht ganz so preisgünstig.

      Versuche es mal mit einem FULL OUTER JOIN, ungefähr so:
      [highlight=sql]
      select ...
      from dba_tab_columns a
      full outer join dba_tab_columns@dbtest b on a.owner = b.owner and a.table_name = b.table_name and a.column_name = b.column_name
      where a.owner = 'APSYS'
      and (a.table_name is null or b.table_name is null)
      [/highlight]

      Gruss

      Comment


      • #4
        Wenn es mit TOAD nicht geht oder zu teuer ist, dann schaue dir mal das an:

        http://www.sqlmanager.net/de/products/oracle/dbcomparer

        bye,
        Helmut

        Comment


        • #5
          Hallo Helmut

          Besten Dank für den Tip.

          Hab den dbcomparer installiert, aber leider funktioniert der nicht ...

          Erhalte folgende Fehlermeldung:

          Error: Access violation at address 0040489E in module 'oracomparer.exe'. Read of address 20D385D0

          Weisst du grad, was das verursachen kann?

          Gruss Rolf

          Comment


          • #6
            Hallo Rolf,

            kann da leider nichts dazu sagen, weil ich selber nichts mit Oracle mache, verwende nur den SQL-Server.
            Wende dich am besten direkt an den Hersteller, diese Firma ist in der Regel recht hilfsbereit.
            (vielleicht ist auch dein download-file kaputt??)

            lG,
            Helmut

            Comment


            • #7
              Warum nimmst Du nicht das SQL, das gepostet wurde. Es geht Dir ja schließlich nur um die Datenstrukturen.
              Das SQL liefert erstmal alle Tabellen und Spalten. Der Full Outer Join mit der zusätzlichen User-Einschränkung funktioniert allerdings nur halb.

              Das geht richtig:
              [highlight=SQL]
              SELECT NVL(a.TABLE_NAME, b.table_NAME) as SortTable,
              nvl(a.COLUMN_NAME, b.COLUMN_NAME) as SortColumn,
              a.TABLE_NAME, a.COLUMN_NAME, b.TABLE_NAME, b.COLUMN_NAME
              FROM (select TABLE_NAME, COLUMN_NAME from dba_tab_columns where owner = 'APSYS') a
              full JOIN (select TABLE_NAME, COLUMN_NAME from dba_tab_columns@ora_lto.gepd where owner = 'APSYS') b
              ON a.TABLE_NAME = b.TABLE_NAME
              AND a.column_name = b.column_name
              order by 1, 2
              [/highlight]

              Es werden hier allerdings noch keine Vergleiche vorgenommen, unterschiedliche Datenlängen, -Typen usw. musst Du noch einschränken und die Sortierungsspalten sind nur Zucker.

              Die [email] Tags musst Du Dir wegdenken. Keine Ahnung wie man diese tolle Automatik umgehen kann.
              Gruß, defo

              Comment


              • #8
                Hallo,
                Originally posted by defo View Post
                ...Die [email] Tags musst Du Dir wegdenken. Keine Ahnung wie man diese tolle Automatik umgehen kann.
                Du musst im erweiterten Editor bei "Zusätzliche Einstellungen" das Häckchen bei "Links automatisch umwandeln" rausnehmen.

                Gruß Falk
                Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                Comment


                • #9
                  Originally posted by Falk Prüfer View Post
                  Du musst im erweiterten Editor bei "Zusätzliche Einstellungen" das Häckchen bei "Links automatisch umwandeln" rausnehmen.
                  Danke Falk!
                  Gruß, defo

                  Comment

                  Working...
                  X