Version 11.1
 
Actions As SYS
Note: USERENV is an Oracle provided namespace that describes the current session.
Syntax SELECT sys_context('<namespace>', '<parameter>', <length>);
FROM DUAL;
 
Attribute Return Value
ACTION Identifies the position in the module (application name) and is set through the DBMS_APPLICATION_INFO package or OCI.
SELECT sys_context('USERENV', 'ACTION') FROM DUAL;

exec dbms_application_info.set_action('INSERTING');

SELECT sys_context('USERENV', 'ACTION') FROM DUAL;

AUDITED_CURSORID Returns the cursor ID of the SQL that triggered the audit. This parameter is not valid in a fine-grained auditing environment. If you specify it in such an environment, Oracle Database always returns NULL.
AUTHENTICATED_IDENTITY Returns the identity used in authentication. In the list that follows, the type of user is followed by the value returned:
  • Kerberos-authenticated enterprise user: kerberos principal name
  • Kerberos-authenticated external user : kerberos principal name; same as the schema name
  • SSL-authenticated enterprise user: the DN in the user's PKI certificate
  • SSL-authenticated external user: the DN in the user's PKI certificate
  • Password-authenticated enterprise user: nickname; same as the login name
  • Password-authenticated database user: the database username; same as the schema name
  • OS-authenticated external user: the external operating system user name
  • Radius/DCE-authenticated external user: the schema name
  • Proxy with DN : Oracle Internet Directory DN of the client
  • Proxy with certificate: certificate DN of the client
  • Proxy with username: database user name if client is a local database user; nickname if client is an enterprise user
  • SYSDBA/SYSOPER using Password File: login name
  • SYSDBA/SYSOPER using OS authentication: operating system user name
AUTHENTICATION_DATA Data being used to authenticate the login user. For X.503 certificate authenticated sessions, this field returns the context of the certificate in HEX2 format.

Note: You can change the return value of the   AUTHENTICATION_DATA attribute using the length parameter of the syntax. Values of up to 4000 are accepted. This is the only attribute of USERENV for which Oracle implements such a change.

AUTHENTICATION_METHOD Returns the method of authentication. In the list that follows, the type of user is followed by the method returned.
  • Password-authenticated enterprise user, local database user, or SYSDBA/SYSOPER using Password File; proxy with username using password: PASSWORD
  • Kerberos-authenticated enterprise or external user: KERBEROS
  • SSL-authenticated enterprise or external user: SSL
  • Radius-authenticated external user: RADIUS
  • OS-authenticated external user or SYSDBA/SYSOPER: OS
  • DCE-authenticated external user: DCE
  • Proxy with certificate, DN, or username without using password: NONE
BG_JOB_ID Job ID of the current session if it was established by an Oracle background process. Null if the session was not established by a background process.
CLIENT_IDENTIFIER Returns an identifier that is set by the application through the DBMS_SESSION.SET_IDENTIFIER procedure, the OCI attribute OCI_ATTR_CLIENT_IDENTIFIER, or the Java class Oracle.jdbc.OracleConnection.setClientIdentifier. This attribute is used by various database components to identify lightweight application users who authenticate as the same user.
SELECT sys_context('USERENV', 'CLIENT_IDENTIFIER') FROM DUAL;

exec dbms_session.set_identifier(USER || ' ' || SYSTIMESTAMP);

SELECT sys_context('USERENV', 'CLIENT_IDENTIFIER') FROM DUAL;

CLIENT_INFO Returns user session information that can be stored by an application using the DBMS_APPLICATION_INFO package.
SELECT sys_context('USERENV', 'CLIENT_INFO') FROM DUAL;

exec dbms_application_info.set_client_info('TEST');

SELECT sys_context('USERENV', 'CLIENT_INFO') FROM DUAL;

CURRENT_BIND The bind variables for fine-grained auditing
CURRENT_EDITION_ID The numeric identifier of the current edition
SELECT sys_context('USERENV', 'CURRENT_EDITION_ID') FROM DUAL;
CURRENT_EDITION_NAME The name of the current edition
SELECT sys_context('USERENV', 'CURRENT_EDITION_NAME') FROM DUAL;
CURRENT_SCHEMA Name of the default schema being used in the current schema. This value can be changed during the session with anALTER SESSION SET CURRENT_SCHEMA statement.
SELECT sys_context('USERENV', 'CURRENT_SCHEMA') FROM DUAL;
CURRENT_SCHEMAID Identifier of the default schema being used in the current session.
SELECT sys_context('USERENV', 'CURRENT_SCHEMAID') FROM DUAL;

SELECT user#
FROM sys.user$
WHERE name = USER;

