Oracle: Referenzen zwischen Objekten finden

7. Januar 2012

Wer kennt das nicht? Bei der Entwicklung neuer Funktionalitäten innerhalb einer Datenbank oder beim Refactoring stößt man auf Code, den man schon eine Weile nicht mehr angefasst hat. So fragt man sich dann zum Beispiel wo dieser eine View noch verwendet wird, oder welchen Zweck ein Package erfüllt.

Normalerweise sollte sämtlicher Code, auch Datenbankskripte, kommentiert sein und darüber Aufschluss geben wofür die programmierten Objekte dienen. Doch es kommt in der Praxis allzu häufig vor, dass man vor “fremdem” Code sitzt oder eine alte Software übernehmen oder analysieren muss.

In diesen Situationen, wenn die Kommentare mal wieder dürftig oder nicht vorhanden sind, hilft bei Oracle Datenbanken die tabelle user_dependencies. Dort findet man Informationen über die Beziehungen zwischen allen Datenbankobjekten, also welche Objekte werden von welchen anderen Objekten verwendet.

Beispiele zur Verwendung der Tabelle user_dependencies

– Zeige alle Beziehungen zwischen allen Datenbank-Objekten (Packages, Views, Tables, etc.).


SELECT *
  FROM user_dependencies
;

– Wenn man an einer Tabelle Änderungen vorgenommen hat und dann alle davon betroffenen Views und/oder Packages ermitteln will, hilft diese Abfrage.


SELECT *
  FROM user_dependencies
  WHERE UPPER(referenced_name) LIKE UPPER('Tabellenname')
;

– Zeige alle Packages die auf eine bestimmte Tabelle zugreifen (und dort evtl. Daten verändern)


SELECT *
  FROM user_dependencies
  WHERE
    UPPER(referenced_name) LIKE UPPER('Tabellenname')
    AND type = 'PACKAGE BODY'
;

– Zeige alle Views, die wiederum auf andere Views verweisen


SELECT *
  FROM user_dependencies
  WHERE referenced_type = 'VIEW'
  ORDER BY name
;

– Zeige alle Referenzen zwischen allen Views. Falls es bei diesem Select zu einem Fehler kommt, gibt es vermutlich Endlosschleifen durch Kreisverweise.


SELECT  name || SYS_CONNECT_BY_PATH(referenced_name, ' / ') "ABHAENGIGKEITS_PFAD", dep.*
  FROM user_dependencies dep
  WHERE referenced_type = 'VIEW'
  START WITH type = 'VIEW'
  CONNECT BY PRIOR referenced_name = name
ORDER BY name
;

Vorsätze für 2012

2. Januar 2012

Ich wünsche allen Lesern meines kleines Blogs ein frohes neues Jahr 2012!

Dieser Blog ist bisher von mir nur wenig genutzt worden, aber das möchte ich in diesem Jahr ändern. Da ich im letzten Jahr die Anzahl der Posts in meinem privaten Blog erfolgreich gesteigert habe, möchte ich dies nun auch hier erreichen. Im Laufe des nächsten Jahres werde ich ein paar kurze Beiträge zu Oracle Datenbanken und zu Programmierung verfassen. Diese Tipps sind zumeist nützliche Code-Schnipsel oder Erfahrungsberichte, die ich im Laufe meiner Programmiertätigkeit gesammelt habe.

Neue Herausforderungen

10. Januar 2011

Seit ziemlich genau einem Jahr habe ich für die Firma arivus GmbH in unterschiedlichen Projekten Software entwickelt. Dabei habe ich vor allem meine Kenntnisse in C und Java erweitern können und einiges über Projektführung gelernt.

Allerdings habe ich auch gemerkt, dass meine Stärken eher im Bereich der Anwendungsentwicklung liegen als bei Embedded Systems. Deshalb habe ich mich für einen Wechsel entschieden und arbeite ab Januar für die Firma Sintec. Ich danke meinen Kollegen bei arivus für die aufregende und lehrreiche Zeit und wünsche ihnen und arivus alles Gute für die Zukunft.

Aus dem vergangenen Jahr habe ich vor allem die Erfahrung gewonnen, dass es sehr vielfältige Beschäftigungen für Softwareentwickler gibt. Herauszufinden welche Aufgaben einem am besten liegen ist eine Lebensaufgabe. Ich freue mich darauf in kommenden Projekten mehr Erfahrungen zu sammeln und meine Spezialgebiete zu finden.

Arbeit. Arbeit.

27. Oktober 2009

Es ist soweit: Ich habe Arbeit gefunden und freue mich schon sehr darauf. :)

Diplom-Informatiker werden gesucht

14. Oktober 2009

