表空間與數(shù)據(jù)文件是一個什么樣的關(guān)系?Create table 與 Create tabspace中的
STORAGE參數(shù),意義有何不同?其中Next 10k與數(shù)據(jù)文件中的AUTOEXTEND ON NEXT 10K又何不同
如下圖:
數(shù)據(jù)庫,表空間,數(shù)據(jù)文件是緊密關(guān)聯(lián)的,但它們有著重要的區(qū)別:
數(shù)據(jù)庫和表空間 一個Oracle數(shù)據(jù)庫由一個或多個叫做表空間的邏輯存儲單元組成,表空間存儲了所有數(shù)據(jù)庫的數(shù)據(jù)。
表空間和數(shù)據(jù)文件 在Oracle數(shù)據(jù)庫中的每一個表空間由一個或多個叫做數(shù)據(jù)文件的文件組成,文件是遵守Oracle 運行的操作系統(tǒng)的物理結(jié)構(gòu)。
數(shù)據(jù)庫和數(shù)據(jù)文件 數(shù)據(jù)庫的數(shù)據(jù)是集中存放在組成數(shù)據(jù)庫的每個表空間的數(shù)據(jù)文件中。例如,最簡單的Oracle數(shù)據(jù)庫應(yīng)該有一個表空間和一個數(shù)據(jù)文件。另一個數(shù)據(jù)庫可以有三個表空間,每一個可以有兩個數(shù)據(jù)文件(一共六個數(shù)據(jù)文件)。
1。一個表空間可以對應(yīng)多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能對應(yīng)一個表空間
2。CREATE TABLESPACE中定義的是儲存在該表空間的對象的缺省儲存參數(shù),包括表,如果你在CREATE TABLE中沒有定義STORAGE參數(shù),那么系統(tǒng)就是用CREATE TABLESPACE中定義的
3。數(shù)據(jù)文件中的AUTOEXTEND ON NEXT 10K是指數(shù)據(jù)文件滿了以后,文件擴展10K
STORAGE子句中Next 10k是指當(dāng)分配給一個對象的初始EXTENT滿了以后,再給它分配一個10K的EXTENT
涉及到數(shù)據(jù)庫的物理結(jié)構(gòu)和邏輯結(jié)構(gòu)。
首先,你需要明白的一點是:數(shù)據(jù)庫的物理結(jié)構(gòu)是由數(shù)據(jù)庫的操作系統(tǒng)文件所決定,每一個Oracle數(shù)據(jù)庫是由三種類型的文件組成:數(shù)據(jù)文件、日志文件和控制文件。數(shù)據(jù)庫的文件為數(shù)據(jù)庫信息提供真正的物理存儲。
每一個Oracle數(shù)據(jù)庫有一個或多個物理的數(shù)據(jù)文件(data file)。一個數(shù)據(jù)庫的數(shù)據(jù)文件包含全部數(shù)據(jù)庫數(shù)據(jù)。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表、索引等)的數(shù)據(jù)物理地存儲在數(shù)據(jù)庫的數(shù)據(jù)文件中。數(shù)據(jù)文件通常為*.dbf格式,例如:userCIMS.dbf。數(shù)據(jù)文件有下列特征:①、一個數(shù)據(jù)文件僅與一個數(shù)據(jù)庫聯(lián)系;②、一旦建立,數(shù)據(jù)文件只增不減;③、一個表空間(數(shù)據(jù)庫存儲的邏輯單位)由一個或多個數(shù)據(jù)文件組成。
其次,我們再來敘述一下Oracle的邏輯結(jié)構(gòu):Oracle的邏輯結(jié)構(gòu)包括表空間(tablespace),段(segment),數(shù)據(jù)塊(data block)以及模式對象(schema object)。
Oracle數(shù)據(jù)庫在邏輯上是由多個表空間組成的,表空間在物理上包含一個或多個數(shù)據(jù)文件。而數(shù)據(jù)文件大小是塊大小的整數(shù)倍;表空間中存儲的對象叫段,比如數(shù)據(jù)段,索引段和回退段。段由區(qū)組成,區(qū)是磁盤分配的最小單位。段的增大是通過增加區(qū)的個數(shù)來實現(xiàn)的。每個區(qū)的大小是數(shù)據(jù)塊大小的整數(shù)倍,區(qū)的大小可以不相同;數(shù)據(jù)塊是數(shù)據(jù)庫中的最小的I/O單位,同時也是內(nèi)存數(shù)據(jù)緩沖區(qū)的單位,及數(shù)據(jù)文件存儲空間單位。塊的大小由參數(shù)DB_BLOCK_SIZE設(shè)置,其值應(yīng)設(shè)置為操作系統(tǒng)塊大小的整數(shù)倍。
⑴、表空間(tablespace)
表空間是數(shù)據(jù)庫中最大的邏輯單位,每一個表空間由一個或多個數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只能與一個表空間相聯(lián)系。每一個數(shù)據(jù)庫都有一個SYSTEM表空間,該表空間是在數(shù)據(jù)庫創(chuàng)建或數(shù)據(jù)庫安裝時自動創(chuàng)建的,用于存儲系統(tǒng)的數(shù)據(jù)字典表,程序系統(tǒng)單元,過程函數(shù),包和觸發(fā)器等,也可用于存儲用戶數(shù)據(jù)表,索引對象。表空間具有在線(online)和離線(offline)屬性,可以將除SYSTME以外的其他任何表空間置為離線。
⑵、段(segment)
數(shù)據(jù)庫的段可以分為四類:數(shù)據(jù)段、索引段、回退段和臨時段。
⑶、區(qū)
區(qū)是磁盤空間分配的最小單位。磁盤按區(qū)劃分,每次至少分配一個區(qū)。區(qū)存儲與段中,它由連續(xù)的數(shù)據(jù)塊組成。
⑷、數(shù)據(jù)塊
數(shù)據(jù)塊是數(shù)據(jù)庫中最小的數(shù)據(jù)組織單位與管理單位,是數(shù)據(jù)文件磁盤存儲空間單位,也是數(shù)據(jù)庫I/O的最小單位,數(shù)據(jù)塊大小由DB_BLOCK_SIZE參數(shù)決定,不同的Oracle版本DB_BLOCK_SIZE的默認(rèn)值是不同的。
⑸、模式對象
模式對象是一種應(yīng)用,包括:表、聚簇、視圖、索引序列生成器、同義詞、哈希、程序單元、數(shù)據(jù)庫鏈等。
最后,在來說一下Oracle的用戶、表空間和數(shù)據(jù)文件的關(guān)系:
一個用戶可以使用一個或多個表空間,一個表空間也可以供多個用戶使用。用戶和表空間沒有隸屬關(guān)系,表空間是一個用來管理數(shù)據(jù)存儲的邏輯概念,表空間只是和數(shù)據(jù)文件發(fā)生關(guān)系,數(shù)據(jù)文件是物理的,一個表空間可以包含多個數(shù)據(jù)文件,而一個數(shù)據(jù)文件只能隸屬一個表空間。
總結(jié)一下:解釋數(shù)據(jù)庫、表空間、數(shù)據(jù)文件、表、數(shù)據(jù)的最好辦法就是想象一個裝滿東西的柜子。數(shù)據(jù)庫其實就是柜子,柜中的抽屜是表空間,抽屜中的文件夾是數(shù)據(jù)文件,文件夾中的紙是表,寫在紙上的信息就是數(shù)據(jù)。