日期:2014-05-17  浏览次数:20744 次

Oracle数据的分区理论问题
刚刚接触Oracle,有点小问题弄不明白
开始学Oracle体系结构的时候,老师讲Oracle数据库的逻辑组件
数据库->表空间->段->区->块,说“区”只能存在一个数据文件中,而一个数据文件只能和一个表空间想关联,那么是不是就是一个区只能存在于一个表空间中?
而今天老师讲分区表的时候,有说一个表可以分为多个区,每个区可以存在于不同的表空间上,我又点弄不懂了?
请师兄师姐们帮我讲一讲,“数据库->表空间->段->区->块”这个中的“区”和分区表那个“区”是同一个意义的“区”吗?
如果不是,能不能帮我说说这两个区有什么区别?

------解决方案--------------------
1、是的
2、这儿的表分区与上面的盘区是不同的,是两个概念!

实际上一个分区就是一个段,所以一个表的分区可以包含很多个盘区!!
------解决方案--------------------
1、一个区只能在一个表空间内。
2、表的分区与磁盘分区是不同的。
3、不是同一个区的,一个表的分区可以包含多个盘区的。
------解决方案--------------------
分区表这里的区,指的是存储的区

partition的意思。

segment里的extent不好翻译,我翻译为扩展,两个是不同的含义。
------解决方案--------------------
说区之前,应该先说‘块’:数据块是oracle中最小的存储单元,oracle中的所有数据文件都是以数据块来作为单位进行管理的。
而oracle逻辑组件中的‘区’,指的是为上面提到的‘块’分配空间,也就是说‘区’是由很多个数据‘块’组成的。所以‘区’是不跨越数据文件存在的,一个‘区’只能存在于一个文件,因为分开的‘块’肯定就不是一个‘块’了。

然后再说‘段’,段是由很多‘区’组成的,是表空间的逻辑存储结构。
-----------------
一般表都是存在一个‘段’上,而我们常说的分区表,其实就是可以把表存储到多个‘段’上,然后通过索引更快速的查找数据!
所以此‘区’非彼‘区’!!