Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

13
Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk • 26 mei 2011

Transcript of Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Page 1: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Kennissessie instrumentatie-packages

dbms_application_infologger

Rob van Wijk • 26 mei 2011

Page 2: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Het wat en waarom van instrumentatie

Code larderen met alle informatie die je ooit nodig mocht hebben om problemen op

te kunnen lossen.

Code die je aan en uit kunt zetten. Standaard aan in de ontwikkelomgeving en uit

in alle andere omgevingen.

Bouw het vanaf dag 1 in, zodat je nooit meer hoeft te debuggen en zodat de kleine

overhead ingebakken kosten zijn.

Het heeft een enorm korte terugverdientijd

Het moet gemakkelijk in het gebruik zijn

Page 3: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Package dbms_application_info

PROCEDURE set_module (module_name in VARCHAR2, action_name in VARCHAR2);

PROCEDURE set_action (action_name IN VARCHAR2);

PROCEDURE set_client_info (client_info IN VARCHAR2);

PROCEDURE read_module (module_name OUT VARCHAR2, action_name OUT VARCHAR2);

PROCEDURE read_client_info (client_info OUT VARCHAR2);

PROCEDURE set_session_longops

( rindex IN OUT BINARY_INTEGER

, sno IN OUT BINARY_INTEGER

, op_name IN VARCHAR2

, target IN BINARY_INTEGER

, context IN BINARY_INTEGER

, sofar IN NUMBER

, totalwork IN NUMBER

, target_desc IN VARCHAR2

, units IN VARCHAR2

);

Page 4: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Package dbms_application_info

Stelt DBA’s en anderen in staat om te kunnen zien waar sessies, SQL en gebruik

van systeembronnen vandaan komt.

Module, Action en Client_Info zichtbaar in X$KSUSEX V$SESSION en V$SQLAREA SQL*Trace-bestanden Monitoring-pakketten, bijvoorbeeld i3

Behoeft geen aparte installatie: DBMSAPIN.SQL wordt gedraaid als standaard

onderdeel van een database installatie.

ip1.sql

Page 5: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Package dbms_application_info

Ja, is leuk hoor, maar daar wordt mijn programma onnodig traag van ...

ip2.sql

Page 6: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

dbms_application_info.set_session_longops

zet een rij in V$SESSION_LONGOPS Voor database-operaties die langer dan 6 seconden duren Voorbeelden: backup, uitvoeren van zoekvragen, statistieken vergaren Belangrijke kolommen: SOFAR en TOTALWORK Nu dus ook zelf te vullen

ip3.sql

Page 7: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Logger

https://www.samplecode.oracle.com/sf/projects/logger/ Van Tyler Muth en Christopher Beck Ondersteunde database-versies: XE, 10.2, 11.1 en 11.2

“What is Logger?

This is a PL/SQL logging and debugging framework. The goal of logger is to be as simple

as possible to install and use. The primary use cases for this utility include: Debugging: It's often difficult to track down the source of an error without some form

of debugging instrumentation. This is particularly true in multi-tier, stateless

architectures such as Application Express. Error Logging: While most experts agree that it's important not to mask errors, it's also

nice to have a persistent record of them. Timing: Logger has a very simple timing framework built-in that makes it easy to

benchmark sections of code. Instrumentation: Because it's easy to "turn-off" logger globally with virtually no

performance impact, it's easy to get in the habit of leaving debug calls in production

code. Now, when something does go wrong, you simply flip the switch and logger is

enabled making it much quicker to debug errors.”

Page 8: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Logger: de basis

Tabel LOGGER_LOGS Drie views daar bovenop voor extra gebruikersgemak:

• LOGGER_LOGS_5_MIN

• LOGGER_LOGS_60_MIN

• LOGGER_LOGS_TERSE

Package LOGGER met de volgende logprocedures

• LOG_PERMANENT

• LOG_ERROR

• LOG_INFORMATION

• LOG_WARNING

• LOG

ip4.sql

Page 9: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Logger-niveaus

Mogelijke waarden voor LOGGER_LEVEL:

• OFF 0

• PERMANENT 1

• ERROR 2

• WARNING 4

• INFORMATION 8

• DEBUG 16

• TIMING 32

• SYS_CONTEXT 64

• APEX 128

Page 10: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Package logger

Ok, dbms_application_info is snel, maar in productie wil je toch niet al die

aanroepen van logger als ze 99,9% van de tijd toch uit staan ...

ip5.sql

Page 11: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Logger: instellingen

Tabel LOGGER_PREFS 8 rijen die je als systeemparameters kunt zien:

PREF_NAME PREF_VALUE

------------------------------ ------------------------------

LEVEL DEBUG

PURGE_MIN_LEVEL DEBUG

PROTECT_ADMIN_PROCS TRUE

LOGGER_VERSION 1.3.0

INSTALL_SCHEMA LOGGER

INCLUDE_CALL_STACK TRUE

PURGE_AFTER_DAYS 7

GLOBAL_CONTEXT_NAME LOGGER_LOGCTX

Eén tabel voor alle sessies

ip6.sql

Page 12: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

Logger: extra’s

flashback APEX CGI environment User environment variabelen purge job overhead: NO_OP optie

Page 13: Kennissessie instrumentatie-packages dbms_application_info logger Rob van Wijk•26 mei 2011.

13

Bedankt voor jullie aandachtVoor meer informatie: www.ciber.nl