Oracle行级安全静态

时间:2018-03-07 16:52:23

标签: oracle oracle11g row-level-security

我有一个关于静态策略类型的行级安全性的问题

示例:

  • 表=>温度
  • RLS功能=> Fun_temp

RLS函数正在查询同一个表Temp以根据当前上下文用户查找谓词,sysdate上没有其他逻辑。

现在我的问题是:

  • 如果策略类型是STATIC,并且我在循环中使用此表并在循环执行时更改了数据,那么谓词是否会发生变化?
  • 该函数是否每次都在循环中执行?

我觉得很难理解

1 个答案:

答案 0 :(得分:0)

如果策略类型为STATIC,则谓词不会更改。它将被缓存在SGA中。但是,如果上下文参数值(在您的情况下为user)发生更改,则谓词将在上下文中评估参数用户的新值。因此输出将取决于上下文中参数用户的新值。

每次都不会执行该功能。谓词将在SGA中缓存。

OracleDocumentation供您参考。

更新: 上述Oracle文档清楚地说明了以下内容。

生成动态WHERE子句的函数不能从关联策略函数中的表中进行选择。虽然您可以针对表定义策略,但是您无法从针对该表定义的策略中选择该表。