如何查看Oracle数据库中VPD添加的谓词?

时间:2013-06-18 12:22:57

标签: sql performance oracle row-level-security

行级安全策略添加的谓词不会显示在10046跟踪文件中。一个建议是使用10053(优化器)跟踪来查看VPD谓词,但很难在另一个会话中设置给定会话上的10053跟踪。

还有其他方法可以查看RLS策略添加了哪些谓词吗?

场景:RLS策略应用于会话#1中的查询。我们需要分析会话#2中会话#1中发生的事情。

数据库10g是Oracle 10g。

1 个答案:

答案 0 :(得分:2)

您需要有权访问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。