说说sys_context函数

select SYS_CONTEXT(‘USERENV‘, ‘TERMINAL‘) terminal,
       SYS_CONTEXT(‘USERENV‘, ‘LANGUAGE‘) language,
       SYS_CONTEXT(‘USERENV‘, ‘SESSIONID‘) sessionid,
       SYS_CONTEXT(‘USERENV‘, ‘INSTANCE‘) instance,
       SYS_CONTEXT(‘USERENV‘, ‘ENTRYID‘) entryid,
       SYS_CONTEXT(‘USERENV‘, ‘ISDBA‘) isdba,
       SYS_CONTEXT(‘USERENV‘, ‘NLS_TERRITORY‘) nls_territory,
       SYS_CONTEXT(‘USERENV‘, ‘NLS_CURRENCY‘) nls_currency,
       SYS_CONTEXT(‘USERENV‘, ‘NLS_CALENDAR‘) nls_calendar,
       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‘, ‘CURRENT_USER‘) current_user,
       SYS_CONTEXT(‘USERENV‘, ‘CURRENT_USERID‘) current_userid,
       SYS_CONTEXT(‘USERENV‘, ‘SESSION_USER‘) session_user,
       SYS_CONTEXT(‘USERENV‘, ‘SESSION_USERID‘) session_userid,
       SYS_CONTEXT(‘USERENV‘, ‘PROXY_USER‘) proxy_user,
       SYS_CONTEXT(‘USERENV‘, ‘PROXY_USERID‘) proxy_userid,
       SYS_CONTEXT(‘USERENV‘, ‘DB_DOMAIN‘) db_domain,
       SYS_CONTEXT(‘USERENV‘, ‘DB_NAME‘) db_name,
       SYS_CONTEXT(‘USERENV‘, ‘HOST‘) host,
       SYS_CONTEXT(‘USERENV‘, ‘OS_USER‘) os_user,
       SYS_CONTEXT(‘USERENV‘, ‘EXTERNAL_NAME‘) external_name,
       SYS_CONTEXT(‘USERENV‘, ‘IP_ADDRESS‘) ip_address,
       SYS_CONTEXT(‘USERENV‘, ‘NETWORK_PROTOCOL‘) network_protocol,
       SYS_CONTEXT(‘USERENV‘, ‘BG_JOB_ID‘) bg_job_id,
       SYS_CONTEXT(‘USERENV‘, ‘FG_JOB_ID‘) fg_job_id,
       SYS_CONTEXT(‘USERENV‘, ‘AUTHENTICATION_TYPE‘) authentication_type,
       SYS_CONTEXT(‘USERENV‘, ‘AUTHENTICATION_DATA‘) authentication_data
  from dual

sys_context函数是Oracle提供的一个获取环境上下文信息的预定义函数。该函数用来返回一个指定namespace下的parameter值。该函数可以在SQL和PL/SQL语言中使用。

sys_context实际上就是一个Oracle
存储和传递参数的容器访问函数。我们登入Oracle服务器,是带有会话信息session_info和其他一些属性信息。其中,有一些是Oracle预
定义的,登录系统的时候自动填入到指定的变量中。还有一些是我们自己定义到其中,用于传递值使用的。

下面是sys_context函数的使用格式:

sys_context(‘namespace’,’parameter’{,length});

其中,namespace是存储信息的一个组
group单位,namespace是按照类别进行分类的。一个namespace下可以有多个参数值,通过不同的parameter进行区分。
namespace是预先定义好的SQL标识符,而parameter是可以任意大小写非敏感的字符串,不超过30位长度。

函数返回值为varchar2类型,长度默认为256位。如果需要限制这个默认值,可以数据length参数作为新的返回长度值。

设置namespace指定parameter值,可以使用dbms_session.set_context方法进行。

//自定义一个namespace,并且规定的设置的方法句柄;…………………….step 1

SQL> create context Test using set_test_context;

Context created

//定义方法…………………….step 2

create or replace procedure set_test_context

(

vc_value in varchar2

)

is

begin

