说说sys_context函数
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 |
|
AUTHENTICATED_IDENTITY |
Returns the identity used in authentication. In the list that follows, the type of user is followed by the value returned:
|
|
AUTHENTICATION_DATA |
Data Note:You can change the return value of the |
|
AUTHENTICATION_METHOD |
Returns the method of authentication. In the list that follows, the type of user is followed by the method returned.
|
|
BG_JOB_ID |
Job ID of the current session if it was |
|
CLIENT_IDENTIFIER |
Returns an identifier that is set by the |
|
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 |
|
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# |
|
|
CURRENT_SQL |
Returns the first 4K bytes of the current SQL that triggered the fine-grained auditing event. |
|
CURRENT_SQLn |
CURRENT_SQLnattributes return |
|
CURRENT_SQL_LENGTH |
The length of the current SQL statement |
|
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 |
|
|
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 |
|
|
ENTRYID |
The available auditing entry identifier. |
|
ENTERPRISE_IDENTITY |
Returns the user's enterprise-wide identity:
The value of the attribute differs by proxy method:
|
|
FG_JOB_ID |
Job ID of the current session if it was |
|
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 |
|
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.
|
|
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 |
|
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 |
|
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 |
|
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 |
|
SELECTsys_context('USERENV', 'TERMINAL') FROM dual; |
例子:
SQL> select sys_context('userenv','ip_address') from dual;
SYS_CONTEXT('USERENV','IP_ADDR
-----------------------------------
169.254.94.86
说说sys_context函数的更多相关文章
- [转帖学习]Oracle的 SYS_CONTEXT 函数简介
Oracle的 SYS_CONTEXT 函数简介 https://blog.csdn.net/IndexMan/article/details/48606369 1.什么是SYS_CONTEXT? S ...
- SYS_CONTEXT 详细用法
SELECT SYS_CONTEXT ('USERENV', 'TERMINAL') terminal, SYS_CONTEXT ('USERENV', 'LANGUAGE') lang ...
- 由查找session IP 展开---函数、触发器、包
由查找session IP 展开---函数.触发器.包 一.userenv函数.sys_context函数 --查看当前client会话的session IP信息 SQL>select sys_ ...
- 【转】oracle数据库开发的一些经验积累
1.不安装Oracle客户连接Oracle 8的方法 请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...
- Oracle实战笔记(第三天)
导读 今天的主要内容有:java连接Oracle.事务.Oracle中的事务处理.Oracle函数. 一.Java连接Oracle的两种方式 第一种:桥连接(JDBC_ODBC)(不推荐) 1.准备工 ...
- 如何将dmp文件导入到Oracle
一.概述 在将dmp文件导入到Oracle中之前,需要先创建一个orcale用户.然后使用该用户名和密码,以imp的方式将数据导入到oracle中. 二.执行步骤 1.登陆oracle数据库 a.sq ...
- Oracle获取session的IP方法
方法1 创建触发器: create orreplace trigger login_on alfterlogon on database begin dbms_application_info ...
- Oracle—全局变量
Oracle全局变量 一.数据库程序包全局变量 在程序实现过程中,经常用遇到一些全局变量或常数.在程序开发过程中,往往会将该变量或常数存储于临时表或前台程序的全局变量中,由此带来运行效率降 ...
- oracle函数 SYS_CONTEXT(c1,c2)
[功能]返回系统c1对应的c2的值.可以使用在SQL/PLSQL中,但不可以用在并行查询或者RAC环境中 [参数] c1,'USERENV' c2,参数表,详见示例 [返回]字符串 [示例] sele ...
随机推荐
- 怎样又一次编译linux内核
linux作为自由软件.在广大爱好者的支持下,内核版本号不断更新. 新的内核修订了就得内核的bug,并添加了很多新的特性.假设用户须要使用这些新的特性或者依据自己的系统量身定做一个更高效或更稳定的内核 ...
- SQL Server数据库 bcp导出备份文件应用
/** * 授权 */ EXEC sp_configure 'show advanced options',1; go reconfigure; go exec sp_configure 'xp_ ...
- androidstudio集成ijkplayer教程
介绍 ijkplayer是一款非常火的开源视频播放器,android和IOS通用.关于怎么编译怎么导入android Studio中自己的项目,其中坑很多,本篇记录下自己的操作记录.ijkplay ...
- [CQOI 2007] 涂色
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1260 [算法] 区间DP [代码] #include<bits/stdc++. ...
- 使用fastcgi部署django应用
1.fastcgi和cgi的区别 1)CGI (Common Gateway Interface): 用来作为 Web Server 同 Python, PHP 等的通信手段.而在静态网页的时代, 只 ...
- Hdu-6242 2017CCPC-哈尔滨站 M.Geometry Problem 计算几何 随机
题面 题意:给你n个点,让你找到一个圆,输出圆心,和半径,使得有超过一半的点刚好在圆上.n<=1e5,题目保证了有解 题解:刚开始看着很不可做的样子,但是多想想,三点确定一个圆,三点啊! 现在有 ...
- AWS S3 对象存储服务
虽然亚马逊云非常牛逼,虽然亚马逊云财大气粗,虽然亚马逊用的人也非常多,可是这个文档我简直无法接受,特别是客服,令人发指的回复速度,瞬间让人无语,可是毕竟牛逼.忍了,躺一次坑而已 1.图片上传 1.1 ...
- vue2 阻止时间冒泡
click.stop.prevent <div class="content-right" @click.stop.prevent="pay" > ...
- 改造PAXOS算法消灭活锁
分布式一致性协议的目的是确定一个不可变变量分布式存储的取值:通过对国内外一致性算法的研究成果和PAXOS协议活锁的分析,发现引入一个角色作为竞争时的代理提交者就可以解决活锁问题,从而在本文引入“代理提 ...
- Language Integrated Query
Language Integrated Query (LINQ, pronounced "link") is a Microsoft .NET Framework componen ...