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

解决方案 »

  1.   

    分区表这里的区,指的是存储的区partition的意思。segment里的extent不好翻译,我翻译为扩展,两个是不同的含义。
      

  2.   

    说区之前,应该先说‘块’:数据块是oracle中最小的存储单元,oracle中的所有数据文件都是以数据块来作为单位进行管理的。
    而oracle逻辑组件中的‘区’,指的是为上面提到的‘块’分配空间,也就是说‘区’是由很多个数据‘块’组成的。所以‘区’是不跨越数据文件存在的,一个‘区’只能存在于一个文件,因为分开的‘块’肯定就不是一个‘块’了。然后再说‘段’,段是由很多‘区’组成的,是表空间的逻辑存储结构。
    -----------------
    一般表都是存在一个‘段’上,而我们常说的分区表,其实就是可以把表存储到多个‘段’上,然后通过索引更快速的查找数据!
    所以此‘区’非彼‘区’!!