邏輯儲存體結構

本章描述邏輯儲存體結構之間的性質與關係。這些結構由 Oracle AI Database 建立和辨識,且作業系統不清楚。

邏輯儲存體結構簡介

Oracle AI Database 會為資料庫中的所有資料配置邏輯空間。

資料庫空間配置的邏輯單位是資料區塊、擴充區塊、區段及表格空間。而在實體層次上,資料會儲存在磁碟上的資料檔中。資料檔中的資料都儲存在作業系統區塊中。

下圖是實體與邏輯儲存的實體關係圖。群眾的註腳表示法代表一對多關係。

圖 1:邏輯與實體儲存

cncpt227.gif 圖解描述

邏輯儲存階層

區段包含一或多個擴充區塊,每個擴充區塊都包含多個資料區塊。

下圖顯示表格空間內資料區塊、擴充區塊以及區段之間的關係。在此範例中,一個區段會有兩個儲存在不同資料檔中的擴充區塊。

圖 2:表格空間內的區段、擴充區塊以及資料區塊

cncpt027.gif 圖解描述

Oracle AI Database 將資料從最低層級儲存到最高層級,如下所示:

另請參閱:「實體儲存結構簡介」

邏輯空間管理

Oracle AI Database 必須使用邏輯空間管理來追蹤和配置表格空間中的擴充區塊。

當資料庫物件需要擴充區塊時,資料庫就必須要有找到和提供它的方法。同樣地,當物件不再需要擴充區塊時,資料庫必須要有讓可用擴充區塊的方法。

Oracle AI Database 會根據您建立的類型來管理表格空間內的空間。您可以建立下列其中一種表格空間類型:

圖 15-3 顯示表格空間中邏輯空間管理的替代方法。

圖 3:邏輯空間管理

cncpt268.gif 圖解描述

本機管理的表格空間

本機管理的表格空間會在資料檔標頭中維護位元映射,以追蹤資料檔主體中可用與已使用的空間。

每個位元都對應到一組區塊。配置空間或釋出空間時,Oracle AI Database 會變更位元映射值,以反映區塊的新狀態。

下圖是點陣圖管理儲存的概念性表示法。標頭中的 1 是指已使用的空間,而 0 則是指可用空間。

圖 4:點陣圖管理的儲存

cncpt332.gif 圖解描述

本機管理的表格空間有下列優點:

區段空間管理是繼承自包含區段之表格空間的屬性。在本機管理的表格空間中,資料庫可以自動或手動管理區段。例如,當表格空間 tools 中的區段以手動方式管理時,可以自動管理表格空間 users 中的區段。

自動對談空間管理

自動區段空間管理 (ASSM) 方法使用位元映射來管理表格空間中的空間。

點陣圖提供下列優點:

ASSM 較有效率,並且是永久、本機管理之表格空間的預設值。

注意:本章假設 ASSM 在其邏輯儲存空間的所有討論中使用。

手動區隔空間管理

舊有的手動區段空間管理 (MSSM) 方法會使用稱為可用清單的連結清單來管理區段中的可用空間。

對於具有可用空間的資料庫物件,可用清單會追蹤高水位標記 (HWM) (HWM) 底下的區塊,亦即已使用且尚未使用的區段空間之間的分隔線。使用區塊時,資料庫會視需要將區塊置於可用清單中或從可用清單中移除區塊。

除了 PCTFREE 之外,MSSM 還需要您控制 SQL 參數 (例如 PCTUSED、FREELISTS 和 FREELIST GROUPS) 的空間配置。PCTUSED 會設定資料庫目前使用之區塊中必須存在的可用空間百分比,以將它放到可用清單中。例如,如果您在 CREATE TABLE 敘述句中將 PCTUSED 設為 40,則在使用少於 40% 的區塊空間之前,無法將資料列插入區段中的區塊中。

例如,假設您在表格中插入一列。資料庫會檢查表格的可用清單,以取得第一個可用的區塊。如果資料列不適合區塊,且區塊中的已使用空間大於或等於 PCTUSED,則資料庫會從清單中移除區塊並搜尋另一個區塊。如果您刪除區塊中的資料列,則資料庫會檢查區塊中的已使用空間現在是否小於 PCTUSED。如果是,資料庫會將區塊置於可用清單的開頭。

一個物件可以有多個可用清單。如此一來,在表格上執行 DML 的多個階段作業可以使用不同的清單,以減少競爭。每個資料庫階段作業在其階段作業期間只會使用一個可用清單。

如圖 15-5 所示,您也可以建立一或多個可用清單群組的物件,這是可用清單的集合。每個群組都有一個主要可用清單,可管理群組中的個別處理可用清單。可用清單的空間負荷 (特別是可用清單群組) 可能相當重要。

圖 5:可用清單群組

cncpt320.gif 圖解描述

手動管理區段空間可能會很複雜。您必須調整 PCTFREE 和 PCTUSED 以減少資料列移轉,並避免浪費空間。例如,如果區段中每個已使用的區塊都已滿一半,且如果 PCTUSED 為 40,則資料庫不允許插入任何這些區塊。由於微調空間配置參數的困難,Oracle 強烈建議 ASSM。在 ASSM 中,PCTFREE 會決定是否可以將新資料列插入區塊中,但不會使用可用清單並忽略 PCTUSED。

另請參閱:

字典管理的表格空間

說明管理的表格空間會使用資料說明來管理其擴充區塊。

每當配置或釋出擴充區塊以供重複使用時,Oracle AI Database 會更新資料說明中的表格。例如,當表格需要擴充區塊時,資料庫會查詢資料說明表格,並搜尋可用的擴充區塊。如果資料庫找到空間,就會修改一個資料說明表格,並在另一個資料列中插入一個資料列。如此一來,資料庫就可以透過修改與移動資料來管理空間。

資料庫在背景執行以取得資料庫物件空間的 SQL 是遞迴 SQL 。遞迴 SQL 的經常使用會對效能造成負面影響,因為必須序列化對資料說明的更新。本機管理的表格空間 (預設值) 可避免此效能問題。

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何將表格空間從字典管理移轉至本機管理

資料區塊總覽

Oracle AI Database 管理資料庫資料檔中的邏輯儲存空間 (稱為資料區塊的單位),也稱為 Oracle 區塊或頁面。資料區塊是資料庫 I/O 的最小單位。

資料區塊與作業系統區塊

在實體層次上,資料庫資料會儲存在由作業系統區塊組成的磁碟檔案中。

作業系統區塊是作業系統可以讀取或寫入的最小資料單位。相反地,Oracle 區塊是邏輯儲存體結構,其大小和結構不被作業系統所知。

下圖顯示作業系統區塊的大小可能與資料區塊不同。資料庫會以多個資料區塊要求資料,而非作業系統區塊。

