Oracle表空间(tablespaces)(键人岐)

转载 2013年12月04日 09:50:19

 我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间。

表空间属性:

一个数据库可以包含多个表空间,一个表空间只能属于一个数据库

一个表空间包含多个数据文件,一个数据文件只能属于一个表空间

表这空间可以划分成更细的逻辑存储单元

 

Oracle数据库的存储结构:

 

 

  从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。

  那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。

 

 

Segment(段) :段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

 

Extent (区间)分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象.

查看表空间:

复制代码
  SQL> select * from v$tablespace;
  
      TS#        NAME       INCLUD   BIGFIL   FLASHB    ENCRYP
  ---------- ------------------------------------------------------------ ------------ ------ ------
     0        SYSTEM        YES       NO       YES
     1        UNDOTBS1      YES       NO       YES
     2        SYSAUX        YES       NO       YES
      4        USERS         YES        NO       YES
     3        TEMP          NO        NO       YES
复制代码

查看每个表空间有哪些数据文件:

复制代码
  SQL> desc dba_data_files;
   Name                                      Null?    Type
   ----------------------------------------- -------- ----------------------------
   FILE_NAME                                          VARCHAR2(513)
   FILE_ID                                            NUMBER
   TABLESPACE_NAME                                    VARCHAR2(30)
   BYTES                                              NUMBER
   BLOCKS                                             NUMBER
   STATUS                                             VARCHAR2(9)
   RELATIVE_FNO                                       NUMBER
   AUTOEXTENSIBLE                                     VARCHAR2(3)
   MAXBYTES                                           NUMBER
   MAXBLOCKS                                          NUMBER
   INCREMENT_BY                                       NUMBER
   USER_BYTES                                         NUMBER
   USER_BLOCKS                                        NUMBER
   ONLINE_STATUS                                      VARCHAR2(7)
复制代码

查看详细数据文件:

复制代码
SQL> select file_name,tablespace_name from dba_data_files;
  
  FILE_NAME                                            TABLESPACE_NAME
  ----------------------------------------------------------------------------------------------------------------
  /ora10/product/oradata/ora10/users01.dbf                        USERS
  /ora10/product/oradata/ora10/sysaux01.dbf                        SYSAUX
  /ora10/product/oradata/ora10/undotbs01.dbf                        UNDOTBS1
   /ora10/product/oradata/ora10/system01.dbf                        SYSTEM
复制代码

创建一个表空间:

 SQL> create tablespace paul datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;
  
Tablespace created.  

查看我们创建的表空间:

[ora10@localhost ora10]$ pwd
  /ora10/product/oradata/ora10
  [ora10@localhost ora10]$ ls
  control01.ctl  control03.ctl  redo01.log  redo03.log    system01.dbf  undotbs01.dbf
  control02.ctl  paul01.dbf     redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf

 

表空间根据对区间(extents)的管理分为两种类型

 

词典管理表空间(Dictionary-managed tablespaces)

    在表空间里,有的区间被占用了,有的没被占用,这些数据是放在数据字典里的。当你对这个表空间进行分配或释放的时候,数据文件里相关的表就会做修改。

 

本地管理表空间locally managed tablespace

      本地管理表空间不是在数据词典里存储表空间的,由自由区管理的表空间。用位图来自由的管理区间。一个区间对一个位,如果这个位是1表示已经被占用,0表示未被占用。

  词典管理空间表示“中央集权治”,本地管理表空间表示“省市自治区”,一个databases表示中国,tablespaces表示一个省或直辖市。词典管理统一由中央调配。而本地管理表示有高度的自治权利,自已各种资源的分配不用上报中央。

 

 

Undo  tablespace

  Undo 类型的表空间,当你对一张表或一条记录进行修改的时候,它会对修改之前的信息进行保存,这样可以保证数据的回滚。Undo 只包含undo类型的对象,不能包含任何其他对象,只适合于数据文件和区间管理。

创建undo 类型的表空间:

 SQL>create undo tablespace  undo1 datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;

 

 