Nach der Diplomarbeit und einem anschließenden, wohlverdienten Urlaub, bin ich nun auf der Suche nach einer festen Arbeitsstelle. Besonders der Bereich Software-Entwicklung und auch die Anwenderbetreuung interessieren mich, denn ich möchte nicht nur vor einem Rechner sitzen, sondern auch mit Menschen zu tun haben.

Die meisten Erfahrungen habe ich durch die Arbeit am Professorenkatalog bisher im Bereich der Webentwicklung sammeln können. Auch die Wartung von Servern und Backupstrategien sind mir dadurch vertraut. Ich bin jedoch offen für alles und würde auch sehr gern die vielfältigen Kenntnisse aus den Vorlesungen zur Software-Entwicklung jetzt in der Praxis anwenden und mich nicht auf Web-Entwicklung allein konzentrieren.

Meine freundliche Betreuerin von der Arbeitsvermittlung hat mich jedenfalls schon mal ermutigt. Sie war positiv überrascht als sie mir mitteilen konnte, dass es bundesweit noch viele offene Stellen für Diplom-Informatiker gibt. Ich bin mir sicher, dass da auch etwas passendes für mich dabei ist. :)

Diplomarbeit abgegeben

31. August 2009

Pünktlich zum Ende der Bearbeitungszeit habe ich letzte Woche meine Diplomarbeit mit dem Titel “Geschichtswissenschaftliche Datenbanken als Linked Data im World Wide Web am Beispiel des Professorenkatalogs der Universität Leipzig” eingereicht.

Ziel der Arbeit war es, die Umsetzung des Projekts “Professorenkatalog der Universität Leipzig” vorzustellen. Der Professorenkatalog enthält Biogramme von Professoren, die in Leipzig im 19. und 20. Jahrhundert gelehrt haben. Zur Erfassung der Daten wurde ein Ontologieschema für Professorenkataloge entworfen. Das Eingeben und Aktualisieren der biographischen Informationen wird von den Historikern am Lehrstuhl für Neuere und Neueste Geschichte der Universität Leipzig vorgenommen. Sie nutzen dazu die Software OntoWiki, die am Lehrstuhl für Betriebliche Informationssysteme an der Universität Leipzig entwickelt wird.

Die eingegebenen Daten werden dann mit Hilfe des Tools TOWEL für die Präsentation auf der Webseite exportiert. TOWEL steht für  ”Lightweight Ontology Web-Export Tool“. Das Tool wurde von mir entwickelt und ist Gegenstand der Diplomarbeit. Es ermöglicht dem Benutzer jede beliebige Ontologie zu exportieren und die Daten somit in eine relationale Datenbank zu überführen. Während des Exports können die Daten modifiziert und gefiltert werden. Die Filtermöglichkeiten erlauben es, sensible Daten wie zum Beispiel Passwörter oder Usernamen vom Export auszuschließen, wenn diese für den Webauftritt nicht benötigt werden.

Neben dem Tool und verschiedenen Verwendungsmöglichkeiten, wird in der Arbeit außerdem die Idee für ein Ontologie-Schema vorgestellt, welches es erlaubt Historische Persönlichkeiten zu beschreiben. Viele vorhandene Vokabulare wie Foaf  oder Bio beziehen sich auf lebende Personen. Doch für die historische Forschung ist es wichtig, relevante Informationen zu bereits gestorbenen Personen zu speichern. In der Vergangenheit gab es andere Maßstäbe, welche Informationen wichtig waren. So war lange Zeit der Beruf des Vaters ein wichtiges Indiz für den Stand der Familie. Solche und andere Informationen müssen im Profil einer historischen Persönlichkeit erfasst werden können, damit auf diesen Daten geforscht werden kann.

Interessante Links zum Thema:

Professorenkatalog auf MDR Info

8. August 2009

Der Radiosender MDR Info berichtet am 9. August über den Leipziger Professorenkatalog. Der Beitrag von Peter Raulien wird je um 11.47, 12.47, 13.47 Uhr gesendet. Den Radiosender kann man auch über die Webseite des mdr hören.

Hier geht’s zum Professorenkatalog der Universität Leipzig.

LinkedData des Professorenkatalogs

15. Juli 2009

Die Arbeit am Professorenkatalog, insbesondere an der Veröffentlichung der Daten im RDF-Format schreitet weiter voran. Die wichtigsten Informationen wie Name, Geburtsort, -datum, uvm. werden bereits auf der Webseite als RDF angeboten allerdings ist die Fehlersuche noch nicht abgeschlossen.

Hier ein Beispiel für einen Professor – ich habe mal einen Magdeburger rausgesucht ;) – im RDF-Format

http://www.uni-leipzig.de/unigeschichte/professorenkatalog/leipzig/Bodenstein_743.rdf

Man kann sich die Daten natürlich nach wie vor im HTML-Format ansehen:

http://www.uni-leipzig.de/unigeschichte/professorenkatalog/leipzig/Bodenstein_743