当前位置: 代码网 > it编程>数据库>Oracle > 查询Oracle 数据库用户权限的方法

查询Oracle 数据库用户权限的方法

2026年07月16日 Oracle 我要评论
一、oracle 权限体系说明oracle 权限分为三大类,且支持角色嵌套继承(用户→角色→子角色→权限),查询时要区分直接权限和间接权限(通过角色继承获得):系统权限:

一、oracle 权限体系说明

oracle 权限分为三大类,且支持角色嵌套继承(用户→角色→子角色→权限),查询时要区分直接权限和间接权限(通过角色继承获得):

  • 系统权限:数据库级别的操作权限,如 create table(建表)、create session(登录)、unlimited tablespace(无限表空间)等。
  • 对象权限:针对具体数据库对象(表、视图、存储过程、序列等)的操作权限,如某张表的 selectupdateexecute 等。
  • 角色权限:权限的集合,可以把多个权限 / 子角色打包成角色授予用户,支持多层嵌套(最常见的如 connectresourcedba 角色)。

二、查询当前登录用户的权限(普通用户可执行)

无需 dba 权限,登录后直接运行,可查自己拥有的全部权限。

1. 直接授予的系统权限

select privilege, admin_option
from user_sys_privs
order by privilege;
  • privilege:权限名称
  • admin_option:是否可将该权限转授给其他用户

2. 直接授予的对象权限

select owner, table_name, privilege, grantable
from user_tab_privs_recd
order by owner, table_name, privilege;
  • owner:对象所属的用户
  • table_name:对象名称(表 / 视图 / 存储过程等)
  • grantable:是否可将该对象权限转授给他人

3. 被授予的所有角色

select granted_role, admin_option, default_role
from user_role_privs
order by granted_role;
  • default_role:是否为默认角色(登录后自动生效)

4. 所有系统权限(含角色继承的全部权限)

select distinct privilege
from (
    -- 直接授予的系统权限
    select privilege from user_sys_privs
    union all
    -- 角色携带的系统权限
    select rp.privilege
    from role_sys_privs rp
    where rp.role in (select granted_role from user_role_privs)
)
order by privilege;

5. 汇总版(看全权限)

select '系统权限' as 权限类型, privilege as 权限名称 from user_sys_privs
union all
select '所属角色' as 权限类型, granted_role as 权限名称 from user_role_privs
union all
select '对象权限' as 权限类型, owner||'.'||table_name||'('||privilege||')' as 权限名称 
from user_tab_privs_recd
order by 权限类型, 权限名称;

到此这篇关于查询oracle 数据库用户权限的方法的文章就介绍到这了,更多相关oracle 用户权限内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com