You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Oracle 12c如何删除管理员权限用户?遇ORA-28014错误

解决Oracle 12c中ORA-28014: cannot drop administrative users错误

碰到这个问题很正常,Oracle 12c对带有管理员权限的用户做了专门的保护机制,直接用DROP USER命令是删不掉的,得按下面的步骤来操作:

步骤1:撤销用户的管理员权限

首先你得用SYS或者SYSTEM这类拥有最高权限的用户登录数据库(普通用户没权限做这个操作),然后执行以下命令撤销用户的管理员权限:

-- 撤销SYSDBA权限(如果用户有这个权限的话)
REVOKE SYSDBA FROM GOVIND;
-- 如果用户还有SYSOPER权限,也要一并撤销
REVOKE SYSOPER FROM GOVIND;

如果用户还有其他管理员级别的权限(比如SYSASMSYSDG等),同样用REVOKE 权限名 FROM GOVIND;来撤销。

步骤2:验证权限是否已撤销

可以通过查询系统视图确认权限已经被移除:

SELECT PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = 'GOVIND';

如果查询结果里没有任何管理员级别的权限(比如SYSDBA、SYSOPER),就说明操作成功了。

步骤3:执行删除用户命令

现在就可以正常删除用户了,记得加上CASCADE参数来删除用户名下的所有对象(表、视图、存储过程等):

DROP USER GOVIND CASCADE;

一些注意事项

  • 操作全程必须用超级用户(SYS/SYSTEM)执行,普通用户没有权限修改管理员用户的权限和删除他们。
  • CASCADE参数会彻底删除用户的所有关联对象,执行前请确认这些对象已经不再需要,删除后无法恢复。
  • 如果用户还属于某些管理员组(比如DBA角色),也可以先执行REVOKE DBA FROM GOVIND;来移除角色权限,不过核心还是要撤销SYSDBA这类直接的管理员系统权限。

内容的提问来源于stack exchange,提问作者Govind Gupta

火山引擎 最新活动