当我在 Sql Developer 中运行CREATE USER
语句时,用户创建得很好。当我尝试调用一个执行的函数CREATE USER
(后跟一堆其他语句)时,执行该语句时出现 ORA-01031 错误。在另一台机器上,此功能显然已成功完成。我检查了所有角色和系统权限,但没有什么特别突出的。会是什么呢?
当我在 Sql Developer 中运行CREATE USER
语句时,用户创建得很好。当我尝试调用一个执行的函数CREATE USER
(后跟一堆其他语句)时,执行该语句时出现 ORA-01031 错误。在另一台机器上,此功能显然已成功完成。我检查了所有角色和系统权限,但没有什么特别突出的。会是什么呢?
当您有权在命令行执行操作但不在定义者的权限存储过程中(我希望您在这里使用的是存储过程,而不是存储函数),问题几乎可以肯定是您需要的权限有通过角色授予,而不是直接授予拥有该过程的用户。在定义者权限存储过程中,只能使用直接授予过程所有者的权限
DBA
——不能使用通过角色授予的权限(例如 )。您可以验证问题实际上是通过禁用角色然后尝试创建用户来通过角色授予权限,即
假设失败,正如我预期的那样,您需要直接授予函数所有者
CREATE USER
特权然后,即使禁用了角色,您也应该能够创建用户,并且存储过程应该可以工作。