文档解释
ORA-01931: cannot grant string to a role
Cause: UNLIMITED TABLESPACE, REFERENCES, INDEX, SYSDBA, SYSOPER or SYSASM privilege could not be granted to a role.
Action: Grant privilege directly to the user.
ORA-01931错误是指无法向某一角色授予某一特定权限,这个角色不能是一个系统管理用户或具有创建角色和用户权限的管理用户(即SYS用户)。
官方解释
ORA-01931表示无法向一个角色授予某一特定的权限,该角色不能是系统管理用户或具有常规角色创建/删除权限的管理用户(即SYSDBA用户)。
常见案例
ORA-01931可能是使用grant命令时出现的错误,如下:
SQL > GRANT ON TO ;
正常处理方法及步骤
正常处理此错误应从其根本上解决,请使用GRANT命令时使用特定的用户而不是特定的用户角色。可以使用下列步骤处理此错误:
1. 登录到oracle database;
2. 检查要使用grant命令授予权限的用户ID以确保它不是一个角色;
3. 建议使用GRANT/REVOKE权限时仅使用系统管理员,以确保安全性;
4. 如果用户使用了正确的用户而不是角色,请检查当前用户的权限,以在此情况下授予,负责撤消权限的权限;
5. 重新运行grant命令以授予权限;
6. 查询系统权限确认向用户授予了正确的权限。