Oracle大的存储层次体系,Oracle 数据库中的逻辑存储层次体系
數(shù)據庫由一個或多個表空間構成。表空間(tablespace)是 Oracle 中的一個邏輯存儲容器,位于存
儲層次體系的頂層,包括一個或多個數(shù)據文件。這些文件可能是文件系統(tǒng)中的 cooked 文件、原始分區(qū)、ASM管理的數(shù)據庫文件,或者是集群文件系統(tǒng)上的文件。
表空間
前面已經提到,表空間是一個容器,其中包含有段。每個段都只屬于一個表空間。一個表空間中可能有多個段。一個給定段的所有區(qū)段都在與段相關聯(lián)的表空間中。段 絕對不會跨越表空間邊界。表空間本身可以有一個或多個相關的數(shù)據文件。表空間中給定段的一個區(qū)段完全包含在一個數(shù)據文件中。不過,段
可以有來自多個不同數(shù)據文件的區(qū)段。
表空間包含段
段(segment),這是表空間中主要的組織結構。段(segment)就是占用存儲空間的數(shù)據庫對象,如表、索引、回滾段等。創(chuàng)建表時,會創(chuàng)建一個表段。創(chuàng)建分區(qū)表時,則每個分區(qū)會創(chuàng)建一個段。
創(chuàng)建索引時,就會創(chuàng)建一個索引段,依此類推。占用存儲空間的每一個對象最后都會存儲在一個段中,此外還有回滾段(rollback segment)、臨時段 ( temporary segment)、聚簇段 ( clustersegment)、索引段 ( index segment)等。
注意:上面有這樣一句話:
“占用存儲空間的每一個對象最后都會存儲在一個段中”,這可能會把你搞糊涂。你會發(fā)現(xiàn)許多 CREATE 語句能創(chuàng)建多段的對象。之所以會產生困惑,原因是一條 CREATE 語句最后創(chuàng)建的對象可能包含 0 個、1 個或多個段!
例如,CREATE TABLE T ( x int primary key, yclob)就會創(chuàng)建 4 個段:一個是 TABLE T 的段,還有一個段對應索引(這個索引是為支持主鍵而創(chuàng)建的),另外還有兩個 CLOB 段(一個 CLOB 段是 LOB 索引,另一個段是 LOB 數(shù)據本身)。
與之不同 ,CREATE TABLE T ( x int, y date ) cluster MY_CLUSTER 則不會創(chuàng)建任何段。第 10 章還會更深入地討論這個概念。
段本身又由一個或多個區(qū)段組成
區(qū)段(extent)是文件中一個邏輯上連續(xù)分配的空間。區(qū)段的大小可能不同,可以是一個 Oracle 數(shù)據塊,也可以大到 2 GB。
區(qū)段又進一步由塊組成。
塊(block)是 Oracle 中最小的空間分配單位。數(shù)據行、索引條目或臨時排序結果就存儲在塊中。通常 Oracle 從磁盤讀寫的就是塊。Oracle 中塊的常見大小有 4 種:2 KB、4 KB、8KB 或 16 KB(盡管在某些情況下 32 KB 也是允許的;但是操作系統(tǒng)可能對最大大小有限制)
總結
以上是生活随笔為你收集整理的Oracle大的存储层次体系,Oracle 数据库中的逻辑存储层次体系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle按时间导出,如何为Oracl
- 下一篇: spm oracle cloud,ora