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

问题描述 投票:0回答:1

我试图授予一个用户EXECUTE和READ权限。

当我授予执行权限时,我得到的是

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

给出了这样的结果。

dba_objects query output

同样的补助金必须给我数据库中的另一个用户。

dba_object_privs output for another object

我如何解决这些错误?

sql oracle database-administration privileges grant
1个回答
1
投票

根据你的问题编辑,该对象是一个目录,所以你必须包含了 DIRECTORY 关键字。

grant READ, EXECUTE on DIRECTORY KIR_DOKUMENT to ktest2;

The 文件 说(重点是后加的)。

该条规定: on_object_clause 标识被授予权限的对象。用户。目录对象版本,数据挖掘模型,Java源和资源模式对象,以及SQL翻译配置文件。单独列出 因为它们分别位于不同的命名空间中)。)

关于目录

指定要授予权限的目录对象的名称。您不能限定 目录名 与模式名。

以及 举个例子.

© www.soinside.com 2019 - 2024. All rights reserved.