Oracle存储结构总结

前端之家收集整理的这篇文章主要介绍了Oracle存储结构总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
今天我们总结一下ORACLE的存储结构,跟其他存储一样,ORACLE数据文件也需要存储在文件中,但是为了方便管理,ORACLE为我们做了比较好理解的逻辑结构,通过逻辑结构来免除直接与底层的存储直接接触。ORACLE为我们提供了表空间,表空间是数据库的逻辑组成部分。从物理上讲,数据是存放在数据文件中的,而从逻辑上讲,数据是存放在表空间中的,一个表空间有若干个数据文件组成。把oracle数据库看作一个大楼(数据库),表空间可以看作这个楼房的各个楼层(表空间),每个楼层又有单独的房间(数据文件),单独的房间可以住人或者是储物(表结构),表空间和数据文件是可以自由分配的。用户指定表空间也就是你希望把属于这个用户的表放在那个房间(表空间)里面。
  数据库的逻辑结构
Oracle中的逻辑结构包括:表空间、段、区、块。

  数据库是由表空间构成,而表空间由段构成,段又由区构成,最后区又由Oracle块构成。这样分级是为了提高数据库的效率。数据库就好比一个国家,为了方便管理,我们将国家分为省,省又分为市,依次类推。Oracle也是如此,表空间的设计大大提高了数据库的效率,表空间能:1)控制数据库占用的磁盘空间大小;2)dba可以将不同的数据类型部署到不同的位置,这样有利于提高I/O性能,同时利于备份和恢复等操作。

数据段segment
数据段是与数据库对象相对应,一般一个数据库对象对应一个数据段。多个extent是对应一个数据段,每个数据段实际上就是数据库一个对象的代表。从dba_segments视图中,可以比较清楚看清数据段的结构从segment_type列的comment信息中,可以看出数据段的类型是多样的。任何种类的数据库对象,本质上都是一种数据段。数据表、索引、回滚、聚集这些都是数据段的一种表现形式。同时,数据段是在数据对象创建的时候就已经创建出来,随着对象体积的增大,而不断分配多个extents进行管理。另一部分信息可以从dba_segments中读出的,就是该数据对象分配的空间大小和数据块、分区个数。使用这个视图,可以方便的获取到指定schema的所有对象大小。一个对象创建出来之后,在segment层次上是分配一个分区extent和八个数据块block。有一个问题需要注意,通常我们的数据段是与数据对象相关。一个数据对象对应一个segment。但是,分区表的时候,一个分区要对应一个segment对象。还有就是,segment对象是可以指定存储在那个表空间里,实现存储划分的基础也就在于此。不同类型的segment划分建立在不同的表空间里,才有可能存放在不同的文件中,最后分布在不同的物理存储。分区实际上就是存在分开存储的可能。一般一个对象是不会跨物理存储进行存放的,分区表是对应的多个segment。所以,分区表分开存储空间是可能的。

区extent
区extent是比数据块大一级的存储结构,表示的是一连串连续的数据块集合。我们知道,物理存储通常是随机的读写过程。即使在同一个文件里,我们也不能保证相同的一个信息是存储在绝对连续的物理存储空间的。Oracle数据存储同样如此。
在进行存储数据信息的时候,Oracle将分配数据块进行存储,但是不能保证所有分配的数据块都是连续的结构。所以,出现分区extent的概念,表示一系列连续的数据块集合。

数据块(Block) 数据块Block是Oracle存储数据信息的最小单位。注意,这里说的是Oracle环境下的最小单位。Oracle也就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是Windows环境,还是Unix/Linux环境,他们的操作系统存储结构和方式、甚至字符排列的方式都是不同的。Oracle利用数据块将这些差异加以屏蔽,全部数据操作采用对Oracle块的操作,相当于是一个层次的抽象。 Oracle所有对数据的操作和空间分配,实际上都是针对数据块Block的操作。我们从数据表中搜索出一行,实际中Oracle就会从内存缓冲区(或者硬盘)中读取到该行所在的数据块,再返回这数据块上的指定数据行。Oracle无论是在缓冲区,还是在硬盘,进行数据操作的虽小单位也就是数据块。数据块是有大小的,在一个数据库建立的时候,通过参数进行设置。注意,在Oracle数据库参数中,只有数据块大小的参数是建库之后不能进行修改的。数据块的大小,在一个数据库中可以支持多个,但是一般没有太大的意义,会给管理和调试带来一定的负担。数据块的大小是通过kb字节个数来指定的,默认为8KB。相关参数为db_block_size,下面是查看block大小的语句。

原文链接:/oracle/206503.html

猜你在找的Oracle相关文章