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