• Oracle数据字典


    十一:数据字典和动态性能视图

    介绍
    是什么n
    数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。
    动态性能视图记载了例程启动后的相关信息。
    n 数据字典
    数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。
    用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。
    这里我们谈谈数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。数据字典视图主要包括user_xxx,all_xxx,dba_xxx三种类型。
    user_tables;
    用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表
    比如:
    select table_name from user_tables;
    all_tables;n
    用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表:
    比如:
    select table_name from all_tables;
    dba_tables;

    它会显示所有方案拥有的数据库表。但是查询这种数据库字典视图,要求用户必须是dba角色或是有select any table系统权限。
    例如:当用system用户查询数据字典视图dba_tables时,会返回system,sys,scott...方案所对应的数据库表。

    用户名,权限,角色
    在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典。
    通过查询dba_users可以显示所有数据库用户的详细信息;
    通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限;
    通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限;
    通过查询数据字典dba_col_privs可以显示用户具有的列权限;
    通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色。

    SQL> desc dba_users;
    名称                                      是否为空? 类型
    ----------------------------------------- -------- --------------

    USERNAME                                  NOT NULL VARCHAR2(30)
    USER_ID                                   NOT NULL NUMBER
    PASSWORD                                           VARCHAR2(30)
    ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)
    LOCK_DATE                                          DATE
    EXPIRY_DATE                                        DATE
    DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)
    TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)
    CREATED                                   NOT NULL DATE
    PROFILE                                   NOT NULL VARCHAR2(30)
    INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)
    EXTERNAL_NAME                                      VARCHAR2(4000)
    PASSWORD_VERSIONS                                  VARCHAR2(8)
    EDITIONS_ENABLED                                   VARCHAR2(1)
    AUTHENTICATION_TYPE                                VARCHAR2(8)

    SQL> SELECT USERNAME FROM DBA_USERS;

    USERNAME
    ----------------------------------------------
    RPF
    SMF
    TAZI
    WANGWU
    SCOTT

    SQL> select * from dba_role_privs where grantee='SCOTT';

    GRANTEE
    ------------------------------------------------------------
    GRANTED_ROLE                                                 ADMIN_ DEFAUL
    ------------------------------------------------------------ ------ ------
    SCOTT
    RESOURCE                                                     NO     YES

    SCOTT
    CONNECT                                                      NO     YES

    SQL> desc dba_roles;
    名称                                      是否为空? 类型
    ----------------------------------------- -------- -----------------

    ROLE                                      NOT NULL VARCHAR2(30)
    PASSWORD_REQUIRED                                  VARCHAR2(8)
    AUTHENTICATION_TYPE                                VARCHAR2(11)

    SQL> select role from dba_roles;

    ROLE
    ------------------------------------------------------------
    CONNECT
    RESOURCE
    DBA
    SELECT_CATALOG_ROLE
    EXECUTE_CATALOG_ROLE
    DELETE_CATALOG_ROLE
    EXP_FULL_DATABASE

    //查询oracle中所有的角色,一般是dba
    select * from dba_roles;
    //查询数据库的表空间
    select tablespace_name from dba_tablespaces;

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

    表空间

    create table xx() tablespace xxx;创建的表放到指定的表空间下

    SQL> create table mt(id number(1)) tablespace store;

    表已创建。

    SQL> select table_name from all_tables where tablespace_name='STORE';

    TABLE_NAME
    ------------------------------------------------------------
    MT
    USERS
    EMAILS
    STUDENTS
    LOG201112

    创建表空间

    create tablespace data01 datafile 'd:\test\dada01.dbf' size 20m uniform size 128k;

    uniform size为区的大小(表空间,段,区,块)

    必须有create tablespace权限

    alter tablespace 表空间名 offline;

    alter tablespace 表空间名 read only;

    alter tablespace 表空间名 read write;

    查看表空间中的所有表

    select * from all_tables where tablespace=’’

    查看某个表的表空间

    select tablespace_name,table_name from user_tables where table_name=’’;

    查看当前数据库所有的表空间

    select tablespace_name from dba_tablespaces;

    drop tablespace ‘表空间’ including contents and datafiles;

    说明:including contents表示删除表空间时,删除该空间的所有数据库对象,而datafiles表示将数据库文件也删除。

    扩展表空间

    增加数据文件

    alter tablespace [store] add datafile 'd:/sp0.dbf' size 10M;

    alter tablespace [store] drop  datafile 'd:/sp0.dbf';

    移动数据文件n
    有时,如果你的数据文件所在的磁盘损坏时,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移动到其它的磁盘,然后恢复。
    下面以移动数据文件sp01.dbf为例来说明:
    1. 确定数据文件所在的表空间
    select tablespace_name from dba_data_files where file_name=’d:\test\sp01.dbf’;
    2. 使表空间脱机
    确保数据文件的一致性,将表空间转变为offline的状态。
    alter tablespace sp01(表空间名) offline;
    3. 使用命令移动数据文件到指定的目标位置
    host move d:\test\sp01.dbf c:\test\sp01.dbf
    4. 执行alter tablespace命令
    在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改:
    alter tablespace sp01 rename datafile ‘d:\test\sp01.dbf’ to ‘c:\test\sp01.dbf’;
    5. 使得表空间联机
    在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online状态。
    alter tablespace sp01(表空间名) online;

     

  • 相关阅读:
    放假归来
    用ObjectSpaces重建IBuySpy的数据访问层
    在SPS中加入自定义WebService
    AnnouncementOSD.xml
    Delphi8 is out !
    ASP.NET PreCompilation and KeepAlive
    ScottGu回答了Whidbey发布的时间问题
    DiskBased Caching in Whidbey, Longhorn…
    AnnouncementRSD.xml
    忙着满足客户的需求...
  • 原文地址:https://www.cnblogs.com/tazi/p/2315618.html
Copyright © 2020-2023  润新知