圖 6:資料區塊與作業系統區塊

cncpt293.gif 圖解描述

資料庫要求資料區塊時,作業系統會將此作業轉譯為永久儲存體中資料的要求。資料區塊與作業系統區塊的邏輯區隔具有下列考量:

資料庫區塊大小

每個資料庫都有一個資料庫區塊大小。

DB_BLOCK_SIZE 初始化參數會在建立資料庫時設定資料庫的資料區塊大小。設定 SYSTEM 和 SYSAUX 表格空間的大小,是所有其他表格空間的預設值。除非重新建立資料庫,否則無法變更資料庫區塊大小。

如果未設定 DB_BLOCK_SIZE,則預設資料區塊大小為作業系統特定大小。資料庫的標準資料區塊大小是 4 KB 或 8 KB。如果資料區塊與作業系統區塊的大小不同,則資料區塊大小必須是作業系統區塊大小的倍數。

另請參閱:

表格空間區塊大小

您可以建立區塊大小與 DB_BLOCK_SIZE 設定不同的個別表格空間。

將可傳輸表格空間移到其他平台時,非標準區塊大小就很有用。

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何指定表格空間的非標準區塊大小

資料區塊格式

每個資料區塊都有一個格式或內部結構,讓資料庫可以追蹤區塊中的資料與可用空間。此格式類似於資料區塊是否包含表格、索引或表格叢集資料。

下圖顯示未壓縮資料區塊的格式。

圖 7:資料區塊格式

cncpt028.gif 圖解描述

資料區塊超載

Oracle AI Database 使用阻隔負荷來管理區塊本身。區塊超載無法儲存使用者資料。

如「資料區塊格式」所示,區塊超載包含下列部分:

區塊負荷的某些部分是固定大小,但總大小是可變的。區塊超載平均為 84 到 107 個位元組。

資料列格式

區塊的資料列資料部分包含實際的資料,例如表格資料列或索引索引鍵項目。就像每個資料區塊都有內部格式,每一列都有一個資料列格式,讓資料庫能夠追蹤資料列中的資料。

Oracle AI Database 將列儲存為可變長度記錄。列包含在一或多個區段中。每個區段都稱為資料列片段。每個資料列片段都有一個資料列標頭與資料欄資料。

下圖顯示資料列的格式。

圖 8:列塊的格式

cncpt043.gif 圖解描述

資料列標頭

Oracle AI Database 使用資料列標頭來管理儲存在區塊中的資料列片段。

資料列標頭包含下列資訊:

一個區塊中完全包含的資料列至少有 3 個位元組的資料列標頭。

另請參閱:

資料欄資料

在列標頭之後,欄資料區段會將實際資料儲存在列中。資料列片段通常會以 CREATE TABLE 敘述句中所列的順序儲存資料欄,但是不保證此順序。例如,會在最後建立類型為 LONG 的資料欄。

如資料列格式圖所示,Oracle AI Database 會針對資料列片段中的每個資料欄分別儲存資料欄長度與資料。所需的空間視資料類型而定。如果資料欄的資料類型為變數長度,則保留值所需的空間可能會隨著資料的更新而成長與縮小。

每一列在資料區塊標頭的資料列目錄中都有一個插槽。槽位指向資料列的開頭。

另請參閱:「表格儲存體」和「索引儲存體」

Rowid 格式

Oracle AI Database 使用 rowid 來唯一識別資料列。資料列 ID 內部是保存資料庫存取資料列所需之資訊的結構。資料列 ID 實際不會儲存在資料庫中,而是會從儲存資料的檔案與區塊來推斷。

延伸的列 ID 包含資料物件號碼。此 rowid 類型會針對每一列使用實體地址的基準 64 編碼。編碼字元為 A-Z、a-z、0-9、+ 和 /。

範例 15-1 ROWID Pseudocolumn

下列範例會查詢 ROWID 虛擬資料欄,以顯示員工 100 之 employees 表格中資料列的擴充資料列 ID:

SQL> SELECT ROWID FROM employees WHERE employee_id = 100;

ROWID
------------------
AAAPecAAFAAAABSAAA

下圖說明擴充 rowid 的格式。

圖 9:ROWID 格式

cncpt249.gif 圖解描述

延伸的 rowid 會以 OOOOOOFFFBBBBBBRRR 格式顯示,其格式分為下列元件:

將 rowid 指定給資料列片段後,資料列 ID 便可在特殊情況下變更。例如,如果啟用資料列移動,則資料列 ID 可能會因為分割區索引鍵更新、「倒溯表格」作業、縮小表格作業等等而變更。如果停用資料列移動,則如果使用 Oracle AI Database 公用程式匯出和匯入資料列,則資料列 ID 會變更。注意:資料庫會在內部執行資料列移動,就像實際刪除並重新插入資料列一樣。不過,列變動被視為更新,這對於觸發器有影響。

另請參閱:

資料區塊壓縮

資料庫可以使用表格壓縮來排除資料區塊中的重複值。本節描述使用壓縮的資料區塊格式。

使用基本表格與進階資料列壓縮的資料區塊格式,基本上與未壓縮區塊相同。差異在於區塊開頭的符號表格會儲存資料列與資料欄的重複值。資料庫會以符號表格的簡短參照取代這些值的複本。

範例 15-2 壓縮資料區塊的格式

假設下列資料列儲存在七欄 sales 表格的資料區塊中:

2190,13770,25-NOV-00,S,9999,23,161
2225,15720,28-NOV-00,S,9999,25,1450
34005,120760,29-NOV-00,P,9999,44,2376
9425,4750,29-NOV-00,I,9999,11,979
1675,46750,29-NOV-00,S,9999,19,1121

將基本表格或進階資料列壓縮套用至此表格時,資料庫會以符號參照取代重複的值。以下的壓縮概念表示法顯示取代 29-NOV-00 和取代 9999 之 % 的符號 *:

2190,13770,25-NOV-00,S,%,23,161
2225,15720,28-NOV-00,S,%,25,1450
34005,120760,*,P,%,44,2376
9425,4750,*,I,%,11,979
1675,46750,*,S,%,19,1121

表格 15-1 概念代表將符號對應至值的符號表格。

表 1 符號表

符號 值 資料欄 資料列
* 29-NOV-00 3 958-960
% 9999 5 956-960

另請參閱:「表格壓縮」

資料區塊中的空間管理

當資料庫從上到下填入資料區塊時,資料列資料與區塊標頭之間的可用空間也會減少。

更新期間,資料區塊中的可用空間也可以縮小,就像將尾端空值變更為非空值時一樣。資料庫會管理資料區塊中的可用空間,以最佳化效能並避免浪費的空間。

