oracle

关注公众号 jb51net

关闭
首页 > 数据库 > oracle > Oracle 用户权限

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

作者:大红袍

在Oracle数据库中,查询用户权限通常涉及到几个不同的视图和命令,本文给大家介绍查询Oracle数据库用户权限的方法,感兴趣的朋友跟随小编一起看看吧

一、Oracle 权限体系说明

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

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

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

1. 直接授予的系统权限

SELECT privilege, admin_option
FROM user_sys_privs
ORDER BY privilege;

2. 直接授予的对象权限

SELECT owner, table_name, privilege, grantable
FROM user_tab_privs_recd
ORDER BY owner, table_name, privilege;

3. 被授予的所有角色

SELECT granted_role, admin_option, default_role
FROM user_role_privs
ORDER BY granted_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 用户权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文