Oracle学习笔记(五)—Oracle-数据库管理 (管理表空间和数据文件)

By timebusker on April 19, 2018

Oracle学习笔记(五)—Oracle-数据库管理 (管理表空间和数据文件)

概念

  • Oracle中逻辑结构包括表空间、段、区和块 数据库的逻辑结构:数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle块构成的,这样可以提高数据库的效率。

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

表空间

表空间用于从逻辑上组织数据库的数据。数据库逻辑上是由一个或是多个表空间组成的。通过表空间可以达到以下作用:
1、控制数据库占用的磁盘空间 2、dba可以将不同数据类型部署到不同的位置,这样有利于提高i/o性能,同时利于备份和恢复等管理操作。

  • 建立表空间
    一般情况下,建立表空间是特权用户或是dba来执行的,如果用其它用户来创建表空间,则用户必须要具有create tablespace的系统权限。同时,在建立数据库后,为便于管理表,最好建立自己的表空间。
    create tablespace tbs_dba datafile '/data/oracle/oradata/orcl/tbs_dba.dbf' size 20m extent management local autoallocate; -- uniform size 256k
    注释: 创建名为tbs_dba的表空间,数据文件为/data/oracle/oradata/orcl/tbs_dba.dbf,表空间默认大小20M,使用自动管理的方式扩展表空间,区大小设置为256K。
    create tablespace tbs_dba datafile '/data/oracle/oradata/orcl/tbs_dba.dbf' size 20m autoextend on next 50m maxsize 500m extent management local autoallocate; -- uniform size 256k

  • 改变表空间的状态
    当建立表空间时,表空间处于联机的(online)状态,此时该表空间是可以访问的,并且该表空间是可以读写的,即可以查询该表空间的数据,而且还可以在表空间执行各种语句。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态。一般情况下,由特权用户或是dba来操作。
    • 使表空间脱机alter tablespace 表空间名 offline; --表空间名不能加单引号
    • 使表空间联机alter tablespace 表空间名 online;
    • 只读表空间 alter tablespace 表空间名 read only;,如果不希望在该表空间上执行update,delete,insert操作,那么可以将表空间修改为只读。 注意:修改为可写是alter tablespace 表空间名 read write;
  • 删除表空间
    drop tablespace ‘表空间’ including contents and datafiles;
    说明:including contents表示删除表空间时,删除该空间的所有数据库对象,而datafiles表示将数据库文件也删除。

  • 扩展表空间(三种方法)
    • 增加数据文件
      alter tablespace tbs_dba add datafile '/data/oracle/oradata/orcl/tbs_dba_01.dbf' size 1m;
    • 修改数据文件的大小
      alter tablespace tbs_dba '/data/oracle/oradata/orcl/tbs_dba.dbf' resize 4m;
    • 设置文件的自动增长
      alter tablespace tbs_dba '/data/oracle/oradata/orcl/tbs_dba.dbf' autoextend on next 10m maxsize 500m;
  • 移动数据文件
    有时,如果你的数据文件所在的磁盘损坏时,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移动到其它的磁盘,然后恢复。
    • 确定数据文件所在的表空间
      select tablespace_name from dba_data_files where file_name=upper('/data/oracle/oradata/orcl/tbs_dba.dbf');
    • 使表空间脱机,确保数据文件的一致性,将表空间转变为offline的状态
      alter tablespace tbs_dba offline;
    • 使用命令移动数据文件到指定的目标位置
      host move /data/oracle/oradata/orcl/tbs_dba.dbf /root/tbs_dba.dbf;
    • 执行alter tablespace 命令
      在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改:
      alter tablespace tbs_dba rename datafile '/data/oracle/oradata/orcl/tbs_dba.dbf' to '/root/tbs_dba.dbf';
    • 使得表空间联机
      在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online状态
      alter tablespace tbs_dba online;
  • 显示表空间信息
    • 查询数据字典视图dba_tablespaces,显示表空间的信息:
      select tablespace_name from dba_tablespaces;
    • 显示表空间所包含的数据文件
      查询数据字典视图dba_data_files,可显示表空间所包含的数据文件,如下:
      select file_name, bytes from dba_data_files where tablespace_name='表空间';

参考资料