Logging und Debugging in Oracle Forms

777 Aufrufe

Veröffentlicht am

http://www.opitz-consulting.com/go/3-4-894

Jede Applikation braucht in der einen oder anderen Form die Möglichkeit, Debugging von Source Code und Logging von Fehlern während der Laufzeit anzubieten. Dieser Vortrag zeigt, wie einfach das ist und wie man Forms-Applikationen auch noch nachträglich mit dieser Technik ausrüsten kann.

Gerd Volberg, Solution Architect und Forms-Experte unserer IT-Beratung, hielt diesen Vortrag am 20. Februar 2014 beim Regionaltreffen NRW der Deutschen Oracle Anwendergruppe DOAG e. V. Das Treffen bot den Auftakt zu einer Serie von Regionaltreffen NRW mit dem Fokus auf Oracle Forms.

--
Über uns:
Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen.

Über unsere IT-Beratung: http://www.opitz-consulting.com/go/3-8-10
Unser Leistungsangebot: http://www.opitz-consulting.com/go/3-8-874
Karriere bei OPITZ CONSULTING: http://www.opitz-consulting.com/go/3-8-5

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
777
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
6
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Logging und Debugging in Oracle Forms

  1. 1. Logging und Debugging in Forms Gerd Volberg OPITZ CONSULTING Deutschland GmbH Bochum, 20. Februar 2014 Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 1
  2. 2. Agenda 1. Logging  Datenmodell  Tabellen  Views 2. Debugging  Debug-Package  Funktionen  Prozeduren  Ein erster Test  Best Practices Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 2
  3. 3. 1 Logging Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 3
  4. 4. Datenmodell Um Applikationen zu überwachen und diese Daten auf einfachste Art und Weise speichern zu können, benötigen wir eine Tabelle namens Logging und eine Sequence für den Primary Key. CREATE TABLE Logging ( ID SESSION_ID INSERT_DATE TEXT NUMBER(8,0) NOT NULL, NUMBER(8,0), DATE NOT NULL, VARCHAR2(2000) NOT NULL); CREATE SEQUENCE Logging_SEQ; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 4
  5. 5. Datenmodell Über diese Tabelle legen wir eine View, die die Daten der Tabelle 1:1 selektiert und sortiert. CREATE OR REPLACE VIEW V_Logging_desc (ID, SESSION_ID, INSERT_DATE, TEXT) AS SELECT ID, SESSION_ID, INSERT_DATE, TEXT FROM Logging ORDER BY SESSION_ID DESC, ID DESC; Die Sortierung ist wichtig, damit im SQL Developer oder TOAD die Analyse der Logging-Daten so einfach wie möglich ist. Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 5
  6. 6. 2 Debugging Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 6
  7. 7. Debug-Package Damit Fehlermeldungen und Debuginformationen protokolliert werden können, benötigen wir ein Package pk_Debug. CREATE OR REPLACE PACKAGE PK_Debug IS FUNCTION Debug_allowed RETURN BOOLEAN; FUNCTION Next_ID RETURN NUMBER; PROCEDURE Disable; PROCEDURE Enable; PROCEDURE Destroy; PROCEDURE Init (P_Debug_allowed IN BOOLEAN DEFAULT TRUE); PROCEDURE Write (P_Text IN VARCHAR2, P_Session_ID IN NUMBER DEFAULT NULL); G_Debug_allowed BOOLEAN := TRUE; G_Session_ID NUMBER; END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 7
  8. 8. Funktionen pk_Debug stellt folgende Funktionen zur Verfügung: Debug_Allowed – TRUE, wenn Debugging enabled ist Next_ID – Gibt die nächste Sequence zurück. CREATE OR REPLACE PACKAGE BODY PK_Debug IS FUNCTION Debug_allowed RETURN BOOLEAN IS BEGIN RETURN (G_Debug_allowed); END; FUNCTION Next_ID RETURN NUMBER IS V_ID NUMBER; BEGIN SELECT Logging_SEQ.nextval INTO V_ID FROM DUAL; RETURN (V_ID); END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 8
  9. 9. Prozeduren Wenn man größere Teile Source Code untersucht, kann es hilfreich sein, Teile, die schon untersucht wurden, vom Debugging auszuschließen. Dazu benötigen wir folgende Prozeduren: PROCEDURE Disable IS BEGIN G_Debug_allowed := FALSE; END; PROCEDURE Enable IS BEGIN G_Debug_allowed := TRUE; END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 9
  10. 10. Prozeduren Das Debugging kann initialisiert und destroyed werden: PROCEDURE Init ( P_Debug_allowed BEGIN G_Debug_allowed G_Session_ID Write ('--start IN BOOLEAN DEFAULT TRUE) IS := P_Debug_allowed; := Next_ID; ' || to_char (G_Session_ID) || '----------------------'); END; PROCEDURE Destroy IS BEGIN Write ('----------------------stopp ' || to_char (G_Session_ID) || '--'); G_Session_ID := NULL; END; Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 10
  11. 11. Prozeduren Die wichtigste Routine ist Write, mit der man einzelne LoggingDatensätze erzeugt: PROCEDURE Write ( P_Text IN VARCHAR2, P_Session_ID IN NUMBER DEFAULT NULL) IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN IF Debug_allowed THEN IF G_Session_ID IS NULL THEN Init; END IF; INSERT INTO Logging (ID, Session_ID, Insert_Date, Text) VALUES (Next_ID, NVL (P_Session_ID, G_Session_ID), Sysdate, P_Text); COMMIT; END IF; END; END; / Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 11
  12. 12. Ein erster Test In diesem Beispiel wird eine Variable V_Test untersucht und ins Logging geschrieben: pk_Debug.Init; pk_Debug.Write ('Hello World: ' || V_Test); pk_Debug.Destroy; Das Ergebnis in der Loggingtabelle sieht dann so aus: ID Session Insert-Date Text ============================================ 24 21 10.09.-12:38:48 -----------------------stopp 21-23 21 10.09.-12:38:48 Hello World: 42 22 21 10.09.-12:38:48 --start 21----------------------Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 12
  13. 13. Best Practices Wenn man in einer Routine Fehler sucht, sollte man jeden Bereich, den man autark untersuchen möchte, mit pk_debug.Init beginnen und mit Destroy enden lassen Wenn die Debug-Prozeduren im Source Code dauerhaft enthalten sein sollen, kann man das Debugging mit pk_Debug.Disable unterbrechen und mit Enable wieder fortführen. Beim Start kann die Routine Init automatisch enabled oder disabled starten. Just use it! Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 13
  14. 14. Download Das Package inkl. der DDL-Skripte zusammen mit dieser Präsentation sind ab Freitag, 21.02.2014, unter folgender URL zu finden: http://code.google.com/p/forms-framework/ Dort dann einfach auf "Downloads" klicken Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 14
  15. 15. Ihr Ansprechpartner Gerd Volberg Solution Architect OPITZ CONSULTING Deutschland GmbH Kirchstr. 6, 51647 Gummersbach Tel. +49 (2261) 60 01-0 gerd.volberg@opitz-consulting.com talk2gerd.blogspot.com Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 15

×