• Like
  • Save

Logging und Debugging in Oracle Forms

  • 381 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
381
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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. 1 Logging Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 3
  • 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. 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. 2 Debugging Oracle Forms Tipps und Tricks © OPITZ CONSULTING GmbH Seite 6
  • 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. 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. 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. 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. 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. 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. 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. 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. 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