Actions As SYS |
Note: USERENV is an Oracle provided namespace that describes the current session. |
Syntax |
SELECT sys_context('<namespace>', '<parameter>', <length>) FROM dual;
SYS_CONTEXT(namespace IN VARCHAR2, attribute IN VARCHAR) RETURN VARCHAR;
SYS_CONTEXT(namespace IN VARCHAR2, attribute IN VARCHAR, newoptional IN VARCHAR) RETURN VARCHAR; |
|
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 an ALTER 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. |
CURRENT_USER |
The name of the database user whose privileges are currently active. |
SELECT sys_context('USERENV', 'CURRENT_USER') FROM dual; |
CURRENT_USERID |
The identifier of the database user whose privileges are currently active |
SELECT sys_context('USERENV', 'CURRENT_USERID') FROM dual; |
DATABASE_ROLE (new 11.2) |
The database role is one of the following: PRIMARY, PHYSICAL STANDBY, LOGICAL STANDBY, SNAPSHOT STANDBY |
SELECT sys_context('USERENV', 'DATABASE_ROLE') FROM dual; |
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_EDITION_NAME |
The name of the current edition in the session |
SELECT sys_context('USERENV', 'SESSION_EDITION_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 INSERT, UPDATE, 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 AUTHID DEFINER 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 NUMBER) IS 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 VARCHAR2) IS BEGIN dbms_session.set_context('App_Ctx',p_name,p_value,USER,g_session_id); END set_ctx; --=============================================== PROCEDURE close_session(p_session_id NUMBER) 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; |
Another Demo |
CREATE TABLE all_objs AS SELECT object_name FROM dba_objects;
CREATE VIEW all_objs_view AS SELECT COUNT(*) obj_count FROM all_objs WHERE object_name = sys_context('UW_NAMESPACE', 'UW_PARAMETER');
CREATE OR REPLACE PROCEDURE set_param(valin IN VARCHAR2) AUTHID CURRENT_USER IS BEGIN dbms_session.set_context('UW_NAMESPACE', 'UW_PARAMETER', valin); END; /
CREATE CONTEXT uw_namespace USING set_param;
exec SET_PARAM(valin => 'DBMS_SQL');
SELECT * FROM all_objs_view;
exec set_param(valin => 'ZZZ');
SELECT * FROM all_objs_view; |
相关推荐
Oracle 中的 sys_context 函数 sys_context 函数是 Oracle 提供的一个获取环境上下文信息的预定义函数。该函数用来返回一个指定 namespace 下的 parameter 值。该函数可以在 SQL 和 PL/SQL 语言中使用。 sys_...
### Oracle9.2_SYS_CONTEXT函数详解 在Oracle数据库系统中,`SYS_CONTEXT`函数是一个非常实用的功能,它允许用户从不同的上下文中检索信息。在Oracle9.2版本中,这个函数提供了一种灵活的方式来访问与当前会话或...
"Oracle中的USERENV和SYS_CONTEXT范例" Oracle中的USERENV和SYS_CONTEXT是两个非常重要的函数,它们都可以用于获取当前会话的信息,例如当前用户、当前实例、当前语言等。 USERENV函数 USERENV函数用于返回当前...
Oracle的LOB(CLOB)大字段以及(SYS_LOB$$)清理.txt
接着,运行Oracle提供的默认密码策略脚本`utlpwdmg.sql`,该脚本通常位于`$ORACLE_HOME/rdbms/admin/`目录下,通过执行`@?/rdbms/admin/utlpwdmg.sql`来创建一个名为`UTL_PWD_MGMT`的包,它包含了验证密码复杂度的...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
行列转换,层级关系,oracle sys_connect_by_path的用法
Oracle的`sys_connect_by_path`函数是一个非常有用的工具,尤其在构建树状结构的数据时。在本文中,我们将深入理解这个函数以及如何将其应用于非树结构的数据以生成所需的结果。 `sys_connect_by_path`函数的基本...
在Oracle数据库环境中,合并多个`sys_refcursor`(也称为游标)的需求常常出现在复杂的业务逻辑中,尤其是在需要重复调用相同逻辑的存储过程时。本文将详细介绍如何通过序列化和XML处理来实现这一功能。 首先,让...
参数`audit_file_dest`指示了审计日志的存储位置,而`audit_sys_operations`和`audit_trail`则控制着哪些操作和信息被记录。 3. **设置Audit Trail** 要使审计信息生效,必须将`audit_trail`参数设置为`DB_...
作为一名Oracle DBA,面对一个新的环境,首要任务是全面掌握数据库的基本信息和运行状态,以便能够有效地管理和维护。以下是一些关键点的详细说明: 1. **确定Oracle数据库版本和平台**:通过执行`SELECT * FROM v$...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和灵活性深受开发者喜爱。在Oracle数据库中,PL/SQL(Procedural Language/Structured Query Language)是一种结构化查询语言的扩展,它允许开发人员...
本资料“Oracle_SQL_function”主要聚焦于Oracle中的常用函数及其使用方法,旨在帮助用户更好地理解和掌握在Oracle环境中进行SQL操作。 一、字符串函数 1. CONCAT():用于连接两个或更多字符串。例如,CONCAT('...
oracle如何建立,查询和停止正在运行的job
Oracle_VM_VirtualBox_Extension_Pack-5.0.2-102096扩展包
1、配置环境变量(以下C:\Oracle_instant_client_10_2为下载的解压路径) 系统变量:新建 变量名:NLS_LANG 变量:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 新建 变量名:TNS_ADMIN 变量值:C:\Oracle_instant_client_10_2 ...
CREATE OR REPLACE FUNCTION f_sys_getseqid(v_seqname IN VARCHAR2, v_provincecode IN VARCHAR2) RETURN VARCHAR2 IS ... BEGIN ... END; ``` 函数调用 函数可以在 SQL 语句中被调用,例如: ```sql SELECT ...
Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack,virtualbox虚拟机扩展包