내용 목차
본 장에서는 DBMS_SESSION 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명한다.
본 절에서는 DBMS_SESSION 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명한다.
문맥의 모든 속성값들을 지운다. 이 프러시저는 CREATE CONTEXT DDL 을 통해 지정된 패키지 내에서만 호출할 수 있다.
CLEAR_ALL_CONTEXT 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.CLEAR_ALL_CONTEXT ( namespace IN VARCHAR2 )
파라미터
파라미터 | 설명 |
---|---|
namespace | 지울 문맥의 네임스페이스 이름을 지정한다. |
문맥의 속성값(들)을 지운다. 이 프러시저는 CREATE CONTEXT DDL 을 통해 지정된 패키지 내에서만 호출할 수 있다.
CLEAR_CONTEXT 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.CLEAR_CONTEXT ( namespace IN VARCHAR2, client_id IN VARCHAR2 DEFAULT NULL, attribute IN VARCHAR2 DEFAULT NULL )
파라미터
파라미터 | 설명 |
---|---|
namespace | 지울 문맥의 네임스페이스 이름을 지정한다. |
client_id | ACCESSED GLOBALLY로 생성된 문맥일 경우에만 의미를 가진다. NULL을 명시하면 SET_CONTEXT를 호출할 때에 client_id에 NULL을 주고 지정한 속성을 지울 수 있다. |
attribute | 특정 속성을 지우고자 할 때 명시한다. 명시하지 않으면 해당 문맥의 (해당 client_id를 가지는) 모든 속성값이 지워진다. |
예제
create or replace package body sec_pkg is procedure clear (name varchar2) as begin dbms_session.clear_context (name); end; end; /
현재 세션의 IDENTIFIER를 NULL로 설정한다.
CLEAR_IDENTIFIER 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.CLEAR_IDENTIFIER
예제
BEGIN DBMS_SESSION.CLEAR_IDENTIFIER; END; / SELECT CLIENT_IDENTIFIER FROM V$SESSION;
현재 세션에서 접근이 가능한 문맥들의 내용을 반환하는 함수이다.
LIST_CONTEXT 프러시저의 세부 내용은 다음과 같다.
프로토타입
TYPE AppCtxRecTyp IS RECORD (namespace VARCHAR2(30), attribute VARCHAR2(30), value VARCHAR2(256)); TYPE AppCtxTabTyp IS TABLE OF AppCtxRecTyp INDEX BY BINARY_INTEGER; DBMS_SESSION.LIST_CONTEXT(list OUT AppCtxTabTyp, size OUT NUMBER);
파라미터
파라미터 | 설명 |
---|---|
list | 문맥의 내용을 저장할 INDEX BY 테이블을 명시한다. |
size | buffer에 반환되는 entry의 수이다. |
이 프러시저는 CREATE CONTEXT DDL을 통해 지정된 패키지 내에서만 호출할 수 있다. 설정된 속성 값은 세션이 유지되는 동안 보존된다. 만일 해당 문맥의 속성이 이미 설정되어 있을 경우 SET_CONTEXT 호출은 해당 속성값을 덮어쓴다.
SET_CONTEXT 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.SET_CONTEXT ( namespace IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2, username IN VARCHAR2 DEFAULT NULL, client_id IN VARCHAR2 DEFAULT NULL )
파라미터
파라미터 | 설명 |
---|---|
namespace | 속성값을 설정할 문맥의 네임스페이스 이름이다. |
attribute | 해당 문맥에서의 속성 이름이다. |
value | 설정할 속성에 대한 속성값이다. |
username | 해당 속성에 접근할 수 있는 데이터베이스 사용자명이다. GLOBALLY ACCESSED인 문맥에 대한 속성을 설정할 때만 사용한다. 이 값을 설정하게 되면 해당 사용자만 이 속성에 접근할 수 있으며, 설정하지 않으면 모든 사용자가 속성에 접근할 수 있다. (기본값: NULL) |
client_id | 해당 속성에 대해 애플리케이션에서 사용하는 client_id를 명시할 수 있다. 대소문자를 구별하며 SET_IDENTIFIER 프러시저를 호출했을 때 명시했던 값과 일치해야 한다. GLOBALLY ACCESSED인 문맥에 대한 속성을 설정할 때만 사용한다. (기본값: NULL) |
예제
create or replace package body sec_pkg is procedure set_attr (name varchar2, attr varchar2, val varchar2) as begin dbms_session.set_context (name, attr, val); end; end; /
세션의 CLIENT_IDENTIFIER를 설정한다. 설정된 값은 V$SESSION의 CLIENT_IDENTIFIER 컬럼 또는 SYS_CONTEXT ('USERENV', 'CLIENT_IDENTIFIER') 내장 함수를 호출해서 얻을 수 있다.
SET_IDENTIFIER 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.SET_IDENTIFIER ( client_id IN VARCHAR2 )
파라미터
파라미터 | 설명 |
---|---|
client_id | 클라이언트 식별자이다. 64bytes 이상은 무시된다. |
예제
DECLARE client_id VARCHAR2(64); BEGIN client_id := 'MY_CLIENT_ID'; DBMS_SESSION.SET_IDENTIFIER(client_id); END; / SELECT CLIENT_IDENTIFIER FROM V$SESSION;
시스템 유일의 세션 식별자를 반환한다. 세션 식별자 크기는 64bytes이다.
UNIQUE_SESSION_ID 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.UNIQUE_SESSION_ID RETURN VARCHAR2
예제
DECLARE u_sess_id VARCHAR2(64); BEGIN u_sess_id := DBMS_SESSION.UNIQUE_SESSION_ID; DBMS_OUTPUT.PUT_LINE(u_sess_id); END; /
현재 열려 있는 DBLINK를 닫는다.
세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.CLOSE_DATABASE_LINK ( dblink IN VARCHAR2 )
예제
DECLARE BEGIN DBMS_SESSION.CLOSE_DATABASE_LINK('link1'); END; /
이 함수를 호출한 세션에 롤이 적용되어 있는지 확인한다.
세부 내용은 다음과 같다.
프로토타입
DBMS_SESSION.IS_ROLE_ENABLED ( rolename IN VARCHAR2 ) RETURN BOOLEAN
예제
DECLARE result BOOLEAN; BEGIN result := DBMS_SESSION.IS_ROLE_ENABLED('CONNECT'); END; /