0%

Oracle DB sys_context, 오라클 현재 세션 정보 확인, sys_context userenv

oracle

ORACLE SYS_CONTEXT 란?

오라클에서 현재 세션 정보를 얻기 위해, SYS_CONTEXT 함수를 사용할 수 있어 소개합니다.

사실, SYS_CONTEXT는 지정된 컨텍스트의 속성 값을 반환하며,
컨텍스트, 속성 및 값은 이미 DB에 정의되어 있어야 합니다

그 중에서 USERENV는 현재 세션을 설명하는 내장 컨텍스트이며,
대표적인 사용법은 다음과 같습니다.

1
SYS_CONTEXT ('USERENV', 'OS_USER')

쿼리사용예제

DUAL 테이블을 사용하여 아래와 같은 SELECT문을 사용하면,
각각의 세부 값들을 확인할 수 있습니다.

1
2
3
4
5
6
SELECT 
SYS_CONTEXT('USERENV', 'SESSIONID'), --  사용자 세션아이디
SYS_CONTEXT('USERENV', 'OS_USER'), --  사용자 운영체제 시스템 ID
SYS_CONTEXT('USERENV', 'HOST'), --  사용자 PC이름
SYS_CONTEXT('USERENV', 'MODULE')--  DB 이름
FROM DUAL;

결과예시)

SYS_CONTEXT(‘USERENV’,’SESSIONID’)SYS_CONTEXT(‘USERENV’,’OS_USER’)SYS_CONTEXT(‘USERENV’,’HOST’)SYS_CONTEXT(‘USERENV’,’MODULE’)
107637700devscbpcdevscbSQL Developer

기타 USERENV 세부속성

앞선 예제에서, SYS_CONTEXT 의 두번째 속성값은 정말 다양한 값들을 사용할 수 있습니다.
예를 들어, SYS_CONTEXT(‘USERENV’, ‘AUTHENTICATED_IDENTITY’) 처럼
속성값을 바꾸면서 현재 세션의 여러 정보들을 확인할 수 있습니다.
어떤 속성값을 사용할 수 있는지는 아래 표와 같이 정리합니다.

USERENV 속성설명예시값
AUTHENTICATED_IDENTITY권한인증 하에 사용중인 ID, 예를들어, 현재 세션에서 로그인한 IDsys_ora
AUTHENTICATION_METHOD권한인증 방식PASSWORD / OS / SSL
CURRENT_EDITION_ID세션 edition ID100
CURRENT_EDITION_NAME세션 edition 이름ORA$BASE
CURRENT_SCHEMA현재 스키마에서 사용중인 스키마 명SH
CURRENT_SCHEMA_ID현재 스키마에서 사용중인 Default 스키마 ID80
CURRENT_USER현재 활성화된 권한을 가진 데이터베이스 사용자 이름,devscb
CURRENT_USERID현재 활성화된 권한을 가진 데이터베이스 사용자의 숫자 식별자80
DATABASE_ROLEData Guard 역할PRIMARY / PHYSICAL STANDBY / LOGICAL STANDBY / SNAPSHOT STANDBY
DB_DOMAIN초기화 파라미터에서 지정한 대로 데이터베이스의 네트워크 도메인us.devscb.com.
DB_NAME초기화 파라미터에서 지정한 대로 데이터베이스의 이름DEVSCBDB
DB_UNIQUE_NAME도메인에서의 데이터베이스의 고유 이름DEVSCBDB
ENTERPRISE_IDENTITY유저의 enterprise-wide identityNULL / SYSDBA / SYSOPER
FG_JOB_ID클라이언트 foreground 프로세스가 열려있을 경우의 job idNULL / 0
GLOBAL_CONTEXT_MEMORY시스템 전역 영역에서 전역적으로 액세스되는 컨텍스트에서 사용되는 수1
GLOBAL_UID오라클 인터넷 디렉토리에서 엔터프라이즈 사용자 보안 로그인에 대한 글로벌 사용자 식별자NULL
HOST클라이언트 호스트 컴퓨터의 이름devscbpc
IDENTIFICATION_TYPE데이터베이스에서 사용자 스키마가 생성 된 방식LOCAL / EXTERNAL / GLOBAL SHARED / GLOBAL PRIVATE
INSTANCE현재 인스턴스의 식별 번호1
INSTANCE_NAME데이터베이스 인스턴스의 이름devscbdb
IP_ADDRESS클라이언트의 IP 주소10.1.2.2
ISDBA사용자가 DBA 권한으로 인증 된 경우 TRUE이고 그렇지 않으면 FALSETRUE / FALSE
LANG세션 언어에 대한 짧은 명칭US
LANGUAGE언어, 지역 및 데이터베이스 문자 집합AMERICA_AMERICAN.WE8DEC
MODULEDBMS_APPLICATION_INFO 패키지 또는 OCI를 통해 설정 된 응용 프로그램 이름JDBC Thin Client  / SQL Developer
NETWORK_PROTOCOL통신에 사용되는 네트워크 프로토콜TCP
NLS_CALENDAR세션의 달력GREGORIAN
NLS_CURRENCY세션의 통화단위$
NLS_DATE_FORMAT시간 형식DD-MON-RR
NLS_DATE_LANGUAGE날짜 언어AMERICAN
NLS_SORT이진 또는 언어적 정렬 기준XSPANISH
NLS_TERRITORY세션의 지역KOREA
OS_USER데이터베이스 세션을 시작한 클라이언트 프로세스의 운영 체제 사용자 이름devscb
SERVER_HOST데이터베이스 인스턴스가 실행 중인 컴퓨터의 호스트 이름devscbdbservr
SERVICE_NAME세션이 연결된 서비스의 이름SYS$USERS
SESSION_USER로그인 시 사용자를 식별 한 데이터베이스 사용자 이름 또는 스키마 이름DEVSCBUSER
SESSIONID세션 식별자120456
SID세션 번호86

참고 : https://docs.oracle.com/cd/E11882_01/olap.112/e23381/row_functions079.htm#OLAXS472