Das Oracle CONTEXT Object - Globale Werte in einer Session hinterlegen

Aufgaben: In einer Session soll über eine globale Variable in Views / PL/SQL Procedure etc. auf Eigenschaften zugegriffen werden.

Rechte vergeben

Als SYS User:

GRANT CREATE ANY CONTEXT TO  GPI;

Context anlegen

CREATE OR REPLACE CONTEXT GPI_MON USING gpi.ADMIN_ENV;

Das Package um den Context zu setzen muss zu diesem Zeitpunkt noch nicht exisiteren

Context über Package setzen

Package anlegen

CREATE OR REPLACE package admin_env
AS 
   PROCEDURE setcontext;  
 END admin_env;
 
CREATE OR REPLACE package body admin_env 
AS 
   PROCEDURE setcontext
   IS
   BEGIN
   dbms_session.set_context (
         namespace => 'gpi_mon',
         attribute => 'username',
         VALUE     => 'hugo');         
   END setcontext;
END admin_env; 

Context über Package setzen

Setzen:

	BEGIN
		ADMIN_ENV.setContext;
	END;
	/

Abfrage:

	SELECT sys_context('GPI_MON','USERNAME') FROM dual;

Quellen

SQL Doku ⇒ http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_5002.htm#SQLRF01202

Beispiel ⇒ https://docs.oracle.com/cd/B28359_01/network.111/b28531/app_context.htm#CIHBCIHG