注意:本節假設使用自動區段空間管理。

資料區塊中的可用空間百分比

PCTFREE SQL 參數會設定保留為可用空間以更新現有資料列的資料區塊最小百分比。PCTFREE 對於防止資料列移轉及避免浪費空間而言十分重要。

例如,假設您建立一個只需要偶爾更新的表格,其中大部分的表格並不會增加現有資料的大小。您可以在 CREATE TABLE 敘述句中指定 PCTFREE 參數,如下所示:

CREATE TABLE test_table (n NUMBER) PCTFREE 20;

圖 15-10 顯示 20 的 PCTFREE 設定如何影響空間管理。資料庫會隨時間將資料列新增至區塊,讓資料列資料往上成長到區塊標頭,而區塊標頭本身則往下擴充至資料列資料。PCTFREE 設定可確保至少 20% 的資料區塊是免費的。例如,資料庫會防止 INSERT 敘述句填滿區塊,讓資料列資料與標頭佔用 90% 的總區塊空間,而只剩下 10% 的空間。

圖 10:PCTFREE

cncpt029.gif 圖解描述

注意:此討論不適用於未使用 PCTFREE 儲存體參數或可用清單的 LOB 資料類型。

另請參閱:

最佳化資料區塊中的可用空間

雖然可用空間的百分比不能小於 PCTFREE,但可用空間的大小可以大於。例如,將 PCTFREE 設為 20% 會讓可用空間總量無法降到 5% 的區塊,但允許 50% 的區塊是可用的。

增加可用空間以最佳化

部分 DML 敘述句可增加資料區塊的可用空間。

下列敘述句可增加空間:

在下列情況下,INSERT 敘述句可以使用釋出空間:

另請參閱:Oracle AI Database Administrator's Guide 以瞭解進階資料列壓縮

依聯合片段空間最佳化

發行的空間不一定會與資料區塊中的可用空間主要區域連續。非連續的可用空間稱為分散式空間。

下圖顯示具有非連續可用空間的資料區塊。

圖 11:含有片段化空間的資料區塊

cncpt210.gif 圖解描述

只有符合下列條件時,Oracle AI Database 才會自動且透明地聯合資料區塊的可用空間:

聯合之後,可用空間量還是會與進行此作業之前的空間量相同,但現在空間是連續的。圖 15-12 顯示空間聯合之後的資料區塊。

圖 12:聯合可用空間之後的資料區塊

cncpt211.gif 圖解描述

Oracle AI Database 僅在上述情況下執行聯合,因為其他情況會降低效能,因為會持續合併資料區塊中的可用空間。

鏈結與移轉的資料列

Oracle AI Database 使用鏈結和移轉來管理無法放入單一區塊的資料列。注意:標準表格中的鏈結資料列與區塊鏈表格中的資料列鏈結不同。Oracle AI Database 使用不同的技術來管理區塊鏈資料表中的列。

可能的情況如下:

圖 15-13 說明在資料區塊中插入大型資料列。資料列對左側區塊而言太大,因此資料庫將第一個資料列片段置於左側區塊,而第二個資料列片段置於右側區塊中,以鏈結資料列。

圖 13:資料列鏈結

cncpt316.gif 圖解描述

圖 15-14 ,左側區塊包含已更新的資料列,讓該資料列對區塊而言太大。資料庫會將整個資料列移到右側區塊,並讓指標移到左側區塊中已移轉資料列。

圖 14:資料列移轉

cncpt306.gif 圖解描述

當資料列鏈結或移轉時,擷取資料所需的 I/O 會增加。此情況會產生,因為 Oracle AI Database 必須掃描多個區塊,才能擷取資料列的資訊。例如,如果資料庫執行一個 I/O 來讀取索引,以及一個 I/O 來讀取未移轉的表格資料列,則需要額外的 I/O 來取得已移轉資料列的資料。

「區段建議程式」可手動或自動執行,是 Oracle AI Database 元件,可識別具有可回收空間的區段。建議程式可針對具有顯著可用空間或過多鏈結資料列的物件提供建議。

另請參閱:

索引區塊總覽

索引區塊是一種特殊類型的資料區塊,其管理空間與表格區塊不同。Oracle AI Database 使用索引區塊來管理索引中的邏輯儲存空間。

索引區塊類型

索引包含根區塊、分支區塊以及分支終端區塊。

區塊類型定義如下:

儲存索引項目

索引項目以和資料區塊中表格資料列相同的方式儲存於索引區塊中。區塊部分中的索引項目不會以二進位順序儲存,而是以堆集方式儲存。

資料庫管理索引區塊中資料列目錄的方式與資料區塊中的目錄不同。資料列目錄中的項目 (不是索引區塊的主體中的項目) 依索引鍵值排序。例如,在資料列目錄中,索引索引鍵 000000 的目錄項目在索引索引鍵 111111 的目錄項目之前,依此類推。

資料列目錄中的項目順序可提升索引掃描的效率。在範圍掃描中,資料庫必須讀取範圍內指定的所有索引索引鍵。資料庫會周遊分支區塊,以識別包含第一個索引鍵的分支終端區塊。因為已排序列目錄中的項目,所以資料庫可以使用二進位搜尋來尋找範圍中的第一個索引關鍵碼,然後依序處理列目錄中的項目,直到找到最後一個關鍵碼為止。如此一來,資料庫就可避免讀取分葉區塊主體中的所有金鑰。

另請參閱:「資料區塊經常費用」

重複使用索引區塊中的槽位

資料庫可以重複使用索引區塊內的空間。

例如,應用程式可以將值插入資料欄中,然後刪除該值。當某個資料列需要空間時,資料庫就可以重複使用先前被刪除的值佔用的索引位置。

索引區塊的資料列通常多於堆集組織的表格區塊。將許多資料列儲存在單一索引區塊中的功能,可讓資料庫更容易維護索引,因為它會避免區塊經常分割以儲存新資料。

雖然您可以手動將索引與 ALTER INDEX 敘述句搭配使用 REBUILD 或 COALESCE 選項,但索引無法與其本身合併。例如,如果您將值 1 填入資料欄至 500000,然後刪除包含偶數的資料列,則索引將會包含 250,000 個空白時段。只有當資料庫能夠將符合的資料插入包含空白槽位的索引區塊時,才會重複使用槽位。

聯合索引區塊

索引聯合會就地壓縮現有的索引資料,如果重組釋出區塊,則會在索引結構中保留可用的區塊。因此,聯合並不會釋出索引區塊供其他用途使用,也不會造成索引重新配置區塊。

