Database SQL错误:ORA-01039:对视图的基础对象的权限不足

Database SQL错误:ORA-01039:对视图的基础对象的权限不足,database,oracle,view,grant,sql-execution-plan,Database,Oracle,View,Grant,Sql Execution Plan,我正在尝试使用下面的查询获取视图的解释平面 explain plan for select * from SCHEMA1.VIEW1; 但是我越来越 错误报告- SQL Error: ORA-01039: insufficient privileges on underlying objects of the view 01039. 00000 - "insufficient privileges on underlying objects of the view" *Cause:

我正在尝试使用下面的查询获取视图的解释平面

explain plan for select * from SCHEMA1.VIEW1;
但是我越来越

错误报告-

SQL Error: ORA-01039: insufficient privileges on underlying objects of the view

01039. 00000 -  "insufficient privileges on underlying objects of the view"


*Cause:    Attempting to explain plan on other people's view without
           the necessary privileges on the underlying objects of the view.


*Action:   Get necessary privileges or do not perform the offending operation.
需要获得SQL grant语句方面的帮助,请参见:

安全模型

此包以调用用户的权限而不是包所有者(SYS)的权限运行。表函数DISPLAY\u CURSOR需要对以下固定视图具有选择权限:V$SQL\u PLAN、V$SESSION和V$SQL\u PLAN\u STATISTICS\u ALL

使用DISPLAY_AWR函数需要用户对DBA_HIST_SQL_PLAN、DBA_HIST_SQLTEXT和V$DATABASE具有选择权限

使用DISPLAY_SQLSET函数需要用户对所有_SQLSET_语句和所有_SQLSET_计划具有选择权限

使用DISPLAY\u SQL\u PLAN\u BASELINE函数,用户要求用户在DBA\u SQL\u PLAN\u基线上具有SELECT权限

所有这些权限都是作为SELECT_CATALOG角色的一部分自动授予的



我认为您没有对某些表授予选择权,也没有对视图查询中可能使用的某些函数授予执行权。检查视图“SCHEMA1”“VIEW1”的查询

我的猜测是,有些函数需要被授予在它们上正确执行的权限


另一种猜测(可能性更大)是,视图中使用的某些表被授予了某个角色,而您拥有该角色。据我所知,在包、过程等中,Oracle需要您的用户明确授权在这些对象上进行选择,而不是通过角色进行选择。否则您将无法执行这些包

我的问题是在第一个sql语句中获取视图的解释计划,我已更新了问题,将检查文档请注意,V$sql\u计划、V$SESSION和V$sql\u计划统计信息都是同义词。底层对象(如果您不想授予SELECT_目录)是V_$SQL_计划、V_$SESSION和V_$SQL_计划、统计信息(带下划线)。这一点很重要,因为您不能对同义词授予SELECT,而只能对基础对象授予SELECT。可以在中找到准备执行的GRANT语句。您是否可以将视图选择为“SELECT*from SCHEMA1.VIEW1;”?是的,我可以执行“SELECT*from SCHEMA1.VIEW1;”