【问题标题】:Oracle Row Level Security StaticOracle 行级安全性静态
【发布时间】:2018-08-15 20:55:15
【问题描述】:

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

例子:

  • 表 => 温度
  • RLS 函数 => Fun_temp

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

现在我的问题是:

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

我觉得很难理解

【问题讨论】:

    标签: oracle oracle11g row-level-security


    【解决方案1】:

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

    函数不会每次都执行。谓词将缓存在 SGA 中。

    OracleDocumentation供您参考。

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

    生成动态 WHERE 子句的函数不得从相关策略函数内的表中进行选择。尽管您可以针对表定义策略,但您无法从针对该表定义的策略中选择该表。

    【讨论】:

    • 如果表内的表发生变化会怎样?
    • “表内表变”是什么意思?可以举个详细的例子吗?
    • 在答案中添加了文档中的更多信息。
    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2018-09-23
    • 2021-02-04
    • 2018-10-12
    相关资源
    最近更新 更多