• Oracle管理表空间和数据文件详解


    管理表空间和数据文件

    介绍

    表空间是数据库的逻辑组成部分

    从物理上将:数据库数据存放在数据文件中

    从逻辑上将:数据库则是存放在表空间中

    表空间由一个或是多个数据文件组成

     

    数据库的逻辑结构

    介绍:

    Oracle中逻辑结构包括表空间、段、区、块

    说明:

    数据库由表空间构成

    而表空间又是由段构成

    而段又是由区构成

    而区又是由Oracle块构成

     

     

    这样的一种结果,可以提高数据库的效率

     

    表空间

    介绍:

    表空间用于从逻辑上组织数据库的数据

    数据库逻辑上是由一个或是多个表空间组成的

     

    表空间的作用:

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

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

     

    建立表空间

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

     

    建立数据表空间

    在建立数据库后,为便于管理表,最好建立自己的表空间

    create tablespace 表空间名 datafile '数据文件路径' size 数据文件的大小 uniform size 区的大小;

     

    create tablespace tangtao001 datafile 'd:\t001.dbf' size 20m uniform size 128k;

     

    使用数据表空间

    向新建的表空间添加表:

    create table myDept(deptno number(4),dname varchar2(15),loc varchar2(13)) tablespace tangtao001;

     

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

     

    1、显示表空间信息

    a) 查询数据字典视图dba_tablespaces。显示表空间信息

    select tablespace_name from dba_tablespaces;

    2、显示表空间所包含的数据文件

    a) 查询数据字典视图dba_data_files,可以显示表空间所包含的数据文件

    select file_name,bytes from dba_data_files where tablespace_name='表空间名';

     

    改变表空间的状态

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

    1、使表空间脱机

    alter tablespace 表空间名 offline;

     

    2、使表空间联机

    alter tablespace 表空间名 online;

     

    3、只读表空间

    a) 当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update、delete、insert操作,那么可以将该表空间修改为只读

    alter tablespace 表空间名 read only;

     

    案例:

    1、知道表空间名。显示该表空间的所有表

    select * from tall_tables where tablespace_name='表空间名';

    2、知道表明,查看该表属于哪个表空间

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

     

     

    注意:

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

     

    删除表空间

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

    drop tablespace 表空间名 including contents and datafiles;

     

    说明:

    Including contents 表示删除表空间,删除该表空间的所有数据库对象,而datafiles表示将数据库文件也删除

     

    扩展表空间

    表空间是由数据文件组成的,表空间的大小实际上就是数据文件相加后的大小。那么我们可以想象。假定表employee存放到tangtao001表空间上,初始大小就是2m。当数据满2m空间后,如果在向employee表插入数据,这样就会显示空间不足的错误

     

    案例说明:

    1、建立一个表空间tangtao001

    2、在该表空间上建立一个普通标mydment 其结构和dept一样

    3、向该表中加入数据insert into mydment select * from dept;

    4、当一定时候就会出现无法扩展的问题,怎么办?

    5、就扩展该表空间,为其增加更多的存储空间。有三种方法:

     

     

    1、增加数据文件

    alter tablespace 表空间名 add datafile '数据文件存放路径' size 数据文件大小;

     

    2、增加数据文件的大小

    alter tablespace 表空间名 add datafile '数据文件存放的路径' resize 数据文件新的大小;

    这里需注意,数据文件的大小不要超过500m

     

    3、设置文件的自动增长

    alter tablespace 表空间名 add datafile '数据文件存放路径' autoextend on next 每次增加的大小 maxsize 数据文件大小的最大值;

     

    移动数据文件

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

     

    案例说明:

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

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

    2、使表空间脱机

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

    alter tablespace tangtao001 offline;

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

    host move d:t01.dbf c:t01.dbf;

    4、执行alter tablespace命令

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

    alter tablespace tangtao001 rename datafile 'd:t01.dbf' to 'c:t01.dbf';

    5、使得表空间联机

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

    alter tablespace tangtao001 online;

     

    表空间小结

    1、了解表空间和数据文件的作用

    2、掌握常用表空间,undo表空间和临时表空间的建立方法

    3、了解表空间的各个状态

    a) Online

    b) Offline

    c) Read write

    d) Read only

    4、了解移动数据文件的原因,即使用alter tablespace和alter datatable命令移动数据文件的方法

  • 相关阅读:
    第十四周课程总结&实验报告
    第十三周学习总结&实验报告(八)
    第十二周学习总结
    第十一周课程总结
    第十周课程总结
    实验报告(七)&第九周课程总结
    软件工程作业02
    第一周博客作业
    2019春总结作业
    第十二周作业
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2753549.html
Copyright © 2020-2023  润新知