oracle数据库管理-数据字典

     数据字典是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;

      dba_tables

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

 

       用户名,权限,角色

       在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典中

       通过查询dba_users可以显示所有数据库用户的详细信息

       通过查询数据字典视图dba_sys_privs可以显示用户所具有的系统权限

       通过查询数据字典视图dba_tab_privs可以显示用户具有的对象权限

       通过查询数据字典dba_col_privs可以显示用户具有的列权限

       通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色

 

 

        角色由很多权限组成,当把一个角色分配给某个用户后,该用户就拥有了很多的权限 ,权限分为对象权限和系统权限

 

         查询oracle中所有的角色一般是dba

         select * from dba_roles;

         查询oracle中所有的系统权限,一般是dba

         select * from system_privilege_map order by name;

         查询oracle中所有的对象权限,一般是dba

         select distinct privilege from dba_tab_privs;

         查询数据库的表空间

         select tablespace_name from dba_tablespaces;

 

1.如何查询一个角色包含的权限

     a.一个角色包好的系统权限

     select * from dba_sys_privs where grantee='CONNECT';

      或是

      select * from role_sys_privs where role='CONNECT';

     b.一个角色包含的对象权限

     select * from dba_tab_privs where grantee='CONNECT';

 

2.oracle究竟有多少中角色

     select * from dba_roles;

 

3.如何查看某个用户具有什么角色

select * from dba_role_privs where grantee='SCOTT';

 

显示当前用户可以访问的所有数据字典视图

select * from dict comments like '%grant%';

显示当前数据库的全称

select * from global_name;

 

 

----------------------------管理表空间和数据文件------------------------------

介绍,数据库则是存放

表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中的,表空间由一个或是多个数据文件组成。

 

oracle中逻辑结构包括表空间,段,区和块

数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle块构成的这样的一种结构,可以提高数据库的效率。   

表空间用于从逻辑上组织数据库的数据,数据库逻辑上是由一个或多个表表空间组成的,通过表空间可以 达到以下作用;

(1)控制数据库占用的磁盘空间

(2)dba可以将不同数据类型部署到不同的位置,这样有利于提高i/0性能,同时利于备份和恢复等管理操作

 

建立表空间

建立表空间是使用create tablespace命令完成的,需要注意的是,一般情况下,建立表空间是特权用户或是dba来执行的,如果其它用户想要建立表空间,则用户必须具有create tablespace的系统权限

建立数据表空间

在建立数据库后,为便于管理表,最好建立自己的表空间,create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k

说明:执行完上述命令后,会建立名称为data01 的表空间,并为该表空间建立名称为data01.dbf的数据库文件,区的大小为128k

使用表空间

create table mypart(deptno number(4),dname varchar2(14) ,loc varchar2(13))tablespace data01;

 

 

 改变表空间的状态

当建立表空间时,表空间处于联机(online)状态,此时该表空间是可以访问的,并且该表空间是可以读写的,即可以查询该表空间的数据,而且还可以在表空间执行各种语句,但是在进行系统维护或是数据维护时,可能需要改变表空间的状态,一般情况下,有特权用户或是dba来操作

(1)使表空间脱机

alter tablespace 表空间名 offline;

(2)使表空间联机

alter tablespace 表空间 online;

(3)只读表空间

当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update,delete,insert操作,那么可以将表空间修改为只读,alter tablespace 表空间名 read only;

<4使表空间可读写

alter tablespace 表空间名 read write;

    <1知道表空间名,显示表空间包括的所有表

      select * from all_tables where tablespace_name='表空间名'

      <2知道表名,查看表属于那个表空间

      select tablespace_name,table_name from user_tables where tale_name='emp';

通过<2可以知道scott.emp是在system这个表空间上,现在我们可以将system改为只读的但是不会成功,因为system是系统表空间,如果是普通表空间,那么我们就可以将其设为只读的

 

 

删除表空间

一般情况下,由特权用户或是dba来操作,如果其它用户操作,那么要求用户具有drop tablespace系统权限

drop tablespace ‘表空间’ including contents and datafiles

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

 

扩展表空间

表空间是由数据文件组成的,表空间的大小实际上就是数据文件相加后的大小,那么我么可以想象,假定表employee存放到data01表空间上,初始大小是2m,当数据满2m空间后,如果在向employee表插入数据,这样就会显示表空间不足的错误,此时需要扩展表空间,扩展表空间的方式有三种

(1)增加数据文件

alter tablespace sp01 add  datafile 'd:\test\sp01.dbf' size 20m

(2)增加数据文件的大小

alter  tablespace 表空间名  'd:\test\sp01.dbf'  resize 20m

(3)设置文件自动增长

alter tablespace 表空间名 'd:\test\sp01.dbf' autoextend on next 10m maxsize 500m;

 

移动数据库文件

有时,如果你的数据文件所在的磁盘损坏时,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移到其它的磁盘,然后恢复,例如移动数据库文件sp001.dbf为例来说明

<1确定数据文件所在的表空间

select tablespace_name from dba_data_files where file_name='d:\sp001.dbf';

<2使表空间脱机

确保数据文件的一致性,将表空间转变为offline的状态

alte tablespace sp01 offline

<3使用命令移动数据文件到指定的目标位置

host move d:\sp01.dbf c:\sp01.dbf

<4执行alter tablespace命令

在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改

alter tablespace sp01 rename datafile 'd:\sp001.dbf' to 'c;\sp01.dbf';

<5使的表空间联机

在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online状态

alter tablespace sp01 online

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值