Oracle AI Database 不會自動壓縮索引:您必須執行含有 REBUILD 或 COALESCE 選項的 ALTER INDEX 敘述句。圖 15-15 顯示聯合索引之前 employees.department_id 資料欄的索引。前三個分葉圖塊僅部分填滿,由灰色填滿線表示。

圖 15:聯合之前的索引

cncpt294.gif 圖解描述

圖 15-16 顯示結合索引之後的圖 15-15 中的索引。前兩個分葉圖塊已滿,如灰色填滿線所示,第三個分葉圖塊已釋出。

圖 16:聯合後的索引

cncpt295.gif 圖解描述

另請參閱:

擴充區塊概要

擴充區塊是資料庫儲存體單元,由邏輯上連續的資料區塊組成。由於 RAID 分割與檔案系統實作,資料區塊實際上可以分散到磁碟上。

擴充區塊配置

依照預設,資料庫會在建立區段時,配置資料區段的初始擴充區塊。擴充區塊一律包含在一個資料檔中。

雖然尚未將資料新增至區段,但初始擴充區塊中的資料區塊是專門針對此區段保留的。每個區段的第一個資料區塊都包含區段中擴充區塊的目錄。圖 15-17 顯示資料檔中先前未包含任何資料的區段初始擴充區塊。

圖 17:區段的起始擴充區塊

cncpt274.gif 圖解描述

如果起始擴充區塊已滿,且需要更多空間,則資料庫會自動配置此區段的增量擴充區塊。增量擴充區塊是針對區段建立的後續擴充區塊。

配置演算法取決於表格空間是本機管理還是字典管理的。在本機管理的案例中,資料庫會搜尋資料檔的位元映射,找出相鄰的可用區塊。如果資料檔的空間不足,則資料庫會查看其他資料檔。區段的擴充區塊一律位於相同的表格空間,但可能位於不同的資料檔中。圖 15-18 顯示資料庫可以在表格空間的任何資料檔中配置區段的擴充區塊。例如,區段可以在 users01.dbf 中配置初始擴充區塊,在 users02.dbf 中配置第一個增量擴充區塊,然後在 users01.dbf 中配置下一個擴充區塊。

圖 18:區段的增量範圍

cncpt278.gif 圖解描述

新配置擴充區塊的區塊雖然可用,但舊資料可能不是空的。在 ASSM 中,Oracle AI Database 會在開始使用擴充區塊時,將新配置擴充區塊的區塊格式化,但僅會視需要格式化。注意:本節適用於序列作業,其中有一個伺服器處理作業會剖析和執行敘述句。資料庫會以不同的平行 SQL 敘述句來配置擴充區塊,而平行 SQL 敘述句會包含多個伺服器處理作業。

另請參閱:

擴充區塊配置

一般而言,除非您使用 DROP 敘述句刪除物件,否則使用者區段的擴充區塊不會返回表格空間。

例如,如果您刪除表格中所有的資料列,資料庫就不會回收資料區塊,供表格空間中的其他物件使用。您也可以使用 DBMS_SPACE_ADMIN 套裝軟體來刪除區段。

注意:在還原區段中,如果一或多個擴充區塊已指定 OPTIMAL 大小,或資料庫處於自動還原管理模式,Oracle AI Database 會定期取消配置。

在某些情況下,您可以手動取消配置空間。Oracle Segment Advisor 會根據物件中的片段層次,判斷物件是否有可回收的空間。下列技術可以釋出擴充區塊:

釋出擴充區塊時,Oracle AI Database 會修改資料檔中本機管理表格空間的位元映射,以將重新鏈結的擴充區塊反映為可用空間。已釋出擴充區塊中的任何資料都將無法存取。

另請參閱:

擴充區塊的儲存參數

每個區段都是由以擴充區塊表示的儲存參數所定義。這些參數控制 Oracle AI Database 如何分配區段的可用空間。

儲存體設定值的優先順序如下,清單的設定值較高,覆寫清單的較低設定值:

  1. 區段儲存子句

  2. 表格空間儲存子句

  3. Oracle AI Database 預設值

本機管理的表格空間可以有統一的擴充區塊大小,或由系統自動決定的變數擴充區塊大小:

如果是本機管理的表格空間,則無法在表格空間層次指定某些儲存體參數。不過,您可以在節段層次指定這些參數。在此案例中,資料庫會使用所有參數來計算區段的起始大小。內部演算法會決定每個範圍的後續大小。

另請參閱:

區段總覽

區隔是一組擴充區塊,其中包含表格空間內邏輯儲存體結構的所有資料。

例如,Oracle AI Database 會配置一或多個擴充區塊,以形成表格的資料區段。資料庫也會配置一或多個擴充區塊,以形成表格上索引的索引區段。

Oracle AI Database 會自動或手動管理區段空間。本節假設使用 ASSM。

使用者區段

資料庫中的單一資料區段會儲存一個使用者物件的資料。

有不同類型的區段。使用者區隔的範例包括:

每個非分割的物件與物件分割區都會儲存在自己的區段中。例如,如果索引有五個分割區,則五個區段會包含索引資料。

建立使用者區段

資料庫預設會使用建立延緩區段作業,在建立表格、索引以及分割區時只更新資料庫描述資料。

當使用者將第一個資料列插入表格或分割區時,資料庫會為表格或分割區、其 LOB 資料欄以及其索引建立區段。建立延緩區段作業可避免不必要使用資料庫資源。例如,安裝應用程式可建立數以千計的物件,耗用大量的磁碟空間。許多物件永遠都不會被使用。

DBMS_SPACE_ADMIN 套裝軟體會管理空物件的區段。您可以使用此 PL/SQL 套裝程式執行下列作業:

為了能充分說明建立物件與建立區段之間的關係,請假設已停用建立延緩區段作業。您建立表格的方式如下:

CREATE TABLE test_table (my_column NUMBER);

如圖 15-19 所示,資料庫會為表格建立一個區段。

圖 19:建立使用者區段

cncpt246.gif 圖解描述

當您使用主索引鍵或唯一索引鍵建立表格時,Oracle AI Database 會自動為此索引鍵建立索引。再次假設已停用建立延緩區段作業。您可以依照下列方式建立表格:

CREATE TABLE lob_table (my_column NUMBER PRIMARY KEY, clob_column CLOB);

圖 15-20 顯示 lob_table 的資料儲存在一個區段中,而隱含建立的索引則位於不同的區段中。此外,CLOB 資料會儲存在其本身的區段中,就像其關聯的 CLOB 索引一樣。因此,CREATE TABLE 敘述句會建立 4 個不同的區段。

圖 20:多重區段

cncpt245.gif 圖解描述

注意:表格的區段和此表格的索引不需要佔用相同的表格空間。

建立區段時,資料庫會配置一或多個擴充區塊。物件的儲存參數決定如何配置每個區段的擴充區塊。這些參數會影響與物件關聯之資料區段的資料擷取和儲存效率。

