我正在寻找在 Oracle 数据库中调试我的一些行级安全谓词的技巧。这些谓词使用一些概念来确定当前用户是否可以看到记录:
- 当前用户的 Oracle 用户名
- 当前用户分配的 Oracle 角色
- 当前用户与一个或多个表中的记录的从属关系
我无法在真实数据上调试这种事情,因为我想不出一种好的方法来模拟实际看到特定用户可以看到的内容。所以,我正在寻找提示。这种事情有很好的基本框架吗?
这是我的谓词之一的示例:
predicate := 'project_id in (' ||
'(select upr.projectid project_id ' ||
'from chemreg.usergroups_projects_vu upr, ' ||
' chemreg.usergroups_personnel_vu upe, ' ||
' chemreg.personnel pe ' ||
'where upr.usergroupid = upe.usergroup_id ' ||
' and upe.personnel_id = pe.person_id ' ||
' and upper(pe.username) = USER) ' ||
'union ' ||
'(select project_id from chemreg.project ' ||
'where active = ''Y'' and private = ''N'' ) )';