Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Oracle表空间(tablespaces)简介大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

表空间属性:

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

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

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

Oracle数据库的存储结构:

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

  那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由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-managedtablespaces)

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

本地管理表空间locallymanagedtablespace

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

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

Undotablespace

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

创建undo类型的表空间

sql>createundotablespaceundo1DATAFILE'/ora10/product/oradata/ora10/paul01.dbf'size20m;

 

Temporarytablespaces

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

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

创建临时表空间

createtemporarytablespaCETempDATAFILE'/ora10/product/oradata/ora10/paul01.dbf'size20mextentmanagementlocaluniformsize4m;

  

删除表空间:

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

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

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

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

例:

DROPtableSPACEFESCO‘表空间名’CONTENTSANDDATAFILESCASCADECONSTraiNTS;

大佬总结

以上是大佬教程为你收集整理的Oracle表空间(tablespaces)简介全部内容,希望文章能够帮你解决Oracle表空间(tablespaces)简介所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: