什么信息存储在plsql的上下文区域中?

时间:2019-06-01 08:42:14

标签: sql oracle plsql

我了解到oracle中的上下文区域是一个私有内存空间,用于存储处理SQL语句所需的信息。但是,我对存储在其中的信息一无所知。

1 个答案:

答案 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中的上下文还有很多。