授予执行权时出现 ORA-00942 错误

ORA-00942 error while granting execution rights

我想将分区添加到现有 table。因此我遵循了这个 example.

尝试时:

grant execute on dbms_redefinition to USER

Oracle returns 出现以下错误:

Error starting at line 13 in command:
grant execute on dbms_redefinition to USER
Error report:
SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

为什么会这样?有解决方法吗?

首先,您需要以 SYSDBA 身份登录以授予用户对该程序包的执行权限。

其次,请注意 dbms_redefinition 用户还需要以下权限才能工作:

ALTER ANY TABLE
CREATE ANY TABLE
DROP ANY TABLE
LOCK ANY TABLE
SELECT ANY TABLE

而且,根据目标 table,您可能还需要:

CREATE ANY INDEX
CREATE ANY TRIGGER

这些是授予用户的非常强大的权限,因此您可能希望在完成需要完成的操作后撤销它们。使用这个包的另一个很好的例子 is here