另請參閱:

暫時區段

處理查詢時,Oracle AI Database 通常需要暫時工作區,才能執行 SQL 陳述式的中介階段。

可能需要暫時區段的一般作業包括排序、雜湊以及合併位元映射。建立索引時,Oracle AI Database 也會將索引區段放置在暫時區段中,然後在索引完成時將它們轉換成永久區段。

如果可以在記憶體中執行作業,Oracle AI Database 就不會建立暫時區段。不過,如果無法使用記憶體,則資料庫會自動在磁碟上配置暫時區段。

查詢的暫時區段配置

Oracle AI Database 會視需要在使用者階段作業期間配置查詢的暫時區段,並在查詢完成時刪除這些區段。對暫時區段進行的變更不會記錄在線上重做日誌中,除非是對暫時區段進行的空間管理作業。

資料庫會在指派給使用者的暫時表格空間中建立暫時區段。表格空間的預設儲存特性會決定暫時區段中擴充區塊的特性。因為暫時區段的配置與取消配置經常發生,所以最佳作法是為暫時區段建立至少一個特殊表格空間。資料庫會將 I/O 分配到各個磁碟,避免讓 SYSTEM 以及其他具有暫時區段的表格空間分散。

注意:當本機管理 SYSTEM 時,您必須在建立資料庫時定義預設暫時表格空間。本機管理的 SYSTEM 表格空間無法用於預設暫時儲存。

另請參閱:

暫時表格與索引的區段配置

Oracle AI Database 可以為暫時表格及其索引配置暫時區段。

暫時表格僅保留異動或梯次期間內存在的資料。每個階段作業只會存取配置給其本身的擴充區塊,無法存取配置給其他階段作業的擴充區塊。

發生第一個 INSERT 時,Oracle AI Database 會為全域暫時表格配置區段,且只有在需要時才為專用暫時表格配置區段。插入可以明確進行,或因為 CREATE TABLE AS SELECT。資料庫會配置表格的區段及其索引、建立索引的根頁面,以及配置任何 LOB 區段。

目前使用者的暫時表格空間會配置暫時表格的區段。例如,指派給 user1 的暫時表格空間是 temp1,指派給 user2 的暫時表格空間則是 temp2。在此情況下,user1 會將暫時資料儲存在 temp1 區段中,而 user2 則會將暫時資料儲存在 temp2 區段中。

另請參閱:

還原區段

Oracle AI Database 維護交易動作的記錄,統稱為還原資料。

Oracle AI Database 使用還原資料來執行下列作業:

Oracle AI Database 將還原資料儲存在資料庫中,而不是儲存在外部日誌中。還原資料儲存在像資料區塊一樣更新的區塊中,這些區塊的變更會產生重做記錄。如此一來,Oracle AI Database 就可以有效率地存取還原資料,而無需讀取外部日誌。

永久物件的還原資料會儲存在還原表格空間中。Oracle AI Database 提供完全自動化的機制 (稱為自動還原管理模式 ),用於管理還原表格空間中的還原區段和空間。

資料庫會將還原資料區分為兩個串流。暫時還原串流只會封裝暫時物件變更所產生的還原記錄,而永久還原串流則只會封裝永久物件的還原記錄。資料庫會獨立管理暫時和永久還原。還原區隔可減少儲存體,並透過執行下列動作來提升效能:

在 Active Data Guard 執行處理上,全域暫時表格上的 DML 需要在暫時還原區段中產生還原。

另請參閱:

還原區段和交易

當交易開始時,資料庫會將該交易繫結 (指定) 至還原區段,因此連結至目前還原表格空間中的交易表格。在極少數的情況下,如果資料庫執行處理沒有指定的還原表格空間,交易就會連結至系統還原區段。

多個作用中交易可以同時寫入相同的還原區段,或是寫入不同的區段。例如,交易 T1 和 T2 可以寫入還原區段 U1,而 T1 則可以寫入 U1,而 T2 則寫入還原區段 U 2。

在概念上,還原區段中的擴充區塊會形成環狀。交易會寫入一個還原擴充區塊,然後寫入環中的下一個擴充區塊,以此類推。圖 15-21 顯示 T1 和 T2 這兩個交易,從還原區段的第三個擴充區塊 (E3) 開始寫入,然後繼續寫入第四個擴充區塊 (E4)。

圖 21:還原區段中配置的擴充區塊環

cncpt328.gif 圖解描述

在任何指定的時間,交易都會依序寫入還原區段中只有一個擴充區塊,也就是交易的目前擴充區塊。多個作用中交易可以同時寫入相同的目前擴充區塊或不同的目前擴充區塊。圖 15-21 顯示擴充區塊 E3 同時寫入 T1 和 T2 的交易。在還原擴充區塊中,資料區塊只包含一個交易的資料。

當目前的還原擴充區塊填滿時,第一個需要空間的交易會檢查環中下一個配置擴充區塊的可用性。如果下一個擴充區塊未包含作用中交易的資料,則此擴充區塊會變成目前的擴充區塊。現在,所有需要空間的交易都可以寫入新的目前擴充區塊。在圖 15-22 中,當 E4 已滿時,T1 和 T2 會繼續寫入 E1,覆寫 E1 中的非作用中還原資料。

圖 22:還原區段中配置之擴充區塊的循環使用

cncpt327.gif 圖解描述

如果下一個擴充區塊有包含作用中交易的資料,資料庫就必須配置新的擴充區塊。圖 15-23 顯示 T1 和 T2 寫入 E4 的案例。E4 填入時,交易無法繼續寫入 E1,因為 E1 包含作用中的還原項目。因此,資料庫會為這個還原區段配置新的擴充區塊 (E5)。交易會繼續寫入 E5。

圖 23:還原區段的新擴充區塊配置

cncpt326.gif 圖解描述

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何管理還原區段

交易倒回

發出 ROLLBACK 敘述句時,資料庫會使用還原記錄來倒回由未確認的交易對資料庫所做的變更。

在復原期間,資料庫會將從線上重做日誌套用的所有未確認變更倒回至資料檔。還原記錄提供讀取一致性,可維護資料之前的圖像,供其他使用者在變更資料前的同時存取資料。

暫時還原區段

暫時還原區段是選擇性的空間管理容器,只能用於暫時還原資料。

暫時表格變更的還原記錄,是階段作業特定的記錄,而且只對讀取一致性與交易倒回有用。在 Oracle Database 12c 之前,資料庫一律會將這些記錄儲存在線上重做日誌中。因為暫時物件的變更不會記錄在線上重做日誌中,所以將暫時物件的還原寫入暫時還原區段會節省線上重做日誌與存檔重做日誌檔的空間。資料庫不會將變更記錄到還原,也不會將變更記錄到可改善效能的暫時表格。

