• oracle 11g 学习笔记 10_30(2)_数据字典和动态性能视图


    数据字典和动态性能视图

    数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息
    动态性能视图记载了例程启动后的相关信息。

    一、数据字典

    数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户
    用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。

    数据字典的组成:数据字典包括数据字典基表数据字典视图,其中基表存储数据库的基本信息(可以理解为静态数据),普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括user.xxx, all.xxx, dba,xxx三种类型。

    *user_tables

    用于显示当前用户的所拥有的所有表,它只返回用户所对应方案的所有表。
    select table_name from user_tables;
    *all_tables
    用于显示当前用户可以访问到的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问到的其它方案的表。
    select table_name from all_tables;
    *用户名,权限,角色
    在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典,通过查询dba.users可以显示所有数据库用户的详细信息;
    通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限
    通过查询数据字典视图dba_tab_privs可以显示用户具有的对象权限
    通过查询数据字典dba_col_privs可以显示用户具有的列权限
    通过查询数据字典视图dba_role_privs可以显示用户所具有的角色

    查询看scott具有的角色,可以查询dba_role_privs;
    //1、先查看一下dba_role_privs表结构
    desc dba_role_privs;
    Name         Type         Nullable Default Comments                                          
    ------------ ------------ -------- ------- ------------------------------------------------- 
    GRANTEE      VARCHAR2(30) Y                Grantee Name, User or Role receiving the grant    
    GRANTED_ROLE VARCHAR2(30)                  Granted role name                                 
    ADMIN_OPTION VARCHAR2(3)  Y                Grant was with the ADMIN option                   
    DEFAULT_ROLE VARCHAR2(3)  Y                Role is designated as a DEFAULT ROLE for the user 
    //2、
    select * from dba_role_privs where grantee='SCOTT';
    GRANTEE                        GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE
    ------------------------------ ------------------------------ ------------ ------------
    SCOTT                          RESOURCE                       NO           YES
    SCOTT                          CONNECT                        NO           YES

    二、角色和权限

    一个角色里拥有很多权限,其实角色就是由权限构成的。角色可以分配给用户,那么该用户就拥有了该角色的权限。一个用户可能有多个角色。
    1、如何查询一个角色包含的权限?
    //这个问题包含了两小问题:
    a、一个角色包含的系统权限;
    select * from dba_role_privs where grantee='DBA' //DBA是用户名
    或者是:
    select * from dba_sys_privs where role='DBA'
    b、一个角色包含的对象权限
    select * from dba_tab_privs where grantee='DBA';
    当然,无论是查看某个角色的系统权限和对象权限都可以通过pl/sql developer 这个工具直接查看。

    2、oracle究竟有多少种角色?

    select * from dba_roles;
    

    3、如何查看某个用户具有什么角色?
    select * from dba_role_privs where grantee='用户名';
    //查询oracle中所有的系统权限,一般是dba
    select * from system_privilege_map order by name;
    //查询oracle中所有的角色,一般是dba
    select * from dba_roles;
    //查询oracle中所有对象权限,一般是dba。
    select distinct privilege from dba_tab_privs;
    //查询数据库的表空间
    select tablespace_name from dba_tablespaces;
    
    提示:查询这些信息最好是用system用户登录,普通用户查询这些可能不全。

    .显示当前用户可以访问的所有数据字典视图
    select * from dict where comments like '%grant%';
    .显示当前数据库的全称
    select * from global_name;

    *其它说明
    数据字典记录有oracle数据库的所有系统信息,通过查询数据字典可以取得以下系统信息:
    对象定义情况
    对象占用空间大小
    列信息
    约束信息
    ...
    这些信息都可以在pl/sql developerg工具查到。
     
  • 相关阅读:
    VS2010调试技巧
    asp.net中Web.Config配置文件详解
    vi进入编辑模式,按向左,向右,向上,向下,出现A,B,C,D字符解决方法
    su root后还是不能使用usermod,useradd等命令,错误描述:bash:usermod:command not found(转自http://myjieli.blog.51cto.com/135162/286462)
    启动VMware出现报错:The VMware Authorization Service is not running
    C++调用被C编译器编译过的函数要加extern "C"(转自http://zhidao.baidu.com/question/193713666.html)
    json,junit运行java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
    java生成xml文件
    java连接数据库
    eclipse_javaee运行时总是未响应
  • 原文地址:https://www.cnblogs.com/tgxblue/p/4217432.html
Copyright © 2020-2023  润新知