Oracle如何撤销用户的DBA权限_执行REVOKE DBA操作
Oracle如何撤销用户的DBA权限_执行REVOKE DBA操作
想收回一个用户的DBA权限,可不是简单地在图形界面上点掉勾选就万事大吉了。这里面有几个关键步骤和容易踩的坑,操作不当,用户可能依然拥有部分高危权限。核心操作是:必须用 SYS AS SYSDBA 或带 ADMIN OPTION 的 DBA 用户执行 REVOKE DBA FROM scott;,且需在对应容器(CDB/PDB)中操作,并验证是否残留 CREATE SESSION 等权限。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

具体来说,你必须使用具有 dba 权限的用户(比如 sys 或 system)来执行 revoke dba from user_name; 命令。否则,系统会毫不客气地抛出一个 ora-01031: insufficient privileges 错误,告诉你权限不足。
用哪个账号执行 REVOKE DBA 才有效
这里有个硬性规定:只有本身拥有 DBA 角色且附带 ADMIN OPTION 选项的用户,才有资格撤销其他用户的 DBA 权限。通常,SYS AS SYSDBA 或 SYSTEM 用户是可行的选择,但前提是后者的 ADMIN OPTION 没有被手动移除。稳妥起见,最可靠的方式还是用 SYS 登录:
sqlplus / as sysdba
登录成功后,直接运行撤销命令:
REVOKE DBA FROM scott;
注意两个细节:第一,用户名 scott 必须大写(除非创建时用了双引号指定小写);第二,确保该用户当前确实拥有 DBA 角色。否则,你会收到 ORA-01952: system privilege not granted to 'SCOTT' 的提示。
REVOKE DBA 不能跨实例或跨容器生效
在Oracle的多租户(CDB/PDB)环境下,这一点尤其需要注意。DBA 是一个数据库级别的角色,而不是CDB级别的全局角色。这意味着,如果你在CDB$ROOT(根容器)中执行 REVOKE DBA FROM scott;,这个操作只对根容器生效。如果 scott 用户在某个特定的PDB(可插拔数据库)里也被授予了 DBA 角色,那么PDB中的权限并不会自动消失。
怎么处理?按这个步骤来:
- 先定位:查询
SELECT CON_ID, GRANTEE, GRANTED_ROLE FROM CDB_ROLE_PRIVS WHERE GRANTEE = 'SCOTT' AND GRANTED_ROLE = 'DBA';,确认用户在哪个容器拥有权限。 - 再切换:根据查询到的
CON_ID,切换到对应的容器连接(例如:ALTER SESSION SET CONTAINER = pdb1;)。 - 后执行:在正确的容器中再次执行
REVOKE命令。
顺便提一句,别太依赖PL/SQL Developer这类图形化工具的“去掉勾选”操作。界面操作可能只针对你当前连接的容器,一不小心就会遗漏。
撤销后用户仍能连库?检查 CREATE SESSION 是否残留
这是一个常见的“后遗症”。DBA 角色确实包含 CREATE SESSION 权限,但撤销 DBA 角色并不会自动收回这个单独的权限。用户可能之前被单独授予过 CREATE SESSION,或者属于 CONNECT 角色(在旧版本中默认包含此权限)。
所以,执行完 REVOKE DBA FROM scott; 后,强烈建议顺手检查一下:
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SCOTT' AND PRIVILEGE = 'CREATE SESSION';
如果查询结果非空,而你的目的是彻底禁止该用户登录,那么就需要额外执行:
REVOKE CREATE SESSION FROM scott;
否则,用户 scott 仍然可以连接到数据库,只是无法执行 DROP USER、ALTER SYSTEM 这类高危操作了。
图形化工具里点“删掉 DBA 角色”为什么有时不生效
PL/SQL Developer、SQL Developer 这些工具的图形界面,本质上也是在后台拼接SQL语句执行。但它们有时会漏掉几个关键点:
- 容器上下文不明确:尤其在PDB中操作时,工具可能默认连接到CDB$ROOT,而没有显式指定
CONTAINER = CURRENT。 - 事务未提交:点击“Apply”后,有些版本需要手动按Ctrl+Enter或在确认弹窗中提交,事务才算真正完成。
- 大小写敏感问题:更隐蔽的情况是,界面上显示的是小写的
dba,但数据库元数据中存储的是大写的DBA。图形界面的删除逻辑可能因为大小写匹配失败而导致操作无效。
遇到图形界面操作无效的情况,最直接的办法就是回到命令行。用 sqlplus / as sysdba 直接执行语句,然后查询 DBA_ROLE_PRIVS 视图来确认操作结果。
说到底,撤销DBA权限的难点,并不在于执行那条 REVOKE 命令本身,而在于搞清楚用户位于哪个容器、是否还有残留的系统权限、以及图形化工具背后有没有“悄悄”绕过你的意图。记住,不要完全相信界面上的“已应用”提示,务必通过查询数据字典视图来进行最终验证。
相关攻略
Oracle数据库时间点恢复实战:避开四个关键陷阱 想要将数据库精准回滚到过去的某个特定时刻?Oracle RMAN的UNTIL TIME功能是实现这一目标的核心工具,但实际操作远比想象中复杂,许多数据库管理员都曾在此处遭遇挫折。本文将深入剖析执行时间点恢复(Point-in-Time Recove
Oracle数据库PROFILE配置详解:SESSIONS_PER_USER参数精准控制用户并发会话数 如何用 PROFILE 设置用户最大并发连接数 许多DBA在寻找限制Oracle用户并发连接数的方法时,常误以为数据库有直接的“并发连接数”配置项。实际上,最核心且有效的管控机制是利用PROFIL
RMAN恢复速度受网络影响吗? 答案是肯定的,但存在一个关键前提:网络限制仅当您使用 restore 命令从远程存储位置拉取备份片时才会生效。常见的远程位置包括:挂载的NFS共享、跨广域网的NFS、云对象存储网关,或通过 sbt_tape 等插件进行网络传输的备份。反之,如果备份集本身就存储在本地磁
如何诊断SQL执行计划漂移:先查AWR历史基线,再验证基线状态与参数 SQL性能突然下降?先检查AWR历史执行计划是否稳定 Oracle数据库SQL性能下降,执行计划漂移是常见原因。统计信息更新、绑定变量窥探或数据库版本升级都可能导致优化器生成次优计划。但性能变慢不一定就是计划问题。第一步,需要确认
Oracle如何撤销用户的DBA权限_执行REVOKE DBA操作 想收回一个用户的DBA权限,可不是简单地在图形界面上点掉勾选就万事大吉了。这里面有几个关键步骤和容易踩的坑,操作不当,用户可能依然拥有部分高危权限。核心操作是:必须用 SYS AS SYSDBA 或带 ADMIN OPTION 的
热门专题
热门推荐
你一直认为自己是个无与伦比的职工 不迟到、不早退、准时完成工作,对单位里的大小文具从不顺手牵羊——这当然是职业素养的基石。不过,衡量工作成绩的优劣,有时并不仅仅看个人表现,与周围环境的协调能力同样是重要的考察维度。一味地严于律己固然好,但若与同事龃龉过多,这些不经意间埋下的“暗礁”,很可能成为阻碍你
Pharos Network公共主网正式上线:一条聚焦合规与互操作性的新公链启航 Web3市场的发展一日千里,用户对既高效又合规的金融基础设施的渴求,从未像今天这样迫切。正是在这样的背景下,基于权益证明机制、兼容EVM的第一层区块链——Pharos Network,于今日正式向公众敞开了大门。通过一
基本原则 职业女性的着装,从来不是一件小事。它像一张无声的名片,必须精准地传达出你的个性、体态特征、职位角色,更要与你所处的企业文化、办公环境乃至个人志趣相契合。 这里有个常见的误区:认为展现权威就得向男同事的着装看齐。其实恰恰相反,真正的“女强人”魅力,源于“做女人真好”的自信心态。充分发挥女性特
现代社会中,智慧与才华成为职业生涯的决定因素 工业化和高科技的浪潮,正悄然改变着职场的力量格局。一个显著的趋势是,男性的体力优势在众多领域逐渐变得不那么关键,这为女性更广泛、更深入地参与社会财富创造打开了大门。如今在工作中,“人”的属性越来越超越性别属性。那句广为流传的宣言——“没有专门只给男人或者
在办公室里,同事每天见面的时间最长,谈话可能涉及到工作以外的各种事情,讲错话常常会给你带来不必要的麻烦。同事与同事间的谈话,如何掌握分寸就成了人际沟通中不可忽视的一环。 办公室里最好不要辩论 职场里总有些人,似乎天生就喜欢争论,凡事都要争个高低对错才肯罢休。如果你恰好也具备这种“才华”,那么真心建议