dbms_session.set_context(‘Test‘,‘a1‘,vc_value);

end set_test_context;

//设置上值…………………….step 3

SQL> exec set_test_context(‘m‘);

PL/SQL procedure successfully completed

//获取这个值

SQL> select sys_context(‘Test‘,‘a1‘) from dual;

SYS_CONTEXT(‘TEST‘,‘A1‘)

------------------------------------

m

step1-3很重要,因为Test namespace为自定义的namespace,所以需要这样的设置,以确定权限所属。

sys_context函数最常用的就是userenv命名空间下的系列参数。下面是参数列表,摘自

http://hi.baidu.com/edeed/blog/item/28cba0ecaa6c8e3e269791bb.html


Attribute

Return Value


ACTION


Identifies the position in the module (application name) and is set through the DBMS_APPLICATION_INFO package or OCI.


SELECTsys_context(‘USERENV‘, ‘ACTION‘) FROM dual;

exec dbms_application_info.set_action(‘INSERTING‘);

SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘CLIENT_IDENTIFIER‘) FROM dual;

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

SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘CLIENT_INFO‘) FROM dual;

exec dbms_application_info.set_client_info(‘TEST‘);

SELECTsys_context(‘USERENV‘, ‘CLIENT_INFO‘) FROM dual;


CURRENT_BIND


The bind variables for fine-grained auditing


CURRENT_EDITION_ID


The name of the current edition


SELECTsys_context(‘USERENV‘, ‘CURRENT_EDITION_ID‘) FROM dual;


CURRENT_EDITION_NAME


The name of the current edition


SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘CURRENT_SCHEMA‘) FROM dual;


CURRENT_SCHEMAID


Identifier of the default schema being used in the current session.


SELECTsys_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_SQLnattributes 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.


SELECTsys_context(‘USERENV‘, ‘DB_DOMAIN‘) FROM dual;


DB_NAME


Name of the database as specified in the DB_NAME initialization parameter.


SELECTsys_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.


SELECTsys_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.


SELECTsys_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.


SELECTsys_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

SELECTsys_context(‘USERENV‘, ‘IDENTIFICATION_TYPE‘) FROM dual;


INSTANCE


The instance identification number of the current instance.


SELECTsys_context(‘USERENV‘, ‘INSTANCE‘) FROM dual;


INSTANCE_NAME


The name of the instance.


SELECTsys_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


SELECTsys_context(‘USERENV‘, ‘ISDBA‘) FROM dual;


LANG


The ISO abbreviation for the language name, a shorter form. than the existing ‘LANGUAGE‘ parameter.


SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘LANGUAGE‘) FROM dual;


MODULE


The application name (module) set through the DBMS_APPLICATION_INFO package or OCI.


SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘NLS_CALENDAR‘) FROM dual;


NLS_CURRENCY


The currency of the current session.


SELECTsys_context(‘USERENV‘, ‘NLS_CURRENCY‘) FROM dual;


NLS_DATE_FORMAT


The date format for the session.


SELECTsys_context(‘USERENV‘, ‘NLS_DATE_FORMAT‘) FROM dual;


NLS_DATE_LANGUAGE


The language used for expressing dates.


SELECTsys_context(‘USERENV‘, ‘NLS_DATE_LANGUAGE‘) FROM dual;


NLS_SORT


BINARY or the linguistic sort basis.


SELECTsys_context(‘USERENV‘, ‘NLS_SORT‘) FROM dual;


NLS_TERRITORY


The territory of the current session.


SELECTsys_context(‘USERENV‘, ‘NLS_TERRITORY‘) FROM dual;


OS_USER


Operating system username of the client process that initiated the database session.


SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘SERVER_HOST‘) FROM dual;


SERVICE_NAME


The name of the service to which a given session is connected.


SELECTsys_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.


SELECTsys_context(‘USERENV‘, ‘SESSION_USER‘) FROM dual;


SESSION_USERID


Identifier of the database user name by which the current user is authenticated.


SELECTsys_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
ingv$session.


SELECTsys_context(‘USERENV‘, ‘SESSIONID‘) FROM dual;


