先给出一张图:
Oracle的逻辑和物理数据库结构及数据库概念1、由上面可以看出。Oracle数据库物理上上是由一系列的数据文件组成,而这些数据文件才是我们用户(当然也含创建数据库时,自动产生的控制文件)存储数据正真地方。
再通过逻辑上的表空间和物理上的数据文件进行衔接。从而实现逻辑和物理上关联。
2、我们平时安装Oracle数据库时,需要分两步,一步是安装Oracle数据库软件。一部分是创建数据库。这两个一定要分清楚。数据库软件只是用来管理Oracle数据库的。存放数据的地方即数据库文件datafile才是正真的数据库。
3、表空间和数据文件:
每个表空间均显示的创建一个或添加多个数据文件(这样便实现了物理上存储表空间的所有逻辑结构的数据。)而对于特殊的temporary表空间(临时表空间),则不需要创建数据文件 ,而是临时的文件。
数据文件则可以采用不同的支持的存储技术来进行物理存储。

逻辑上的数据库机构:
4、表空间 tablespace:
分为多个逻辑存储单元,这些单元成为表空间,用于第对相关逻辑结构或数据文件进行分组。例如,表空间一般会将一个应用程序的所有段分成一组,用来减缓管理操作。
5、数据块 block:
最小为2kB默认为8kB(若果数据库用于支持大型表或索引的数据仓库应用程序,最好设置较大的块),Oracle数据库的数据存储在“数据块”中,数据块是粒度最低的一级。一个数据块对应于磁盘中特定字节数数的物理空间,每个表空间的数据块大小是在表空间创造时指定的。数据库以Oracle数据块为单位使用和分配空闲数据库空间。
6、 区 extend:
逻辑上的数据库空间block的上一级是区。区是特定数量的相邻的Oracle数据块(通过一次分配获得),用于存储特定类型的信息。区中的Oracle数据块在逻辑上是相邻的,但在物理上可以分布在不同的磁盘位置。
7、段 segment:
一个段是某个逻辑结构分配的一组区。例如:
7.1数据段:每个非cluster的不按照索引组织的表都有一个数据段,但是外部表,全局临时表和分区表除外,这些表的每个表都有一个或多个段。表中的所有数据都存储在相应的数据段的区中,对于分区表,每个分区都有一个数据段。每个cluster也都有一个数据段 。cluster中每个表的数据都存储在cluster的数据段中。
7.2索引段:
每个索引都有一个索引段,存储其所有数据。对于分区索引,每个分区都有一个索引段。
7.3索引段:
系统会为每个数据库实例创建一个undo表空间。改表空间包含大量用于临时存储还原信息的还原段。还原段的信息用于生成一致性读的数据库信息,以便于在数据库恢复的过程中回退用户未提交的事物处理。
7.4临时段:
临时段是SQL语句需要临时工作区来完成执行临时由Oracle DB创建的。语句完成执行后,临时段的区将会返回到实例以被将来使用。当然用户自己也可以指定一个默认的临时表空间,或指定一个在数据库范围内使用的默认临时表空间。
7.5特别的方案对象:
如视图,程序包,触发器等等,虽然这些也是数据库对象,但不视为段。段 segment拥有单独的磁盘存储空间分配,其他对象则以行的形形式存储在系统元数据段中。
另外,Oracle服务器对表空间进行动态的分配,因此段中现有的区已经满了,则会再增加一些区。这是因为区是根据需要来分配的,因此段中的区在磁盘上可能相邻也可能不相邻,如上图右边。他们可以来自同一表空间的不同数据文件。
如有描述不对,请帮忙指出,谢谢。

相关文章: