oracle数据库管理之表空间

来源:互联网 发布:网络屏蔽器软件下载 编辑:程序博客网 时间:2024/05/17 01:01

表空间的创建

create tablespace spacename  -----表空间名称logging                    size 32m                     -----初始大小autoextend on                -----开启自动扩展next 32m maxsize 20480m      -----每次增加32m,最大空间20Gextent management local;     -----使用本地管理区 create temporary tablespace spacename  -----临时表空间名称size 32m                     -----初始大小autoextend on                -----开启自动扩展next 32m maxsize 20480m      -----每次增加32m,最大空间20Gextent management local;     -----使用本地管理区

表空间的分类

表空间(table space)是Oracle数据库中最大的逻辑结构。从逻辑上说,Oracle数据库是由若干个表空间组成的。表空间与数据库的物理结构有着十分密切的关系,它与磁盘上若干个数据文件相对应。从物理上说数据库的数据被存放在数据文件中,从逻辑上说数据是被存放在表空间中 。 —— [ 开源中国 ]

一个数据库通常有SYSTEM、SYSAUX和TEMP三个默认表空间,一个或多个临时表空间,而且还有一个撤销表空间和几个应用程序专用的应用表空间。可以创建新的表空间来满足用户或应用程序对数据库存储空间的需求。创建表空间需要决定创建什么类型的表空间。

  1. 系统表空间
    系统表空间包括SYSTEM和SYSAUX表空间,其它表空间是非系统表空间。系统表空间在所有数据库中都是必须的,是自动创建的,一般存放数据字典表及其数据。
  2. 永久表空间
    永久表空间用于保存永久性的数据,如系统数据,应用系统数据。每个用户都会分配一个永久表空间,以便保存其方案对象的数据。除了撤销(undo)表空间,相对于临时表空间( temporary)表空间来说,其它表空间就是永久表空间(permanent)表空间,如系统表空间。
  3. 临时表空间
    执行具有排序(order by)、分组汇总(group by)、索引(create index)等功能的SQL语句时,会产生大量临时数据。服务器进程首先将临时数据存放到PGA区的排序区中,当排序区不够用时,服务器进程就会在临时表空间中建立临时段,并将这些临时数据存放到临时段中。
    如果在创建用户时没有为用户指定一个临时表空间,那么就会使用SYSTEM表空间来创建临时段,存放临时数据。这样做的结果是:
    占用SYSTEM表空间的存储空间,是可用的存储空间下降
    频繁地分配和释放临时段,会使SYSTEM表空间中产生大量的存储碎片,使磁盘的读取效率下降
    由于这些原因,会直接影响数据库的性能
    如果在数据运行过程中,经常有大量的并发程序,为了避免在SYSTEM表空间中存储临时数据,DBA应该在数据库中创建一个专门用来存储临时数据的临时表空间,对应的文件称为临时文件。临时表空间可以被所有用户共享使用,如TEMP表空间。
    用户的临时表空间是创建这个用户时创建的。数据库默认临时表空间是在创建(create database)数据库时,使用default temporary table space子句指定。
  4. 撤销表空间
  5. 大文件表空间和小文件表空间

表空间作用

  1. 控制数据库所占用的磁盘空间
  2. 控制用户所占用的表空间配额,因此也就控制了用户所占用的空间配额
  3. 通过将不同表的数据、分区表的不同分区的数据放置到不同的表空间(或其中的数据文件)中,可以提高数据库的I/O性能,并有利于进行部分备份和恢复等管理工作
  4. 能够将一个表的数据和这个表的索引数据分别放置在不同的表空间(或其中的数据文件)中,同样可以提高数据库的I/O性能
  5. 可以将表空间设置成只读状态而保持大量的静态数据
  6. 表空间提供了一个备份和恢复的单位。Oracle提供了按表空间备份和恢复的功能

表空间状态

读写(Read-Write)
默认情况下所有的表空间都是读写状态。任何具有表空间配额并且具有适当权限的用户都可以读写表空间中的数据。
只读(Read-Only)
如果将表空间设置为只读状态,则任何用户(包括DBA)都无法向该表空间中写入数据,也无法修改表空间中已有的数据。这种限制与用户的权限无关。
将表空间设置成只读状态的主要目的:避免对数据库中的静态数据进行修改。使用户只能以SELECT方式查询只读数据,不能使用INSERT、UPDATE、DELECT等方式修改数据。由于只读表空间中的数据不会被修改,因此DBA只需要将只读表空间备份即可。如果数据库中保存的是只读数据,将这些数据保存在一个单独的表空间中,然后将这个表空间设置为只读状态,不仅能够提高数据的安全性,而且可以减轻DBA管理和维护工作量。
脱机状态(offline)
在有多个应用表空间的数据库中,DBA可以通过将某个应用表空间设置为脱机状态,使该表空间暂时不让用户访问。用户仍然可以访问数据库的其它表空间。也可以将某个处于脱机状态的表空间重新设置为联机状态。DBA可以通过设置改变联机或脱机状态。
0 0
原创粉丝点击