Temporary  Tablespaces

   临时表空间,相当于一个临时的垃圾场。用于排序操作,比如你要做一次大数据量的查询,但在内存无法存储这么大量的数据,然后会在磁盘上建立一个临时的表空间用记存放这些数据。Oracle就会用这个临时表空间做排序,存储中间结果。

一个全局的临时表空间,可以由多个用户共享,谁需要谁使用。但它只能存放临时的数据,不能包含任何永久性对象。 建议用本地管理方式创建这个表空间。

创建临时表空间:

 SQL>create temporary tablespace  temp datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m  extent management local uniform size 4m;

  

删除表空间:

删除表空间,使用命令drop tablespace ‘表空间名’  但是有3个选项需要注意: 

INCLUDING CONTENTS:指删除表空间中的segments; 

INCLUDING CONTENTS AND DATAFILES:指删除segments和datafiles; 

CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。

例:

DROP TABLESPACE FESCO ‘表空间名’ CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

查询某表空间被哪些用户所使用

原创作品,出自 “深蓝的blog” 博客,深蓝的blog:   昨天为测试的妹子如何查查出表空间都被哪些用户使用的方法,给了几个建议。小费了几个周折,怪自己开始的时候情况考虑的不周全,不过总体上还好,...
  • huangyanlong
  • huangyanlong
  • 2015年07月16日 15:24
  • 2898

oracle用exp\imp导出导入,及创建表空间与用户

oracle exp导出表结构: exp username/pwd@sid file=D:\db1.dmp owner=(username) rows=n; 上面命令,将rows=n参数去掉,会将...
  • kuangfengbuyi
  • kuangfengbuyi
  • 2015年04月03日 17:41
  • 4874

Oracle表空间(tablespaces)简介

我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files ...
  • truelove12358
  • truelove12358
  • 2017年04月19日 10:11
  • 156

Oracle表空间(tablespaces)详解

Oracle表空间(tablespaces) 我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑...
  • Sun_P0
  • Sun_P0
  • 2015年11月03日 13:03
  • 236

oracle教程之Oracle关于表空间(tablespaces)

Oracle表空间(tablespaces) Posted on 2012-08-12 14:35 虫师 阅读(2700) 评论(3) 编辑 收藏     我们知道oarcle数据库真正存放数据...
  • haiross
  • haiross
  • 2014年01月17日 16:29
  • 624

ORACLE收缩表空间

最近导一个空库到数据库后,发现占用的表空间非常大,执行表收缩(SHRINK SPACE CASCADE)后,发现实际占用的空间不到1%。 但是收缩表空间大小提示错误     ALTER DATAB...
  • aptweasel
  • aptweasel
  • 2013年05月29日 11:05
  • 29241

Oracle 表空间详解

目录目录 表空间概述 表空间的分类 默认表空间 查看默认的永久表空间 查看默认的TEMP表空间 查看默认的表空间类型 逻辑结构到物理结构的映射 对表空间的操作 查看表空间使用情况 查看数据库拥有的表空...
  • Jmilk
  • Jmilk
  • 2016年06月07日 00:28
  • 20029

oracle表空间类型

表空间可以按4种方式分类 一、按数据文件的类型,分为: 大文件表空间(bigfile tablespace)此为10g新增功能 小文件表空间(smallfile tablespace)此为创建时...
  • lu8000
  • lu8000
  • 2013年05月24日 16:50
  • 1736

Oracle 删除表中记录 如何释放表及表空间大小

1.查看一个表所占的空间大小: SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_...
  • xixi_666
  • xixi_666
  • 2015年09月02日 16:17
  • 6630

oracle 的数据库、表空间、表是什么关系

oracle 数据库就是指的oracle 整体,一般一个机器上只安装一个oracle数据库 oracle建立好以后,实际上oracle是一个一个的DBF文件,然后N个DBF文件组成一个表空间 你的...
  • u010599762
  • u010599762
  • 2014年12月02日 19:08
  • 1611
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle表空间(tablespaces)(键人岐)
举报原因:
原因补充:

(最多只允许输入30个字)