在编译一个存储过程时,发生了ORA-00942: table or view does not exist错误,但是这个表是可以查询到数据的。
--system用户下建了rolecommon角色,并授权给common用户
SQL> show user
User is "system"
SQL> create role rolecommon;
Role created
SQL> grant rolecommon to common;
Grant succeeded
--将表tmp_clob的查询权限授权给rolecommon角色
SQL> grant select on tmp_clob to rolecommon;
Grant succeeded
--在common用户下,可以访问到tmp_clob表
SQL> conn common/common;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.

当尝试在Oracle存储过程中使用通过角色授权的表或视图时,出现ORA-00942错误。即使这些对象在查询时能够正常工作,但在存储过程内部却无法编译。同样的问题也发生在试图访问数据字典时。解决这个问题的关键在于理解Oracle的权限模型,需要通过显式授权,由表的所有者或DBA执行GRANT操作,而非依赖角色授权。
最低0.47元/天 解锁文章
3138

被折叠的 条评论
为什么被折叠?



