我了解到oracle中的上下文区域是一个私有内存空间,用于存储处理SQL语句所需的信息。但是,我对存储在其中的信息一无所知。
答案 0 :(得分:1)
Oracle有一个名为'userenv'
的默认上下文,该上下文存储了大量有关会话的信息。我们可以使用sys_context()
访问信息。例如,要获取数据库名称...
select sys_context('USERENV', 'DB_NAME') from dual;
所有有效参数在the SQL Reference for sys_context
here中列出。
一些非常有用的参数是“ ACTION”,“ MODULE”和“ CLIENT_INFO”。这些字段通过dbms_application_info
calls填充,这使我们可以在程序之间传递信息。
但是,我们可以通过定义自己的上下文名称空间来进一步扩展此功能。这需要the CREATE CONTEXT privilege(默认情况下仅适用于DBA用户)。程序使用dbms_session
calls向上下文写入和读取。使用我们自己的上下文名称空间,我们可以将定制信息存储在会话内存中。精细访问控制(行级和列安全)依赖于此功能。因此,the Security Guide中的上下文还有很多。