授予权限时如何解决ora-04042和ora-00942错误?

t3psigkw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(444)

我正在尝试向用户授予执行和读取权限。
当我同意执行时,我得到:

grant EXECUTE on SYS.KIR_DOKUMENT to ktest2

Error report -
ORA-04042: procedure, function, package, or package body does not exist
04042. 00000 -  "procedure, function, package, or package body does not exist"

当我同意阅读时,我得到:

grant READ on SYS.KIR_DOKUMENT to ktest2

Error report -
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"

* Cause:

但我查了表的状态 dba_objects 它们是有效的。
查询

select owner, object_name, object_type from dba_objects where object_name

提供以下输出:

必须向我数据库中的另一个用户提供相同的授权:

如何解决这些错误?

mlnl4t2r

mlnl4t2r1#

根据您的问题编辑,对象是一个目录;所以你必须包括 DIRECTORY 关键字:

grant READ, EXECUTE on DIRECTORY KIR_DOKUMENT to ktest2;

文件上说(重点加上):
on\ object\子句标识被授予特权的对象。用户、目录对象、版本、数据挖掘模型、java源和资源模式对象以及sql转换概要文件是分开标识的,因为它们位于不同的名称空间中。)

在目录上
指定要授予其权限的目录对象的名称。不能用架构名称限定目录名称。
并举例说明。

相关问题