您可以設定 TEMP_UNDO_ENABLED 初始化參數,讓暫時表格將還原資料儲存在暫時還原區段中。當此參數為 TRUE 時,資料庫會從暫時表格空間配置暫時還原區段。

另請參閱:

區段空間與上限標準

為了管理空間,Oracle AI Database 會追蹤區段中的區塊狀態。高水位標記 (HWM) 是區段中的點,超出該區段的資料區塊未格式化且從未使用過。

MSSM 使用可用清單來管理區段空間。建立表格時,區段中的任何區塊都會格式化。當階段作業首次在表格中插入資料列時,資料庫會搜尋可用清單中的可用區塊。如果資料庫找不到可用的區塊,它會預先格式化一組區塊,將它們放在可用清單上,然後開始將資料插入區塊中。在 MSSM 中,完整表格掃描會讀取 HWM 下的所有區塊。

ASSM 不使用可用清單,因此必須以不同的方式管理空間。當階段作業首次將資料插入表格時,資料庫會將單一位元映射區塊格式化,而非以 MSSM 的方式預先格式化一組區塊。點陣圖會追蹤區段中區塊的狀態,並取代可用清單。資料庫會使用位元映射來尋找可用的區塊,然後格式化每個區塊,再以資料填入區塊。ASSM 在區塊之間分攤插入,以避免並行問題。

ASSM 區段中的每個資料區塊皆處於下列其中一種狀態:

圖 15-24 將 ASSM 區段描述為水平的區塊數列。在建立表格時,HWM 位於左側區段的開頭。因為還沒有插入任何資料,所以區段中的所有區塊都會未經格式化,永遠都不會被使用。

圖 24:建立表格時的 HWM

cncpt275.gif 圖解描述

假設交易在區段中插入資料列。資料庫必須配置一組區塊,以保存資料列。配置的區塊落在 HWM 之下。資料庫會格式化此群組中的點陣圖區塊以保留描述資料,但不會預先格式化群組中其餘的區塊。

在圖 15-25 中,會配置 HWM 下方的區塊,而 HWM 上方的區塊則不會配置或格式化。在插入時,資料庫可以寫入具有可用空間的任何區塊。低高水位標記 (低 HWM) 會在下方標示已知所有區塊的格式,因為這些區塊包含資料或先前包含的資料。

圖 25:HWM 和低 HWM

cncpt276.gif 圖解描述

在圖 15-26 中,資料庫會選擇 HWM 與低 HWM 之間的區塊並寫入區塊。資料庫可以像在 HWM 和低 HWM 之間輕鬆選擇任何其他區塊一樣,或者在具有可用空間的低 HWM 之下的任何區塊一樣。在圖 15-26 中,新填滿區塊之任一側的區塊會被取消格式化。

圖 26:HWM 和低 HWM

cncpt333.gif 圖解描述

低 HWM 在完整表格掃描中很重要。因為只有在使用時,才會格式化 HWM 下方的區塊,所以某些區塊可能無法格式化,如圖 15-26 所示。因此,資料庫會讀取點陣圖區塊以取得低 HWM 的位置。由於 HWM 已知是格式化區塊,因此資料庫會讀取 HWM 不足的所有區塊,然後仔細地只讀取 HWM 和 HWM 之間格式化的區塊。

假設新的交易在表格中插入資料列,但點陣圖指出 HWM 下的可用空間不足。在圖 15-27 中,資料庫會將 HWM 進展到右側,並配置一組新的未格式化區塊。

圖 27:提升 HWM 和低 HWM

cncpt277.gif 圖解描述

當 HWM 與低 HWM 之間的圖塊已滿時,HWM 會向右移動,而低 HWM 會向上移動到舊 HWM 的位置。當資料庫在一段時間內插入資料時,HWM 會繼續向右前進,而低 HWM 則一律會落後。除非您手動重建、截斷或縮小物件,否則 HWM 永遠不會撤回。

另請參閱:

表格空間總覽

表格空間是區段的邏輯儲存體容器。

區段是會使用儲存體空間的資料庫物件,例如表格與索引。在實體層次上,表格空間會將資料儲存在一或多個資料檔或暫存檔中。

多雲端用戶環境中的表格空間

在 CDB 中,每個 PDB 與應用程式 root 都有它自己的一組表格空間。

每個 CDB 根、PDB 以及應用程式根目錄都必須要有 SYSTEM 和 SYSAUX 表格空間。下圖顯示一般容器中的表格空間。

圖 28:表格空間

cncpt319.gif 圖解描述

CDB 包含下列項目:

範例 15-3 在本機還原模式下的 CDB

此範例顯示具有兩個 PDB 之 CDB 的實體儲存體架構層面:hrpdb 和 salespdb。在此範例中,資料庫使用本機還原模式,因此 CDB 根、hrpdb 以及 salespdb 中有還原資料檔。

圖 29:本機還原模式中 CDB 的實體架構

cncpt386.png 圖解描述

另請參閱:「 CDB 中的資料說明區隔」

永久表格空間

永久表格空間群組永久綱要物件。表格空間中物件的區段會以實體方式儲存在資料檔中。

每個資料庫使用者都會被指派預設的永久表格空間。非常小的資料庫可能只需要預設的 SYSTEM 和 SYSAUX 表格空間。不過,Oracle 建議您至少建立一個表格空間來儲存使用者和應用程式資料。您可以使用表格空間來達成下列目標:

另請參閱:

SYSTEM 表格空間

SYSTEM 表格空間是建立資料庫時所含的必要管理表格空間。Oracle AI Database 使用 SYSTEM 來管理資料庫。

SYSTEM 表格空間包括下列所有由 SYS 使用者擁有的資訊:

SYSTEM 表格空間管理為任何其他表格空間,但需要更高層次的權限,而且在某些方面受到限制。例如,您無法重新命名或刪除 SYSTEM 表格空間。

依照預設,Oracle AI Database 會將所有新建立的使用者表格空間設為本機管理。在具有本機管理之 SYSTEM 表格空間的資料庫中,您無法建立說明管理的表格空間 (已不再使用)。不過,如果您手動執行 CREATE DATABASE 敘述句並接受預設值,則會管理 SYSTEM 表格空間。您可以將現有的說明管理的 SYSTEM 表格空間移轉至本機管理的格式。注意:Oracle 強烈建議您使用「資料庫組態輔助程式 (DBCA)」來建立新資料庫,讓所有表格空間 (包括 SYSTEM) 預設為本機管理。

另請參閱:

SYSAUX 表格空間

SYSAUX 表格空間是 SYSTEM 表格空間的附屬表格空間。