CURRENT_SQL Returns the first 4K bytes of the current SQL that triggered the fine-grained auditing event.
CURRENT_SQLn CURRENT_SQLn attributes return subsequent 4K-byte increments, where n can be an integer from 1 to 7, inclusive. CURRENT_SQL1 returns bytes 4K to 8K; CURRENT_SQL2 returns bytes 8K to 12K, and so forth. You can specify these attributes only inside the event handler for the fine-grained auditing feature.
CURRENT_SQL_LENGTH The length of the current SQL statement that triggers fine-grained audit or row-level security (RLS) policy functions or event handlers. Valid only inside the function or event handler.
DB_DOMAIN Domain of the database as specified in the DB_DOMAIN initialization parameter.
SELECT sys_context('USERENV', 'DB_DOMAIN') FROM DUAL;
DB_NAME Name of the database as specified in the DB_NAME initialization parameter.
SELECT sys_context('USERENV', 'DB_NAME') FROM DUAL;

SELECT name, value
FROM gv$parameter
WHERE name LIKE 'db%name';

DB_UNIQUE NAME Name of the database as specified in the DB_UNIQUE_NAME initialization parameter.
SELECT sys_context('USERENV', 'DB_UNIQUE_NAME') FROM DUAL;

SELECT name, value
FROM gv$parameter
WHERE name LIKE 'db%name';

ENTRYID The available auditing entry identifier. You cannot use this option in distributed SQL statements. To use this keyword in USERENV, the initialization parameter AUDIT_TRAIL must be set to true.
ENTERPRISE_IDENTITY Returns the user's enterprise-wide identity:
  • For enterprise users: the Oracle Internet Directory DN.
  • For external users: the external identity (Kerberos principal name, Radius and DCE schema names, OS user name, Certificate DN).
  • For local users and SYSDBA/SYSOPER logins: NULL.

The value of the attribute differs by proxy method:

  • For a proxy with DN: the Oracle Internet Directory DN of the client
  • For a proxy with certificate: the certificate DN of the client for external users; the Oracle Internet Directory DN for global users
  • For a proxy with username: the Oracle Internet Directory DN if the client is an enterprise users; NULL if the client is a local database user.
FG_JOB_ID Job ID of the current session if it was established by a client foreground process. Null if the session was not established by a foreground process.
GLOBAL_CONTEXT_MEMORY The number used in the System Global Area by the globally accessed context.
SELECT sys_context('USERENV', 'GLOBAL_CONTEXT_MEMORY') FROM DUAL;
GLOBAL_UID Returns the global user ID from Oracle Internet Directory for Enterprise User Security (EUS) logins; returns null for all other logins.
HOST Name of the host machine from which the client has connected.
SELECT sys_context('USERENV', 'HOST') FROM DUAL;
IDENTIFICATION_TYPE Returns the way the user's schema was created in the database. Specifically, it reflects the IDENTIFIED clause in the CREATE/ALTER USER syntax. In the list that follows, the syntax used during schema creation is followed by the identification type returned:
  • IDENTIFIED BY password: LOCAL
  • IDENTIFIED EXTERNALLY: EXTERNAL
  • IDENTIFIED GLOBALLY: GLOBAL SHARED
  • IDENTIFIED GLOBALLY AS DN: GLOBAL PRIVATE
SELECT sys_context('USERENV', 'IDENTIFICATION_TYPE') FROM DUAL;
INSTANCE The instance identification number of the current instance.
SELECT sys_context('USERENV', 'INSTANCE') FROM DUAL;
INSTANCE_NAME The name of the instance.
SELECT sys_context('USERENV', 'INSTANCE_NAME') FROM DUAL;
IP_ADDRESS IP address of the machine from which the client is connected.
ISDBA TRUE if the session is SYS
SELECT sys_context('USERENV', 'ISDBA') FROM DUAL;
LANG The ISO abbreviation for the language name, a shorter form than the existing 'LANGUAGE' parameter.
SELECT sys_context('USERENV', 'LANG') FROM DUAL;
LANGUAGE The language and territory currently used by your session, along with the database character set, in the form:

language_territory.characterset.

