oracle 用户查询系统视图需要给啥权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 用户查询系统视图需要给啥权限相关的知识,希望对你有一定的参考价值。

比如说 select * from dba_source,select * from dba_profiles; 查询后找不到视图,是哪个权限没有还是其他什么情况,用户已经赋予CONNECT Role, RESOURCE Role,其他还有部分权限就不展示了

你需要赋予这个schema查询所有表的权限:
grant select any table to schema_name;
select * from dba_roles; --查看所有系统角色
select * from role_sys_privs where ROLE='SCHEMA'; --查看某个角色包含的权限
select * from dba_sys_privs where GRANTEE='SCHEMA'; --查看某个schema拥有的权限追问

不瞒你说,我是建了一个角色,角色继承了上面的两个角色,同样的我还给了你说的这个权限,然后再把这个角色给了用户,查了后查不到,我才提问的

参考技术A dba才能查询dba视图,grant dba to username.追问

这个我知道,但是我需要的是权限

追答

那你只有单独授权了
以sys用户登陆(sys用户,其它dba用户不行)
grant select on dba_source to username;
grant select on dba_profiles to username;

追问

难道不能 grant select on XXX to username; xxx为视图组

追答

table的话可以 select any table
view的权限 select any view不能执行。
你如果要授权给很多用户,可以自定义一个role角色,然后将查询权限授予角色,再将角色授予用户。

本回答被提问者采纳

Oracle用户角色权限相关视图

常用相关视图概述

    DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限

    USER_SYS_PRIVS: 当前用户所拥有的系统权限

    SESSION_PRIVS: 当前用户所拥有的全部权限

    ROLE_SYS_PRIVS: 某个角色所拥有的系统权限(要以SYS用户登录)

    ROLE_ROLE_PRIVS: 当前角色被赋予的角色

    SESSION_ROLES: 当前用户被激活的角色

    USER_ROLE_PRIVS: 当前用户被授予的角色

    针对表的访问权限的视图:

    TABLE_PRIVILEGES

    ALL_TAB_PRIVS

    ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限

相关视图使用举例

    1. 查询当前用户所拥有的权限

        select * from session_privs;

    2. 查询某个用户被赋予的系统权限.

        可以有多种方式

            select * from user_sys_privs;

        或者:

            select * from DBA_SYS_PRIVS where grantee=‘XXX‘ (需要用户拥有DBA角色)

    3. 查询当前用户被授予的角色:

        1. select * from SESSION_ROLES order by ROLE

            说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括嵌套授权的角色. 例如将DBA角色授予了一个用户,DBA角色

                已经被授予的角色(例如 exp_full_database imp_full_database)也会被查询出来

        2. select * from USER_ROLE_PRIVS

    4. 查询某一角色被赋予的系统权限

        select Privilege from ROLE_SYS_PRIVS where ROLE=&Role

        输入 role=‘CONNECT‘

        输出:

            PRIVILEGE

            --------------------

            ALTER SESSION

            CREATE CLUSTER

            CREATE DATABASE LINK

            CREATE SEQUENCE

            CREATE SESSION

            CREATE SYNONYM

            CREATE TABLE

            CREATE VIEW

    5. 查询当前角色被授予的角色

        select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&ROLE

        输入 role= ‘DBA‘

        输出:

            GRANTED_ROLE

            ----------------------

            DELETE_CATALOG_ROLE

            EXECUTE_CATALOG_ROLE

            EXP_FULL_DATABASE

            IMP_FULL_DATABASE

            PLUSTRACE

            SELECT_CATALOG_ROLE

            说明: PLUSTRACE这个角色是用于执行SQL AUTO TRACE的, 通过执行$ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色.

以上是关于oracle 用户查询系统视图需要给啥权限的主要内容,如果未能解决你的问题,请参考以下文章

oracle 赋予权限后,查询却显示表或视图不存在

oracle创建用户后需要授哪些权限

Oracle把视图查询权限给某用户的SQL是啥?

Oracle把视图查询权限给某用户的SQL是啥?

oracle创建用户后需要授哪些权限

oracle数据库用户之间授权