存储过程在RO访问中不可见,但在DB中具有RW访问权限可见

时间:2017-02-09 06:14:51

标签: java sql oracle

当我尝试使用以下查询看到我的StoredProcedure使用RO访问时说MYSP

select * from all_objects where object_name ='MYSP'; 它没有显示

但是使用RW访问运行相同的查询,它就在那里。怎么样?

如果存在这种差异,在这种情况下JDBC调用会受到影响吗?

2 个答案:

答案 0 :(得分:1)

在SQL Server中,我们会定期为报告服务使用只读帐户。在许多情况下,我们在报告中存储过程而不是sql代码。在这些情况下,您必须将Exec授予该帐户的存储过程。这是增加安全级别的好方法。至于用户为什么看不到存储过程,这与用户有权访问的模式有关。即使只读帐户看到了存储过程,也只有在给予exec权限之后才能运行它。虽然是SQL Server用户,但我对all_objects的理解是用户可用对象的列表,这意味着RO帐户没有被授予执行存储过程的权限。

答案 1 :(得分:1)

听起来好像要使用DBA_OBJECTS,它描述了数据库中的所有对象。 ALL_OBJECTS描述当前用户可访问的所有对象。

如果用户或组无法使用DBA_OBJECTS,则可以使用SELECT_CATALOG_ROLE,它为数据字典中的对象提供SELECT权限。有关更多信息,请参阅here