SELECT sys_context('USERENV', 'LANGUAGE') FROM DUAL;
MODULE The application name (module) set through the DBMS_APPLICATION_INFO package or OCI.
SELECT sys_context('USERENV', 'MODULE') FROM DUAL;
NETWORK_PROTOCOL Network protocol being used for communication, as specified in the 'PROTOCOL=protocol' portion of the connect string.
NLS_CALENDAR The current calendar of the current session.
SELECT sys_context('USERENV', 'NLS_CALENDAR') FROM DUAL;
NLS_CURRENCY The currency of the current session.
SELECT sys_context('USERENV', 'NLS_CURRENCY') FROM DUAL;
NLS_DATE_FORMAT The date format for the session.
SELECT sys_context('USERENV', 'NLS_DATE_FORMAT') FROM DUAL;
NLS_DATE_LANGUAGE The language used for expressing dates.
SELECT sys_context('USERENV', 'NLS_DATE_LANGUAGE') FROM DUAL;
NLS_SORT BINARY or the linguistic sort basis.
SELECT sys_context('USERENV', 'NLS_SORT') FROM DUAL;
NLS_TERRITORY The territory of the current session.
SELECT sys_context('USERENV', 'NLS_TERRITORY') FROM DUAL;
OS_USER Operating system username of the client process that initiated the database session.
SELECT sys_context('USERENV', 'OS_USER') FROM DUAL;
POLICY_INVOKER The invoker of row-level security (RLS) policy functions.
PROXY_ENTERPRISE_IDENTITY Returns the Oracle Internet Directory DN when the proxy user is an enterprise user.
PROXY_GLOBAL_UID Returns the global user ID from Oracle Internet Directory for Enterprise User Security (EUS) proxy users; returns NULL for all other proxy users.
PROXY_USER Name of the database user who opened the current session on behalf of SESSION_USER.
PROXY_USERID Identifier of the database user who opened the current session on behalf of SESSION_USER.
SERVER_HOST The host name of the machine on which the instance is running.
SELECT sys_context('USERENV', 'SERVER_HOST') FROM DUAL;
SERVICE_NAME The name of the service to which a given session is connected.
SELECT sys_context('USERENV', 'SERVICE_NAME') FROM DUAL;
SESSION_USER Database user name by which the current user is authenticated. This value remains the same throughout the duration of the session.
SELECT sys_context('USERENV', 'SESSION_USER') FROM DUAL;
SESSION_USERID Identifier of the database user name by which the current user is authenticated.
SELECT sys_context('USERENV', 'SESSION_USERID') FROM DUAL;
SESSIONID The auditing session identifier. You cannot use this option in distributed SQL statements. This is the equivalent to the AUDSID column in gv$session.
SELECT sys_context('USERENV', 'SESSIONID') FROM DUAL;
SID The session number (different from the session ID).
SELECT sys_context('USERENV', 'SID') FROM DUAL;
STATEMENTID The auditing statement identifier. STATEMENTID represents the number of SQL statements audited in a given session.
TERMINAL The operating system identifier for the client of the current session. In distributed SQL statements, this option returns the identifier for your local session. In a distributed environment, this is supported only for remote SELECT statements, not for remote INSERTUPDATE, or DELETE operations. (The return length of this parameter may vary by operating system.)
SELECT sys_context('USERENV', 'TERMINAL') FROM DUAL;
 
Context Demo
User Created Contexts CREATE OR REPLACE CONTEXT App_Ctx using My_pkg
ACCESSED GLOBALLY;

CREATE OR REPLACE PACKAGE my_pkg IS

PROCEDURE set_session_id(p_session_id NUMBER);
PROCEDURE set_ctx(p_name VARCHAR2, p_value VARCHAR2);
PROCEDURE close_session(p_session_id NUMBER);

END;
/

CREATE OR REPLACE PACKAGE BODY my_pkg IS

g_session_id NUMBER;

