Sys_context

[复制链接]
查看11 | 回复6 | 2008-4-3 16:46:15 | 显示全部楼层 |阅读模式
SYS_CONTEXT返回和当前名字空间相关的参数的值,可以使用在SQL/PLSQL中,但不可以用在并行查询或者RAC环境中
语法:
SYS_CONTEXT('NAMESPACE','PARAMETER')
详细的可以参见Oracle参考手册
一些用法:
SQL> show user
USER 为"SCOTT"
SQL> select sys_context('USERENV','HOST') FROM DUAL;
SYS_CONTEXT('USERENV','HOST')
--------------------------------------------------------------------------------
WORKGROUP\LINUX
SQL> SELECT SYS_CONTEXT('USERENV','SESSIONID') FROM DUAL;
SYS_CONTEXT('USERENV','SESSIONID')
--------------------------------------------------------------------------------
444
SQL> SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL;
SYS_CONTEXT('USERENV','SESSION_USER')
--------------------------------------------------------------------------------
SCOTT
SQL> SELECT SYS_CONTEXT('USERENV','DB_NAME') FROM DUAL;
SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
demo
SQL> SELECT SYS_CONTEXT('USERENV','INSTANCE') FROM DUAL;
SYS_CONTEXT('USERENV','INSTANCE')
--------------------------------------------------------------------------------
1
SQL> SELECT SYS_CONTEXT('USERENV','LANGUAGE') FROM DUAL;
SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

SQL> SELECT SYS_CONTEXT('USERENV','OS_USER') FROM DUAL;
SYS_CONTEXT('USERENV','OS_USER')
--------------------------------------------------------------------------------
LINUX\Administrator
SQL>

的确可以得到不少有用的信息


回复

使用道具 举报

千问 | 2008-4-3 16:46:15 | 显示全部楼层
還有沒有更多的呀﹗
回复

使用道具 举报

千问 | 2008-4-3 16:46:15 | 显示全部楼层
TKS!
我在Oracle参考手册并未找到呀?
回复

使用道具 举报

千问 | 2008-4-3 16:46:15 | 显示全部楼层
参见SQL参考手册
昨天看手册,随手做了几个测试
回复

使用道具 举报

千问 | 2008-4-3 16:46:15 | 显示全部楼层
并不仅仅是为了查这么几个东西的
可以解决 权限、动态sql的名字空间等问题
详细参阅expert oneonone


回复

使用道具 举报

千问 | 2008-4-3 16:46:15 | 显示全部楼层
发现很多Oracle的文档,关于如何用sys_context来
做 fine-grained security policy, 也就是基于不同用户
实现不同的数据查询。
我不理解为什么这种security policy要在 database level
做而不是在 appliation level来做。就我理解,一般的
application应该是用一个或几个database user来access
oracle database, 而不是每个application user 都有
一个对应的database user来access database.
如果我的理解是对的,一个application 只通过一个或几个
database users来access数据库,那一般以
database users来决定的security policy是不是有点太粗了点呢?
为什么不在application level根据不同的application user
来写不同的query来access database呢?
回复

使用道具 举报

千问 | 2008-4-3 16:46:15 | 显示全部楼层
在数据库级做可以只保存一个副本,使用调用者的权限
而如果是针对应用级的user,得保留多个副本,只能使用定义者的权限
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行