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;
如果用户还有其他管理员级别的权限(比如SYSASM、SYSDG等),同样用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