因為 SYSAUX 是許多 Oracle AI Database 功能和先前需要自己的表格區之產品的預設表格區,所以會減少資料庫所需的表格區數目。它也會減少 SYSTEM 表格空間的負載。

建立或升級資料庫會自動建立 SYSAUX 表格空間。在正常資料庫作業期間,資料庫不允許刪除或重新命名 SYSAUX 表格空間。如果 SYSAUX 表格空間無法使用,核心資料庫功能會維持運作。使用 SYSAUX 表格空間的資料庫功能可能會失敗或功能有限。

另請參閱:Oracle AI Database Administrator's Guide,瞭解 SYSAUX 表格空間

還原表格空間

還原表格空間是保留給系統管理還原資料的本機管理表格空間。

就像其他的永久表格空間一樣,還原表格空間也包含資料檔。這些檔案中的還原區塊都會群組在擴充區塊中。

自動復原管理模式

還原表格空間需要讓資料庫處於預設自動還原模式狀態。

自動模式則可免除手動管理還原區段的複雜性。資料庫會自動自行調整,以提供最佳的還原資料保留,以滿足可能需要此資料的長時間執行查詢。

Oracle AI Database 的新安裝會自動建立一個還原表格空間。舊版的 Oracle AI Database 可能不包含還原表格空間,而是改用傳統倒回區段,稱為手動還原管理模式。Oracle AI Database 包含一個「還原建議程式」,提供有關還原環境的建議並協助自動化還原環境。

資料庫可以包含多個還原表格空間,但一次只能使用一個。當執行處理嘗試開啟資料庫時,Oracle AI Database 會自動選取第一個可用的還原表格空間。如果沒有可用的還原表格空間,執行處理就會在沒有還原表格空間的情況下啟動,並將還原資料儲存在 SYSTEM 表格空間中。不建議在 SYSTEM 中儲存還原資料。

另請參閱:

自動還原保留

還原保留期間是 Oracle AI Database 在覆寫舊還原資料之前,嘗試保留舊還原資料的最短時間。

還原保留很重要,因為長時間執行的查詢可能需要較舊的區塊影像來提供讀取一致性。此外,有些 Oracle Flashback 功能會取決於還原可用性。

一般而言,想要儘可能保留舊的還原資料。在交易確認之後,就不再需要還原資料來進行倒回或交易復原。如果還原表格空間有新交易的空間,資料庫就可以保留舊的還原資料。當可用空間不足時,資料庫會開始覆寫已確認交易的舊還原資料。

Oracle AI Database 會自動為目前的還原表格空間提供最佳的還原保留。資料庫會收集使用狀況統計資料,並根據這些統計資料和還原表格空間大小調整保留期間。如果使用 AUTOEXTEND 選項設定還原表格空間,且未指定大小上限,則還原保留調整會有所不同。在此情況下,如果空間允許的話,資料庫會將還原保留期間調整為比最長執行查詢稍長的時間。

另請參閱:Oracle AI Database Administrator's Guide,瞭解自動調整還原保留的詳細資訊

陰影表格空間

陰影表格空間是用來陰影遺失寫入保護的大型檔案表格空間。

注意:使用 DB_LOST_WRITE_PROTECT 初始化參數和待命資料庫設定的遺失寫入保護,陰影遺失寫入保護與遺失寫入保護無關。

陰影表格空間的用途

陰影遺失寫入保護可快速偵測並立即回應遺失寫入。

當 I/O 子系統認可未進行寫入,或當區塊的前一個影像覆寫目前的影像時,就會完成區塊寫入的作業,就會發生資料區塊遺失寫入。

未偵測到的遺失寫入可能會導致資料損毀,因為不正確的資料可用於其他 DML 交易。例如,異動可以從一個表格中讀取舊與不正確的資料,然後根據此資料更新數百個其他表格。如此一來,資料損毀可能會分散到整個資料庫中。

陰影遺失寫入保護的優點如下:

另請參閱:Oracle AI Database SQL Language Reference,瞭解 LOST WRITE PROTECTION 子句的詳細資訊

陰影表格空間運作方式

遺失寫入保護需要兩個表格空間:陰影表格空間,以及由陰影表格空間追蹤其區塊的非陰影表格空間。

下圖提供範例案例。表格空間 TBS1 與 TBS2 中的資料檔均由影子表格空間追蹤。陰影表格空間只追蹤表格空間 TBS3 中的資料檔 DBF6。

cncpt390.png 圖解描述

一個追蹤的資料檔會對應至陰影表格空間中的一個陰影擴充區塊。追蹤資料檔中的每個資料區塊在陰影區塊中都會有一個對應的項目。此項目包含追蹤資料區塊的 SCN。從磁碟讀取追蹤的資料區塊時,陰影遺失寫入保護會比較陰影表格空間中區塊的 SCN 與追蹤資料區塊中最近寫入的 SCN。如果陰影項目的 SCN 大於要讀取的資料區塊,則發生遺失的寫入,並提示錯誤。

陰影擴充區塊的大小具有非常大的額外空間,可防止資料檔自動調整大小,導致陰影擴充區塊成長過大。如果追蹤的資料檔是以手動或自動方式調整大小,而且如果陰影擴充區塊需要成長,則資料庫會嘗試調整追蹤資料的大小。如果沒有足夠的陰影表格空間,則資料庫會將警告寫入警示日誌,並儘可能追蹤多個資料區塊。

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何管理陰影遺失寫入保護

影子表格空間的使用者介面

您可以使用 ALTER PLUGGABLE DATABASE 命令來啟用及停用陰影遺失寫入保護。

如果要保護特定表格空間或資料檔的陰影遺失寫入保護,必須符合下列條件:

Oracle AI Database 會自動將追蹤的資料檔指派給特定的陰影表格空間。您無法指定要使用哪一個陰影表格空間來作為特定資料檔。

下列資料說明視觀表會監督陰影表格空間:

另請參閱:

範例:設定遺失的寫入保護

此範例會針對一組表格空間啟用隱式遺失寫入追蹤。

在此範例中,您的目標是保護 PDB 內的 salestbs 與 hrtbs 表格空間。您也想要保護 oetbs01.dbf 資料檔,以及只保護 oetbs 表格空間中的這個資料檔。您執行下列作業:

  1. 以管理員身分登入 PDB。

  2. 如下所示,建立單一陰影表格空間:

    CREATE BIGFILE TABLESPACE shadow_lwp1
      DATAFILE 'shadow_lwp1_df' SIZE 10M LOST WRITE PROTECTION;
  3. 啟用 PDB 的遺失寫入保護,如下所示:

    ALTER DATABASE ENABLE LOST WRITE PROTECTION;
  4. 啟用 salestbs 和 hrtbs 表格空間的陰影遺失寫入保護,如下所示:

    ALTER TABLESPACE salestbs ENABLE LOST WRITE PROTECTION;
    ALTER TABLESPACE hrtbs ENABLE LOST WRITE PROTECTION;
  5. 依下列方式啟用 oetbs01.dbf 資料檔的隱式遺失寫入保護:

    ALTER DATABASE DATAFILE 'oetbs01.dbf' ENABLE LOST WRITE PROTECTION;

