Oracle表空间(tablespaces)

标签: oracle 空间 tablespaces | 发表时间:2012-08-12 14:35 | 作者:虫师
出处:http://www.cnblogs.com/

 

  我们知道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;

  

本文链接

相关 [oracle 空间 tablespaces] 推荐:

Oracle表空间(tablespaces)

- - 博客园_首页
  我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间. 一个数据库可以包含多个表空间,一个表空间只能属于一个数据库. 一个表空间包含多个数据文件,一个数据文件只能属于一个表空间.

oracle 表空间操作

- - 数据库 - ITeye博客
1.通过sql plus 命令登录数据库.   在命令行下输入sqlplus “登录用户名/口令 as 登录类型”就可以登录,系统内建的用户名常用的是sys,密码是在安装oracle过程中设置的密码,清务必牢记,如果用sys帐户登录,登录类型一定要是sysdba. 2.查看各表空间分配情况. 3.查看各表空间空闲情况.

Oracle修改表空间大小

- - 数据库 - ITeye博客
1.通过sql plus 命令登录数据库.   在命令行下输入sqlplus “登录用户名/口令 as 登录类型”就可以登录,系统内建的用户名常用的是sys,密码是在安装oracle过程中设置的密码,清务必牢记,如果用sys帐户登录,登录类型一定要是sysdba. 2.查看各表空间分配情况. 3.查看各表空间空闲情况.

Oracle字段占用空间测试

- - 数据库 - ITeye博客
插入110W条数据,只插入grade字段. 用truncate table amwu_graderecord 重新插入数据. insert into amwu_graderecord(grade,sno,sname,dormitory) select rownum, '小李子小李子', '小李子小李子', '小李子小李子' from dual connect by level<=1100000;.

Oracle 如何释放数据库空间

- - 数据库 - ITeye博客
        当需要释放数据库空间的时候,通常的方案会用有truncate、delete、drop/re-creating等处理. 其中truncate 后会立即释放,并且不能回滚;但delete不能立即释放数据库空间,还会产生archive log.     如: Truncate table xxxx; 我们可以直接去查user_segments对应table的bytes就变小,数据库空间释放,并且不能回滚.

Oracle中临时表空间的清理

- - CSDN博客推荐文章
作者:iamlaosong. Oracle临时表空间主要用来做查询和存放一些缓冲区数据. 临时表空间消耗的主要原因是需要对查询的中间结果进行排序. 索引create或rebuild. Order by 或 group by. Union 或 intersect 或 minus. 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长.

Oracle DB 执行表空间时间点恢复

- - CSDN博客推荐文章
• 列出在执行表空间时间点恢复(TSPITR) 时会发生的操作. • 阐释TSPITR 使用的术语的定义. • 确定适合将TSPITR 用作解决方案的情况. • 确定时间点恢复的正确目标时间. • 确定不能使用TSPITR 的情况以及解决方法. 表空间时间点恢复(TSPITR):概念. • 通过执行TSPITR 可将一个或多个表空间快速恢复到以前的某个时间.

Oracle 各种删除操作对空间返还的说明

- - IT技术博客大学习
标签:   oracle   空间. Oracle 各种删除操作对空间返还的说明. 操作 表空间是否回收空间. 文件系统或ASM是否回收空间. 在本地管理表空间(LMT 9i以后)是否造成表空间碎片. 在字典管理表空间(DMT 9i以前)是否造成表空间碎片. 注意现在的oracle版本不太可能用DMT 是否造成索引碎片.

(总结)Oracle 11g常用管理命令(用户、表空间、权限)

- - 服务器运维与网站架构|Linux运维|X研究
PS:下面是Oracle 11g最常用的基本管理命令,包括创建用户、表空间,权限分配等. 以下命令本人都验证操作过,加上了本人的小结说明. 从root切换到oracle用户进入:. 进入sqlplus环境,nolog参数表示不登录:. 注:要把Linux下的Oracle配置成服务自启动,请看:. (原创)CentOS Linux下配置Oracle 11gR2为系统服务自动启动.

oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)详解

- - Oracle - 数据库 - ITeye博客
    数据文件和日志文件是数据库中最重要的文件. 每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多. 要了解这些内容我们首先必须理解什么是表空间(tablespace)、段(segment)、区(extent)、块(block),这些都是oracle数据库在数据文件中组织数据的基本单元.