prog:plsql_sleep_19c
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
PL/SQL - Eine DB Session "schlafen" legen - Wie und welche Sleep Funktion einsetzen?
Aufgabe: Eine Datenbank Session soll mit einer sleep Funktion eine gewisse Zeit pausiert werden.
Z.B. in einem Monitoring Job, der jede Minute prüfen ob ein andere Job noch aktiv ist und keine Fehler geworfen hat.
Möglichkeiten:
APEX Installiert:
- APEX_UTIL.pause
DB Version vor 18c:
- Java über java.lang.Thread.sleep
- DBMS_LOCK.sleep
DB Version ab 18c
- DBMS_SESSION.sleep
APEX_UTIL.pause
Ist in der DB APEX installiert, kann auf APEX_UTIL zurückgegriffen werden.
10 Sekunden warten:
BEGIN APEX_UTIL.PAUSE(10); END; /
Java
Verwendung der Java Klasse „java.lang.Thread“
CREATE OR REPLACE PROCEDURE sleep_java(p_milli_seconds IN NUMBER) AS LANGUAGE JAVA NAME 'java.lang.Thread.sleep(long)';
Nachteil: In den AWR / Statspack Berichten wird dann OVJM gerne als häufigster Wait aufgezeigt, sind noch andere Java Komponenten im Einsatz verfälscht das stark das Ergebniss.
DBMS_LOCK.sleep
Nachteil:
- Sicherheitsprobleme mit DBMS_LOCK habe dazugeführt das her keine Public Synonym in der DB für dieses Package vorliegt und damit ein direkter Grant benötigt wird!
Ab 18c auf keine Fall mehr verwenden!
DBMS_SESSION.sleep
Ab der Version 18!
Quellen
prog/plsql_sleep_19c.1613722989.txt.gz · Zuletzt geändert: 2021/02/19 09:23 von gpipperr