Announcement

Collapse
No announcement yet.

Daten in Datenbank finden (in welcher Tabelle & Spalte wurde gerade gespeichert)

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

  • Daten in Datenbank finden (in welcher Tabelle & Spalte wurde gerade gespeichert)

    Hallo Forum,

    ich habe eine alte Datenbank bekommen, über die ich eine Auswertung fahren soll. Der Admin hat sie mir in Oracle (11g) importiert und ich kann darauf zugreifen und SQL Befehle absetzen. Soweit sogut.

    Die Datenbank ist ein Sammelsurium an einzelnen Tabellen (knapp 60 Stück), in denen die Daten verteilt sind. Eine Dokumentation gibt es leider gar nicht und diejenigen, die mit dieser Datenbank damals gearbeitet hatten, sind nicht mehr da.

    Jetzt gibt es noch ein altes Programm mit GUI, in dem man grafisch die Auswertebögen, auf denen diese Datenbank basiert, ausfüllen kann. D.h. ich kann gezielt in einem Testbogen die für meine Auswertung wichtigen Felder anhaken und den Bogen speichern. Die Daten laden dann (irgendwo) in der Datenbank.

    Jetzt beginnt die Sucherrei, in welchen Tabellen und welchen Spalten die Werte gespeichert wurden. Die Tabellennamen sind kryptische Abkürzungen, die nicht wirklich weiter helfen.
    Was ich bisher heraus gefunden habe: In allen Tabellen gibt es eine eindeutige Testbogen-ID (Primärschlüssel) und eine Haupttabelle, in der diese ID landet, wenn ein neuer Bogen angelegt wird. Wenn bestimmte Felder angekreuzt werden, dann wandert in eine andere Tabelle ein Eintrag mit dieser ID + der dazugehörigen Spalte. Dabei scheint es immer nur eine 1:1 Verknüpfung zu geben. Bzw. 1:n, wobei "n" keine oder eine Entsprechung ist.

    Habt ihr eine Idee, wie ich am besten die Einträge finde, die gerade über die GUI geändert und gespeichert wurden? Ich habe schon versucht, alle Tabellen mit FULL JOIN zu verknüpfen und auf eine Test ID zu beschränken, aber dann läuft sich die Query "zu tode".

    Oder kann man die aktuellen Änderungen mitloggen?

    Danke,
    Yusuf

  • #2
    Ev. gibt es eine Methode Oracle zu überreden alle eingehenden SQL Statements zu loggen. Dann könnte man diese mal untersuchen
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Ev. gibt es eine Methode Oracle zu überreden alle eingehenden SQL Statements zu loggen. Dann könnte man diese mal untersuchen
      Ja, das gibt es und nennt sich Trace. Einfach mal in der Oracle Dokumentaion nachsehen, dort findest du bestimmt etwas.

      Wenn du nur einzelne Statements suchst, helfen dir vielleicht auch diese Views weiter: v$session, v$sql und v$sqltext

      Gruss

      Comment


      • #4
        Zusätzlich kann man Tools für das "Browsen" von Datenbankaktivitäten nutzen.
        Frei verfügbar ist m.E. der SQL-Developer

        Comment


        • #5
          Hallo zusammen,

          herzlichen Dank für die Antworten, das hat mir sehr geholfen! In der V$SQL Tabelle sehe ich alle Einträge, die von dem GUI Programm gespeichert werden. In den Feld SQL_TEXT steht dann der jeweilige SQL Befehl im Klartext drinnen und man kann schön sehen, in welche Tabellen und Spalten er was einträgt/löscht/ändert/abruft. Wenn man noch das Schema (PARSING_SCHEMA_NAME) und das Datum (LAST_ACTIVE_TIME) einschränkt und nach der Uhrzeit sortiert, dann hat man eine schöne Historie.
          [highlight=SQL]
          Select
          *
          From
          V$SQL
          Where
          To_Char(LAST_ACTIVE_TIME, 'YYYY/MM/DD') = '2012/05/11' And
          PARSING_SCHEMA_NAME = 'FOO'
          Order By
          FIRST_LOAD_TIME
          [/highlight]
          Jetzt muss ich "nur noch" aus dem Wust der Abfragen (pro Speichervorgang schickt die GUI knapp 200 einzelne SQL Anweisungen los) die für mich wichtigen Felder heraus finden... Wisst ihr einen Kniff, wie ich ein "Diff" (Unterschiede zwischen zwei Texten) hinbekomme? Dann könnte ich im GUI Programm zuerst speichern, dann ein GUI Feld verändern und wieder speichern. Theoretisch sollte dann nur die gerade geänderte Position zu sehen sein.

          Grüße,
          Yusuf

          Comment


          • #6
            Diff Tools wären z.B:
            Windiff, gibts heute glaub nur noch mit Visual Studio
            Ultraedit, bzw. verbessert in Ultraedit addon
            ExamDiff, Free oder Pro
            ..
            Gruß, defo

            Comment

            Working...
            X