【原創】SYS_CONTEXT函式的用法

木頭一個發表於2008-05-07

實驗環境:WinXP SP2

資料庫版本:10.2.0.1

SYS_CONTEXT函式的用法如下:SYS_CONTEXT('namespace', 'parameter' [, length ])

Oracle已經有內建的名稱空間(namespace)USERENV可以用來返回當前會話的資訊,USEREN名稱空間有以下引數:

select
SYS_CONTEXT('USERENV','ACTION') ACTION,
SYS_CONTEXT('USERENV','AUDITED_CURSORID') AUDITED_CURSORID,
SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') AUTHENTICATED_IDENTITY,
SYS_CONTEXT('USERENV','AUTHENTICATION_DATA') AUTHENTICATION_DATA,
SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') AUTHENTICATION_METHOD,
SYS_CONTEXT('USERENV','BG_JOB_ID') BG_JOB_ID,
SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') CLIENT_IDENTIFIER,
SYS_CONTEXT('USERENV','CLIENT_INFO') CLIENT_INFO,
SYS_CONTEXT('USERENV','CURRENT_BIND') CURRENT_BIND,
SYS_CONTEXT('USERENV','CURRENT_SCHEMA') CURRENT_SCHEMA,
SYS_CONTEXT('USERENV','CURRENT_SCHEMAID') CURRENT_SCHEMAID,
SYS_CONTEXT('USERENV','CURRENT_SQL') CURRENT_SQL,
SYS_CONTEXT('USERENV','CURRENT_SQL_LENGTH') CURRENT_SQL_LENGTH,
SYS_CONTEXT('USERENV','DB_DOMAIN') DB_DOMAIN,
SYS_CONTEXT('USERENV','DB_NAME') DB_NAME,
SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') DB_UNIQUE_NAME,

SYS_CONTEXT('USERENV','ENTRYID') ENTRYID,
SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY') ENTERPRISE_IDENTITY,
SYS_CONTEXT('USERENV','FG_JOB_ID') FG_JOB_ID,
SYS_CONTEXT('USERENV','GLOBAL_CONTEXT_MEMORY') GLOBAL_CONTEXT_MEMORY,
SYS_CONTEXT('USERENV','GLOBAL_UID') GLOBAL_UID,
SYS_CONTEXT('USERENV','HOST') HOST,
SYS_CONTEXT('USERENV','IDENTIFICATION_TYPE') IDENTIFICATION_TYPE,
SYS_CONTEXT('USERENV','INSTANCE') INSTANCE,
SYS_CONTEXT('USERENV','INSTANCE_NAME') INSTANCE_NAME,

SYS_CONTEXT('USERENV','IP_ADDRESS') IP_ADDRESS,
SYS_CONTEXT('USERENV','ISDBA') ISDBA,
SYS_CONTEXT('USERENV','LANG') LANG,
SYS_CONTEXT('USERENV','LANGUAGE') LANGUAGE,

SYS_CONTEXT('USERENV','MODULE') MODULE,
SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL,
SYS_CONTEXT('USERENV','NLS_CALENDAR') NLS_CALENDAR,
SYS_CONTEXT('USERENV','NLS_CURRENCY') NLS_CURRENCY,
SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') NLS_DATE_FORMAT,
SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') NLS_DATE_LANGUAGE,
SYS_CONTEXT('USERENV','NLS_SORT') NLS_SORT,
SYS_CONTEXT('USERENV','NLS_TERRITORY') NLS_TERRITORY,

SYS_CONTEXT('USERENV','OS_USER') OS_USER,
SYS_CONTEXT('USERENV','POLICY_INVOKER') POLICY_INVOKER,
SYS_CONTEXT('USERENV','PROXY_ENTERPRISE_IDENTITY') PROXY_ENTERPRISE_IDENTITY,
SYS_CONTEXT('USERENV','PROXY_USER') PROXY_USER,
SYS_CONTEXT('USERENV','PROXY_USERID') PROXY_USERID,
SYS_CONTEXT('USERENV','SERVER_HOST') SERVER_HOST,
SYS_CONTEXT('USERENV','SERVICE_NAME') SERVICE_NAME,
SYS_CONTEXT('USERENV','SESSION_USER') SESSION_USER,
SYS_CONTEXT('USERENV','SESSION_USERID') SESSION_USERID,
SYS_CONTEXT('USERENV','SESSIONID') SESSIONID,
SYS_CONTEXT('USERENV','SID') SID,
SYS_CONTEXT('USERENV','STATEMENTID') STATEMENTID,
SYS_CONTEXT('USERENV','TERMINAL') TERMINAL
from dual;

大家執行一下就能大概知道每個引數的意思了。其中有些引數在其他檢視中也可以查詢出來的,如:nls_session_parameters、v$serssion、v$parameter、v$instance(上面綠色的部分),但大部分引數只能通過這種方式查詢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/498744/viewspace-263082/,如需轉載,請註明出處,否則將追究法律責任。

相關文章