SID


The session number (different from the session ID).


SELECTsys_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.)


SELECTsys_context(‘USERENV‘, ‘TERMINAL‘) FROM dual;

例子:

SQL> select sys_context(‘userenv‘,‘ip_address‘) from dual;

SYS_CONTEXT(‘USERENV‘,‘IP_ADDR

-----------------------------------

169.254.94.86

时间: 2025-01-10 09:57:48

说说sys_context函数的相关文章

oracle sys_context()函数

第一个参数为'USERENV',是固定的,第二个参数也是固定的,但是是多选固定,可选的值如下所示: select sys_context('USERENV','AUTHENTICATION_TYPE') from dual;--用户的认证类型 select sys_context('USERENV','AUTHENTICATION_DATA') from dual;--未知 select sys_context('USERENV','BG_JOB_ID') from dual;--当前指定id的

由查找session IP 展开---函数、触发器、包

由查找session IP 展开---函数.触发器.包 一.userenv函数.sys_context函数 --查看当前客户端会话的session IP信息 SQL>select sys_context('userenv','ip_address') from dual; SYS_CONTEXT('USERENV','IP_ADDRESS') -----------------------------------------------------------------------------

SYS_CONTEXT 详细用法

SELECT SYS_CONTEXT ('USERENV', 'TERMINAL') terminal,        SYS_CONTEXT ('USERENV', 'LANGUAGE') language,        SYS_CONTEXT ('USERENV', 'SESSIONID') sessionid,        SYS_CONTEXT ('USERENV', 'INSTANCE') instance,        SYS_CONTEXT ('USERENV', 'ENTR

【ORACLE】ORACLE常用功能函数

ORACLE常用函数功能演示 文档撰写:孟祥新 写在前面: ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能.由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高. 在数据库编程中能广泛使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率."站在高人的肩膀上,将使你变得更高". 演示之前的环境设置: 为了在SQL*

[精]Oracle VPD详解(虚拟专用数据库)

所谓虚拟专用数据库(VPD)指的是,通过在数据库里进行配置,从而让不同的用户只能查看某 个表里的部分数据.VPD分为以下两个级别. 行级别:在该级别下,可以控制某些用户只能查看到某些数据行.比如,对于销售数据表sales 来说,每个销售人员只能检索出他自己的销售数据,不能查询其他销售人员的销售数据. 列级别:在该级别下,可以控制某些用户不能检索某个表的某个列的值.比如用户HR 下的 employees 表中,含有工资(salary)列,由于该列比较敏感,因此不让其他用户查询该列的值. 其他用户检

oracle函数sys_context

select sys_context('USERENV','terminal') 当前会话终端标识符,        sys_context('USERENV','language') 语言,        sys_context('USERENV','db_name') 当前的数据库实例名称,        sys_context('USERENV','session_user') 当前会话的数据库,        sys_context('USERENV','current_schema')

Oracle常用函数

前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使用: 往emp表中插入一条记录: SQL> insert into emp values(1234,'LIZELU','BOSS',1234,'1980-12-06',10000.0,0,30); insert into emp values(1234,'LIZELU','BOSS',1234,'1

oracle函数详解

Oracle 数据库中 SQL 分析的主要优势 Oracle 数据库中分析功能和特性提供以下主要优势: 1. 提高开发人员产能 — 开发人员可以通过更清晰.更简洁的 SQL 代码执行复杂分析.现在可以使用一条 SQL 语句表示复杂任务,编写和维护速度更快.效率更高. 2. 提高查询速度 — 数据库中分析支持的处理优化可大幅提高查询性能.以前需要自联接或复杂过程处理的操作现在可以用原生 SQL 执行. 3. 改善可管理性 — 应用程序共享一个公共的关系环境,而非数据结构不兼容的计算引擎组合,因此可

十、oracle 常用函数

一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char):返回字符串的长度.substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个replace(char1, search_string, replace_string)instr(C1,C2,I,J) -->判断某字符或字符串是否存在,存在返回出现的位置的索引