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 命令本身,而在于搞清楚用户位于哪个容器、是否还有残留的系统权限、以及图形化工具背后有没有“悄悄”绕过你的意图。记住,不要完全相信界面上的“已应用”提示,务必通过查询数据字典视图来进行最终验证。
相关攻略
3月7日,彭博社的一则深度报道揭示了AI算力基础设施领域的关键动态:备受业界瞩目的“星际之门”(Stargate)项目,其位于美国得克萨斯州阿比林(Abilene)的首个数据中心站点,其最终规模很可能将定格在1 2吉瓦(GW)。此前备受期待的扩容至2GW的谈判,在OpenAI、甲骨文(Oracle)
关于甲骨文“星际之门”数据中心的最新动态,近期网络上的部分信息存在偏差。北京时间3月9日,甲骨文公司官方在X平台正式作出澄清,明确指出某些媒体对其位于美国得克萨斯州阿比林(Abilene)的首个“星际之门”数据中心园区的报道,与事实不符。 那么,甲骨文“星际之门”数据中心的真实进展如何?根据官方最新
在Navicat中无法通过图形界面创建Oracle位图索引,这并非软件缺陷,而是由于Oracle要求显式使用特定SQL语句创建,且需要额外权限。Navicat为避免权限不足导致操作失败,隐藏了该选项。正确方法是使用查询编辑器直接执行CREATEBITMAPINDEX语句。创建成功后,图形界面可能仍显示为普通索引,且设计功能受限,修改需通过SQL重建。位图索引
Oracle11g安装时若报交换空间不足,常因安装程序严格校验所致。可通过创建临时swap文件解决:使用dd命令生成文件,注意设置合适参数与路径,执行mkswap与swapon启用。安装前需验证状态,确保生效。注意临时文件勿写入 etc fstab,安装完成后应及时清理。
在Oracle11gRAC环境中,仅配置multipath别名无法保证ASM稳定识别磁盘。必须通过udev规则,基于DM_NAME创建固定的字符设备节点(如 dev asm-*),并正确设置grid:asmadmin权限,以满足ASM对路径一致性、权限和名称持久性的要求。否则,ASM实例可能因裸I O失败而无法启动。规则需确保生成字符设备,并避免依赖不稳定的
热门专题
热门推荐
随着人工智能大模型与机器视觉技术的深度融合与产业升级,一个根本性的挑战愈发关键:底层视觉数据基础设施的能效水平,直接决定了上层AI应用的成本边界与识别精度的上限。近期,Robo ai (NASDAQ: AIIO) 旗下专注于AI基础设施的Neurovia AI,在第九届国际安全与国家风险防范展(IS
数字货币成功变现需掌握关键技巧:理解市场动态与主流币种联动,选择安全高流动性平台,制定明确风险目标和交易策略,严格执行止损与分散投资。市场持续变化,保持学习与适应能力是长期稳健交易的基础。
618购物节是电竞玩家升级装备的良机。华硕TUFGaming系列的战杀27与小金刚显示器凭借FastIPS面板、高刷新率、精准色彩及丰富电竞功能,以高性价比满足不同玩家对帧率与画质的追求,成为热门选择。
移动端二战空战游戏以机械浪漫与硬核操作吸引玩家。多款作品各具特色:或精细还原战机与基地经营,或重现太平洋战场任务,或融合弹幕射击与昼夜战术,或侧重战机收集养成,或提供割草式爽快体验。它们以历史氛围带玩家重返决定历史的天空。
《和平精英》中,“安V收车币”作为一种新兴交易方式,为玩家获取稀有车辆皮肤提供了安全便捷的渠道。它满足了玩家个性化需求,提升了游戏体验与沉浸感。参与交易需选择正规平台,合理规划消费并遵守官方规定,以保障自身权益。这一模式活跃了游戏经济,丰富了玩家的资源选择。





