行级安全策略添加的谓词不会显示在 10046 跟踪文件中。一个建议是使用 10053(优化器)跟踪来查看 VPD 谓词,但很难从另一个 session 在给定 session 上设置 10053 跟踪。
是否有其他方法可以查看 RLS 策略添加了哪些谓词?
场景:RLS 策略应用于 session #1 中的查询。我们需要分析 session #1 和 session #2 中发生的情况。
数据库10g是Oracle 10g。
最佳答案
您需要一个有权访问 V$VPD_POLICY 的用户。默认情况下,只有 SYSDBA 用户,因此您可能需要 DBA 来授予您对 View 的访问权限。该 View 将谓词与 SQL 语句联系起来。您需要从 V$SQLAREA 获取 SQL_ID,因为这会为您提供 ADDRESS,这是将 SQL 语句链接到 V$SESSION 中正确行的唯一机制。
实际上访问的顺序是:V$SESSION 为您提供 session 1 执行的最后一条语句的地址。您可以使用它在 V$SQLAREA 中查找其 SQL_ID,这又允许您链接到 V$VPD_POLICY。
因此您需要访问多个 V$ View 。但如果您正在调整,您无论如何都应该可以访问它们,但 V$VPD_POLICY 除外。
关于sql - 如何查看 Oracle 数据库中 VPD 添加的谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17168781/