PROCEDURE set_session_id(p_session_id NUMBERIS
BEGIN
  g_session_id := p_session_id;
  dbms_session.set_identifier(p_session_id);
end set_session_id;
--===============================================
PROCEDURE set_ctx(p_name VARCHAR2, p_value VARCHAR2IS
BEGIN
  dbms_session.set_context('App_Ctx',p_name,p_value,USER,g_session_id);
END set_ctx;
--===============================================
PROCEDURE close_session(p_session_id ) IS
BEGIN
  dbms_session.set_identifier(p_session_id);
  dbms_session.clear_identifier;
END close_session;
--===============================================
END;
/

col var1 format a10
col var2 format a10

exec my_pkg.set_session_id(1234);
exec my_pkg.set_ctx('Var1', 'Val1');
exec my_pkg.set_ctx('Var2', 'Val2');

SELECT sys_context('app_ctx', 'var1') var1,
sys_context('app_ctx', 'var2') var2
FROM DUAL;

-- Now we'll log out/log in
-- At first, the context is empty-but we rejoin the session & there it is

disconnect
connect uwclass/uwclass

SELECT sys_context('app_ctx', 'var1') var1,
sys_context('app_ctx', 'var2') var2
FROM DUAL;

exec my_pkg.set_session_id(1234);

SELECT sys_context('app_ctx', 'var1') var1,
sys_context('app_ctx', 'var2') var2
FROM DUAL;

-- Now we'll show that this context is tied to our user (we specified
-- USER above, if we used null anyone can join this session).

grant execute on my_pkg to scott;

conn scott/tiger

exec uwclass.my_pkg.set_session_id(1234);

SELECT sys_context('app_ctx', 'var1') var1,
sys_context('app_ctx', 'var2') var2
FROM DUAL;

-- Return to the set context again and clear it

conn uwclass/uwclass

exec my_pkg.set_session_id(1234);

SELECT sys_context('app_ctx', 'var1') var1,
sys_context('app_ctx', 'var2') var2
FROM DUAL;

exec my_pkg.close_session(1234);

SELECT sys_context('app_ctx', 'var1') var1,
sys_context('app_ctx', 'var2') var2
FROM DUAL;

 
Related Topics
Context
DDL Triggers
DBMS_SESSION
Row Level Security
System Triggers
USERENV

Oracle SYS_CONTEXT Function的更多相关文章

  1. oracle的function和procedure返回值给shell

    本文演示两个关于如何在shell中调用oracle的function和procedure,并将返回值返回给shell. 1.首在package中创建function和procedure,脚本如下: G ...

  2. Oracle Table Function

    Oracle Table Function在Oracle9i时引入.完美的兼容了view和存储过程的长处: 应用举例: 1.Table()函数: set feedback off create or ...

  3. Oracle 函数function之返回结果集

    工作中常需要经过一段复杂逻辑处理后,得出的一个结果集.并能够将这个结果集作为一个表看待,去进行关联查询 我一般采用建立函数function的方式来处理. --创建包,声明function和typeCR ...

  4. Oracle SYS_CONTEXT用法

    1. USERENV(OPTION) 返回当前的会话信息. OPTION='ISDBA'若当前是DBA角色,则为TRUE,否则FALSE. OPTION='LANGUAGE'返回数据库的字符集. OP ...

  5. oracle之FUNCTION拙见

    一.介绍 函数(Function)为一命名的存储程序,可带参数(有无均可),有返回值 函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值. 函数说明要指定函数名.返回值的类型,以及参数 ...

  6. Oracle函数function

    --function /* 函数是有返回值.-只能有一个返回值. 语法 Create or replace func1(参数) Return varchar2 As Pl/sql块 Return 'J ...

  7. Oracle存储过程function语法及案例

    create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN numb ...

  8. Oracle的function

    写在这里,以便于以后忘记格式后可以查询. CREATE OR REPLACE FUNCTION TEMP_FUNC_WYL(PI_AAA100 VARCHAR2, PI_AAA102 VARCHAR2 ...

  9. Oracle 函数 Function

    定义 函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分.     函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用.     函数必须有一个返回值 ...

随机推荐

  1. android开发者博客二月-Marshmallow and User Data

    又是一篇翻译,这篇快了很多,不过也花了快一个小时,可能熟悉一点.关于6.0权限的,让你做用户认为正确的事情. Marshmallow and UserData 2016,2,1 棉花糖和用户数据 由J ...

  2. cookie和session可能需要知道的知识

    做Android程序员,了解服务器的知识是相当重要的,比如cookie和session. 首先介绍一点背景知识,我们知道HTTP的连接是无状态的,HTTPS只是增加了安全,有了SSL证书来验证,作为服 ...

  3. MathType需要安装一个较新版本的MT Extra(True type)字体[转]

    MathType 6.0中MT Extra(TrueType)字体问题在打开MathType6.0时,有时会提示MathType需要安装一个较新版本的MT Extra(TrueType)字体,这是因为 ...

  4. SQL Server系统表sysobjects介绍与使用(转)

    SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可 ...

  5. spring boot 配置文件提示自定义配置属性

    1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. java输入输出流总结 转载

    一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是 ...

  7. mini2440 MJPG_STREAMER 产生问题

    usb摄像头芯片是中芯微的zc0301pl, http://www.vimicro.com.cn/product/pdf/ZC301PL-1107-V10-EN.pdf [root@FriendlyA ...

  8. javascript 节点的增,删,改,查

    1.创建节点  A.创建元素节点    document.createElement("元素标签名");   B.创建属性节点    document.createAttribut ...

  9. nodejs中间层现实

    初次接触nodejs,是一种非常神奇的东西,未来必火起来.个人觉得最大优势npm命令. 闲话少说,直入主题.这是一个博客项目,php最为服务端,提供数据给node:nodejs+express作为中间 ...

  10. Android自定义图片加载框架

    大神原网址: http://blog.csdn.net/lmj623565791/article/details/41874561  思路: 1. 压缩图片 压缩本地图片: 获得imageview想要 ...