`

ORACLE上下文 context

阅读更多

 


今天做一个安全审计上下文对象,使用了 sys_context。

 

      sys_context是一个保持了和session有关的session级别的上下文。 这个上下文是一个session里的都可以访问到的地方,所以如果我们通过dbms_session.set_context放入一些session级别的自己的信息,就可以使用这个sys_context的上下文了。

 

dbms_session.set_context过程定义:

  procedure set_context(namespace varchar2, attribute varchar2, value varchar2, username varchar2 default null, client_id varchar2 default null);
  --  Input arguments:
  --    namespace
  --      Name of the namespace to use for the application context
  --    attribute
  --      Name of the attribute to be set
  --    value
  --      Value to be set
  --    username
  --      username attribute for application context . default value is null.
  --    client_id
  --      client identifier that identifies a user session for which we need
  --      to set this context.
  --
  --

 

context上下文的使用方式是:

 

1.创建上下文环境:

 

CREATE OR REPLACE CONTEXT US_CONTEXT USING SET_SECURITY_USER
 

2.将信息放到session中是:

CREATE OR REPLACE PROCEDURE "SET_SECURITY_USER" (USER_ID VARCHAR2) IS
BEGIN
  DBMS_SESSION.set_context('US_CONTEXT','USER_ID',USER_ID);

END;

这么做是因为,context只能通过它的受信任的过程来设置(就是上面的using 子句 指定的过程)。

直接调用:DBMS_SESSION.set_context('USF_CONTEXT','USER_ID','ADMIN');

会报错:

ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_SESSION", line 78
ORA-06512: at line 1

 

现在就可以通过:

SET_SECURITY_USER('ADMIN')

 放入登陆用户ID

 

select sys_context('US_CONTEXT','USER_ID') from dual; 

 在session中取得用户ID。

 

 

 

 

 

分享到:
评论

相关推荐

    ORACLE中的sys_context函数

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

    Oracle9.2_SYS_CONTEXT函数的用法

    在Oracle数据库系统中,`SYS_CONTEXT`函数是一个非常实用的功能,它允许用户从不同的上下文中检索信息。在Oracle9.2版本中,这个函数提供了一种灵活的方式来访问与当前会话或系统环境相关的各种属性。下面,我们将...

    WebLogic创建根上下文

    2. **定义`context-root`**:在`weblogic.xml`文件中添加`<context-root>`元素,并设置其值为你希望的上下文根名称。 3. **部署应用程序**:将包含`weblogic.xml`文件的Web应用程序部署到WebLogic服务器上。 4. **...

    oracle 报表开发中用PCK直接生成xml数据文件

    使用`dbms_xmlgen.newContext(v_source)`创建一个XML生成的上下文对象。这个上下文对象将用于从游标数据生成XML。 4. **生成XML CLOB**: 调用`dbms_xmlgen.getXML(ctx)`从上下文对象中获取XML数据,将其存储到...

    在Oracle中使用登录触发器初始化用户会话

    Oracle 9i引入了After Logon触发器,这是一种在用户成功登录后自动执行的机制,用于初始化应用程序上下文,从而优化性能并提高安全性。本文将深入探讨这个功能及其优势。 首先,应用程序上下文是Oracle提供的一种...

    MyEclipse链接oracle连接池的创建

    这段代码首先通过`InitialContext`创建了一个JNDI上下文,然后使用`lookup`方法根据之前定义的JNDI名称查找数据源。最后,通过数据源的`getConnection`方法获取数据库连接。 总结来说,创建MyEclipse连接Oracle的...

    EF5+Oracle12c实现插入数据

    在C#代码中,先创建一个实体对象,设置其属性值,然后通过上下文类的`DbSet`对象的`Add`方法将其添加到上下文的更改跟踪中。例如: ```csharp using (var context = new YourDbContext()) { var user = new User ...

    Tomcat下对Oracle数据库连接池数据源的配置

    除了上述手动配置外,你还可以通过修改`context.xml`文件(位于Tomcat的`conf/Catalina/localhost`目录下,对应于你的应用上下文)来配置数据源。在`<Context>`标签内,添加`<Resource>`标签,定义数据源的相关属性...

    OracleEBS中的弹性域讲解与设置

    通过理解和运用Oracle EBS中的弹性域,特别是其上下文字段的功能,企业能够更加灵活地管理复杂的数据结构,从而更好地适应不断变化的业务需求。此外,自定义上下文列的引入进一步增强了弹性域的灵活性,使得根据用户...

    Oracle 内置程序包API

    1. DBMS_XMLPARSER.NEWCONTEXT:创建一个XML解析上下文对象。 2. DBMS_XMLPARSER.PARSE:解析XML字符串或文件,返回XML文档对象。 3. DBMS_XMLPARSER.VALIDATE:验证XML文档是否符合指定的XSD(XML Schema)。 4. ...

    oracle常用问题解答

    **解答**: `SYS_CONTEXT`函数允许访问Oracle环境中的上下文信息,例如会话变量、服务器参数等。它常用于获取当前会话的信息。 - **示例**: 获取当前用户的名称: ```sql SELECT SYS_CONTEXT('USERENV','CURRENT_...

    Oracle XML核心技术

    虽然题目要求主要集中在Oracle XML核心技术上,但为了提供完整的上下文,这里也将简要介绍ASP内嵌对象的基本概念及其使用。 ##### 1. ASP内嵌对象概述 ASP(Active Server Pages)是一种服务器端脚本环境,可以在服务器...

    Oracle IRM

    #### 上下文(Context)与权限(Rights) 上下文是描述文档使用环境的信息集合,包括文档的类型、位置、时间以及操作上下文等。权限则定义了用户对文档的操作权限,如读取、编辑、打印、复制等。IRM系统会根据预定义的...

    用于oracle的Entityframework实例

    使用Code First方法,可以在C#类中定义这些实体,然后通过DbContext派生类来配置数据上下文。例如,创建一个`MyDbContext`类,继承自`DbContext`,并在其中定义DbSet属性来表示数据库表。 ```csharp public class ...

    《Oracle_全文索引_详细介绍》_40页.pdf

    自从Oracle 7.3版本开始引入了这一特性,允许用户通过Oracle服务器提供的上下文(ConText)选项来执行基于文本的数据查询。随着版本的迭代,该功能在Oracle 8i中被重命名为InterMediaText,在Oracle 9i中则进一步...

    Oracle自定义聚合函数-分析函数

    1. ODCIAggregateInitialize 函数:用于初始化聚合函数环境,创建聚合函数的上下文环境。 2. ODCIAggregateIterate 函数:这是最主要的步骤,这个函数定义我们的聚合函数具体做什么操作,self 为当前聚合函数的指针...

    有关Oracle中虚拟专用数据库的探讨

    2. **上下文敏感策略(Context_Sensitive)**:在这种策略下,如果策略函数的结果取决于会话上下文(如用户权限、角色等),并且这些上下文属性在会话期间保持不变,那么Oracle将不会重复执行策略函数,从而提高性能...

    oracle精细访问控制(初级)

    在上述代码示例中,首先通过 `create or replace context` 创建了一个名为 `empenv` 的上下文(context)。上下文是存储在系统全局区 (SGA) 中的一组键值对,用于保存与会话相关的临时信息。在这个例子中,`empenv` ...

    oracle 高效生成指定复杂样式的xml文件

    例如,你可以使用`DBMS_XMLGEN.NEW_CONTEXT('SELECT * FROM table')`创建一个上下文,然后用`DBMS_XMLGEN.GET_XML`获取XML结果。 3. **PL/SQL过程**:编写自定义的PL/SQL过程是另一种生成XML的方式。这通常涉及使用...

Global site tag (gtag.js) - Google Analytics