另請參閱:

暫時表格空間

暫時表格空間包含暫時資料,只會在階段作業的持續時間內保存。沒有永久綱要物件可以位於暫時表格空間中。暫存檔會儲存暫時表格空間資料。

暫時表格空間可以改善不適合在記憶體中的多個排序作業並行。這些表格空間也能提升排序期間空間管理作業的效率。

共用表格空間與本機暫時表格空間

暫時表格空間是共用的或本機表格空間。

共用暫時表格空間會將暫存檔儲存在共用磁碟上,讓所有資料庫執行處理都能存取暫時空間。相反地,本機暫時表格空間會為每個資料庫執行處理儲存個別的非共用暫存檔。本機暫時表格空間適用於 Oracle Real Application Clusters 或 Oracle Flex Clusters。

您可以為唯讀與讀 / 寫資料庫執行處理建立本機暫時表格空間。當許多唯讀執行處理存取單一資料庫時,本機暫時表格空間可改善涉及排序、雜湊聚總以及結合的查詢效能。優點包括:

下表比較共用表格空間與本機暫時表格空間的特性。

表 2 共用的與當地暫時表格空間

共用暫時表格空間 本機暫時表格空間
使用 CREATE TEMPORARY TABLESPACE 敘述句建立。

使用 CREATE LOCAL TEMPORARY TABLESPACE 敘述句建立。

注意:本機暫時表格空間一律是大型檔案表格空間,但是 create 敘述句中不需要 BIGFILE 關鍵字。

為資料庫建立單一暫時表格空間。 為每個資料庫執行處理建立個別的暫時表格空間。FOR LEAF 選項只會為唯讀執行處理建立表格空間。FOR ALL 選項會為所有執行處理建立表格空間,包括唯讀和讀寫。
支援表格空間群組。 不支援表格空間群組。
將暫存檔描述資料儲存在控制檔中。 儲存控制檔中所有執行處理通用的暫存檔描述資料,以及 SGA 中的執行處理特定描述資料 (例如,配置的位元映射、目前的暫存檔大小,以及檔案狀態)。

另請參閱:「Oracle AI Database 執行個體簡介」

預設暫存表格空間

每個資料庫使用者帳戶都會被指派預設的共用暫時表格空間。如果資料庫包含本機暫時表格空間,則每個使用者帳戶也會被指派預設本機暫時儲存體。

您可以使用 CREATE USER 或 ALTER USER 敘述句,為使用者帳戶指定不同的暫時表格空間。Oracle AI Database 會針對未指定其他暫時表格空間的使用者,使用系統層次的預設暫時表格空間。

建立預設暫時表格空間

建立資料庫時,預設暫時儲存體會視 SYSTEM 表格空間是否由本機管理而定。

下表顯示 Oracle AI Database 如何在建立資料庫時選擇預設暫時表格空間。

表格 3 建立預設暫時表格空間

SYSTEM 表格空間是否由本機管理? CREATE DATABASE 敘述句是否指定預設暫時表格空間? 接著是資料庫 …
是 是 使用指定的表格空間作為預設值。
是 否 建立暫時表格空間。
否 是 使用指定的表格空間作為預設值。
否 否 使用 SYSTEM 作為預設暫時儲存體。資料庫會在警示日誌中寫入警告,並表示建議使用預設暫時表格空間。

建立資料庫之後,您可以使用 ALTER DATABASE DEFAULT TEMPORARY TABLESPACE 敘述句來變更資料庫的預設暫時表格空間。注意:您無法將預設暫時表格空間設為永久。

另請參閱:

存取暫時儲存體

如果某個使用者被指派暫時表格空間,則資料庫會先存取該表格空間,否則資料庫會存取預設暫時表格空間。當資料庫存取某個查詢的暫時表格空間之後,該表格空間並不會切換到其他表格空間。

使用者查詢可以存取共用或本機暫時儲存體。此外,使用者可以有一個被指派唯讀執行處理的預設本機暫時表格空間,以及一個指派給讀取 / 寫入執行處理的其他預設本機暫時表格空間。

對於讀取 / 寫入執行處理,資料庫會賦予較高共用暫時表格空間的優先順序。對於唯讀執行處理,資料庫會讓本機暫時表格空間有較高的優先順序。如果資料庫執行處理是讀取 / 寫入的,則資料庫會依下列順序搜尋空間:

  1. 共用的暫時表格空間是否指派給使用者?

  2. 是否已將本機暫時表格空間指派給使用者?

  3. 資料庫預設暫時表格空間是否有空間?

如果先前問題的答案為是,則資料庫會停止搜尋,並從指定的表格空間配置空間;否則,會從資料庫預設的本機暫時表格空間配置空間。

如果資料庫執行處理是唯讀的,則資料庫會依下列順序搜尋空間:

  1. 是否已將本機暫時表格空間指派給使用者?

  2. 指派的資料庫預設本機暫時表格空間是否有空間?

  3. 共用的暫時表格空間是否指派給使用者?

如果先前問題的答案為是,則資料庫會停止搜尋,並從指定的表格空間配置空間;否則,系統會從資料庫預設的共用暫時表格空間配置空間。

表格空間模式

表格空間模式決定表格空間的存取性。

讀取 / 寫入以及唯讀表格空間

每個表格空間都會處於一個寫入模式,指定是否可以寫入。

互斥模式如下:

另請參閱:

線上與離線表格空間

當資料庫開啟時,表格空間可以是線上 (可存取) 或離線 (不可存取)。

表格空間通常是在線上,讓使用者可以使用其資料。SYSTEM 表格空間與暫時表格空間無法離線。

表格空間可以自動或手動離線。例如,您可以讓表格空間離線以進行維護、備份與復原。當發生特定錯誤時,資料庫會自動讓表格空間離線,就像資料庫寫入器 (DBW) 處理作業在數次嘗試寫入資料檔時失敗一樣。嘗試存取離線表格空間中表格的使用者會收到錯誤。

當表格空間離線時,資料庫會執行下列作業:

另請參閱:

表格空間檔案大小

表格空間為大型檔案表格空間或小型檔案表格空間。在未明確參照資料檔或暫存檔的 SQL 敘述句執行時,這些表格空間就可區分。

差異如下:

另請參閱: