如何通过USER_SYS_PRIVS视图查询Oracle 11g中当前用户的所有系统权限?
- 内容介绍
- 文章标签
- 相关推荐
本文共计830个文字,预计阅读时间需要4分钟。
相关专题内容摘要:
user_sys_privs 是最直接、最安全的方式查当前用户系统权限,不需要 dba 权限,也不依赖其他角色或视图嵌套。
为什么用 USER_SYS_PRIVS 而不是 DBA_SYS_PRIVS
因为 DBA_SYS_PRIVS 只对有 DBA 角色或 SELECT_CATALOG_ROLE 的用户开放;普通开发账号执行会报 ORA-00942: table or view does not exist。而 USER_SYS_PRIVS 是每个登录用户都能访问的视图,只返回「当前会话实际生效」的系统权限(包括直授的 + 通过角色继承来的)。
注意:USER_SYS_PRIVS 不显示 ADMIN_OPTION 列 —— 这意味着它不告诉你是否有「带 ADMIN 选项」的授权(比如能否再转授给他人),这点容易被忽略。
USER_SYS_PRIVS 返回字段含义和常见陷阱
该视图返回三列:PRIVILEGE(权限名)、ADMIN_OPTION(Oracle 11g 中此列恒为 NO,不可信)、COMMON(仅在 CDB 环境有意义,11g 单机库始终为 NO)。
本文共计830个文字,预计阅读时间需要4分钟。
相关专题内容摘要:
user_sys_privs 是最直接、最安全的方式查当前用户系统权限,不需要 dba 权限,也不依赖其他角色或视图嵌套。
为什么用 USER_SYS_PRIVS 而不是 DBA_SYS_PRIVS
因为 DBA_SYS_PRIVS 只对有 DBA 角色或 SELECT_CATALOG_ROLE 的用户开放;普通开发账号执行会报 ORA-00942: table or view does not exist。而 USER_SYS_PRIVS 是每个登录用户都能访问的视图,只返回「当前会话实际生效」的系统权限(包括直授的 + 通过角色继承来的)。
注意:USER_SYS_PRIVS 不显示 ADMIN_OPTION 列 —— 这意味着它不告诉你是否有「带 ADMIN 选项」的授权(比如能否再转授给他人),这点容易被忽略。
USER_SYS_PRIVS 返回字段含义和常见陷阱
该视图返回三列:PRIVILEGE(权限名)、ADMIN_OPTION(Oracle 11g 中此列恒为 NO,不可信)、COMMON(仅在 CDB 环境有意义,11g 单机库始终为 NO)。

