ALTER TABLESPACE 陳述式
ALTER TABLESPACE 陳述式是用來修改現有的表格空間。
- 將儲存器新增至 DMS 表格空間,或從 DMS 表格空間捨棄儲存器; 亦即,使用 MANAGED BY DATABASE 選項建立的表格空間。
- 修改 DMS 表格空間中儲存器的大小。
- 透過延伸範圍移動降低 DMS 表格空間的高臨界值。
- 將儲存器新增至目前沒有儲存器的資料庫分割區上的 SMS 表格空間。
- 修改表格空間的 PREFETCHSIZE 設定。
- 修改表格空間中用於表格的 BUFFERPOOL。
- 修改表格空間的 OVERHEAD 設定。
- 修改表格空間的 TRANSFERRATE 設定。
- 修改表格空間的檔案系統快取原則。
- 啟用或停用 DMS 或自動儲存體表格空間的自動調整大小。
- 重新平衡一般或大型自動儲存體表格空間。
- 修改表格空間的 DATA TAG 設定。
- 將 DMS 表格空間變更為自動儲存體表格空間。
- 修改與表格空間相關聯的 STOGROUP 設定。
呼叫
此陳述式可以內嵌在應用程式中,或以互動方式發出。 它是可執行的陳述式,只有在 DYNAMICRULES 執行行為對套件有效時才能動態準備 (SQLSTATE 42509)。
授權
陳述式授權 ID 所保留的專用權必須包括 SYSCTRL 或 SYSADM 權限。
語法
說明
- tablespace-name
- 命名表格空間。 這是一個單部分名稱。 它是長 SQL ID (一般或定界)。
- ADD
- 指定要將一或多個新儲存器新增至表格空間。
- TO STRIPE SET stripeset
- 指定將一或多個新的儲存器新增至表格空間,並將它們放入提供的分段集中。
- 開始新的分段集
- 指定要在表格空間中建立新的分段集,並將一或多個儲存器新增至這個新的分段集。 隨後,除非指定 TO STRIPE SET ,否則使用 ADD 選項所新增的儲存器會新增至這個新的分段集。
- DROP
- 指定要從表格空間捨棄一或多個儲存器。
- reduce
- 對於非自動儲存體表格空間,指定要減少現有儲存器的大小。 指定的大小是現有儲存器減少的大小。 如果指定 all-containers-clause ,則表格空間中的所有儲存器都會減少此大小。 如果大小減少導致表格空間大小小於現行高臨界值,則會先嘗試減少高臨界值,然後再嘗試減少儲存器。 若為非自動儲存體表格空間, REDUCE 子句後面必須接著 db-container-clause 或 all-containers-clause。
對於自動儲存體表格空間,指定要減少現行高臨界值 (如果可能的話) ,並將表格空間大小減少至新的高臨界值。 對於自動儲存體表格空間, REDUCE 子句後面不得接著 db-container-clause、 all-containers-clause或 on-db-partitions-clause。
附註: 具有 MAX、數值、PERCENT 或 STOP 子句的 REDUCE 選項,以及具有 STOP 子句的 LOWER HIGH 臨界值選項,僅適用於具有可收回儲存體屬性的資料庫及自動儲存體管理表格空間。 此外,必須指定這些選項,並在沒有任何其他選項 (包括彼此) 的情況下執行這些選項。MAX、 STOP、 integer [K | M | G]或 integer PERCENT 子句會在處理陳述式時生效,且在工作單元時不會回復。 在其中執行陳述式的回復。
- db-container-clause
- 將一個以上儲存器新增至 DMS 表格空間。 表格空間必須識別已存在於應用程式伺服器上的 DMS 表格空間。 all-containers-clause
- 延伸、減少或調整 DMS 表格空間中的所有儲存器大小。 表格空間必須識別已存在於應用程式伺服器上的 DMS 表格空間。
- 最大值
- 對於具有可收回儲存體的自動儲存體表格空間,指定應該將延伸範圍數目上限移至表格空間的開頭,以降低高臨界值。 此外,表格空間的大小會減少至新的高臨界值。 此縮減不適用於非自動儲存體表格空間。
- STOP
- 對於具有可收回儲存體的自動儲存體表格空間,如果進行中,則會岔斷延伸範圍移動作業。 此選項不適用於非自動儲存體表格空間。
- integer [K | M | G] 或 integer PERCENT
- 對於具有可收回儲存體的自動儲存體表格空間,指定透過延伸範圍移動來減少表格空間的數值。 此值可以用數種方式來表示:
- 指定不含 K、M、G 或 PERCENT 的整數表示數值是表格空間減少的頁數。
- 以 K、M 或 G 指定的整數表示縮減大小 (以 KB、MB 或 GB 為單位)。 此值首先會根據表格空間的頁面大小,從位元組轉換成頁數。
- 以 PERCENT 指定的整數指出要移動的延伸範圍數,以表格空間現行大小的百分比表示。
on-db-partitions-clause - 指定對應儲存器作業的一或多個資料庫分割區。
- 擴充
- 指定要增加現有儲存器的大小。 指定的大小是現有儲存器增加的大小。 如果指定 all-containers-clause ,則表格空間中的所有儲存器都會增加此大小。
- 調整大小
- 指定要變更現有儲存器的大小。 指定的大小是儲存器的新大小。 如果指定 all-containers-clause ,則表格空間中的所有儲存器都會變更為此大小。 如果作業影響多個儲存器,則這些儲存器必須全部增加大小或減少大小。 無法在減少其他值的同時增加部分值 (SQLSTATE 429BC)。 db-container-clause
- 將一個以上儲存器新增至 DMS 表格空間。 表格空間必須識別已存在於應用程式伺服器上的 DMS 表格空間。 drop-container-clause
- 從 DMS 表格空間捨棄一個以上儲存器。 表格空間必須識別已存在於應用程式伺服器上的 DMS 表格空間。 系統儲存器子句
- 將一或多個儲存器新增至指定資料庫分割區上的 SMS 表格空間。 表格空間必須識別已存在於應用程式伺服器的 SMS 表格空間。 表格空間的指定資料庫分割區上不得有任何儲存器 (SQLSTATE 42921)。 on-db-partitions-clause
- 指定對應儲存器作業的一或多個資料庫分割區。 all-containers-clause
- 延伸、減少或調整 DMS 表格空間中的所有儲存器大小。 表格空間必須識別已存在於應用程式伺服器上的 DMS 表格空間。
- REBALANCE
- 對於一般及大型自動儲存體表格空間,起始在最近新增的儲存體路徑上建立儲存器,以及/或從處於
捨棄擱置
狀態的儲存體路徑中捨棄儲存器。 在重新平衡期間,資料會移至新路徑上的儲存器,並從已捨棄路徑上的儲存器中移出。 重新平衡在背景中非同步執行,不會影響資料的可用性。附註: 如果在其中執行陳述式的工作單元已回復,則 SUSPEND 或 RESUME 子句會在處理陳述式時生效,且不會回復。- SUSPEND
- 暫停指定表格空間上的作用中重新平衡作業。 如果沒有作用中的重新平衡作業存在,則不會採取任何動作,且會傳回成功。 暫停狀態是持續性,如果在暫停重新平衡時取消啟動資料庫,則在資料庫啟動時,會從暫停狀態重新啟動重新平衡作業。 暫停已暫停的重新平衡作業沒有作用,且會傳回成功。
- RESUME
- 回復先前已暫停的重新平衡作業。 如果沒有作用中的重新平衡作業存在,則不會採取任何動作,且會傳回成功。 如果因為線上備份作業而導致重新平衡 PAUSED ,則表格空間重新平衡會離開暫停狀態,但會保持暫停狀態,直到線上備份完成為止。
- PREFETCHSIZE
- 指定在查詢參照之前先讀取查詢所需的資料,以便查詢不需要等待執行 I/O。
- AUTOMATIC
- 指定要自動更新表格空間的預先提取大小; 亦即,預先提取大小由資料庫管理程式管理。
每當表格空間中的儲存器數目變更時 (在順利執行新增或捨棄一個以上儲存器的 ALTER TABLESPACE 陳述式之後) ,資料庫即會自動更新預先提取大小。 預先提取大小也會在資料庫啟動時自動更新。
在 PREFETCHSIZE 子句中指定數值,即可關閉自動更新預先提取大小。
頁數 - 指定在執行資料預先提取時,從表格空間讀取的 PAGESIZE 頁數。 最大值是 32767。
- 整數 K | M
- 將預先提取大小值指定為整數值,後面接著 K (代表 KB) 或 M (代表 MB)。 如果以這種方式指定,則會使用位元組數除以頁面大小的下限來決定預先提取大小的頁數值。
- BUFFERPOOL bufferpool-name
- 用於此表格空間中表格的緩衝池名稱。 緩衝池目前必須存在於資料庫中 (SQLSTATE 42704)。 必須為緩衝池定義表格空間的資料庫分割區群組 (SQLSTATE 42735)。
- OVERHEAD 毫秒數 or OVERHEAD INHERIT
- 指定 I/O 控制器額外負擔及磁碟探查和延遲時間。 此值是用來決定查詢最佳化期間的 I/O 成本。 如需調整的相關資訊,請參閱 表格空間對查詢最佳化的影響。
- 毫秒數
- 指定 I/O 控制器額外負擔及磁碟探查和延遲時間 (毫秒) 的任何數值文字 (整數、十進位或浮點)。 此數字應該是屬於表格空間之所有儲存器的平均值,如果所有儲存器都不相同的話。
- 繼承
- 如果指定 INHERIT ,則必須使用自動儲存體來定義表格空間,且會從儲存體群組動態繼承 OVERHER。 如果未使用自動儲存體定義表格空間,則無法指定 INHERIT (SQLSTATE 42858)。 如果儲存體群組的 OVERHEAD 設為 UNDEFINED ,且您將 OVERHEAD 設為 INHERIT ,則會使用資料庫建立預設值。
10.1 版 對於在 Db2® 或更新版本中建立的資料庫,預設 I/O 控制器額外負擔及磁碟探查和延遲時間為 6.725 毫秒。
對於從舊版 Db2 升級至 Db2 10.1 版 或更新版本的資料庫,預設 I/O 控制器額外負擔及磁碟探查和延遲時間如下:- 對於在 Db2 9.7 版或更高版本中建立的資料庫 7.5 毫秒。
- TRANSFERRATE number-of-milliseconds 或 TRANSFERRATE INHERIT
- 指定將一頁讀入記憶體的時間。 此值是用來決定查詢最佳化期間的 I/O 成本。 如需調整的相關資訊,請參閱 表格空間對查詢最佳化的影響。
- 毫秒數
- 指定將一頁 (4 K 或 8 K) 讀入記憶體的時間 (毫秒) 的任何數值文字 (整數、十進位或浮點數)。 此數字應該是屬於表格空間之所有儲存器的平均值,如果所有儲存器都不相同的話。
- 繼承
- 如果指定 INHERIT ,則必須使用自動儲存體來定義表格空間,並從儲存體群組動態繼承 TRANSFERRATE。 如果未使用自動儲存體定義表格空間,則無法指定 INHERIT (SQLSTATE 42858)。 如果儲存體群組的 DEVICE READ RATE 設為 UNDEFINED ,且使用者將 TRANSFERRATE 設為 INHERIT ,則會使用資料庫建立預設值。
當自動儲存體表格空間從其使用的儲存體群組繼承 TRANSFERRATE 設定時,儲存體群組的 DEVICE READ RATE (以每秒 MB 數 MB 數為單位) 會轉換成每頁讀取的毫秒數,以代表表格空間的 PAGESIZE 設定。 轉換公式如下:
TRANSFERRATE = (1/裝置讀取率) * 1000/1024000 * PAGESIZE
對於在 Db2 10.1 版 或更新版本中建立的資料庫,將一頁讀入記憶體 4 KB PAGESIZE 表格空間的預設時間為 0.04 毫秒。
對於從舊版 Db2 升級至 Db2 10.1 版 或更新版本的資料庫,將一頁讀取至記憶體的預設時間如下:- 0.06 毫秒 (針對在 Db2 9.7 版或更高版本中建立的資料庫)
- 檔案系統快取或無檔案系統快取
- 指定在檔案系統層次是緩衝 I/O 作業還是非快取 I/O 作業。 I/O 模式的變更不是動態的,將在下一次資料庫啟動時生效。 預設 I/O 模式是根據作業系統、檔案系統類型,以及在 SMS 表格空間的情況下,資料物件類型來決定。 如需相關資訊,請參閱
檔案系統快取配置
。 選擇非預設檔案系統快取選項之後,就無法回到預設 (未指定) 行為。 相反地,必須明確選取檔案系統快取模式。- 檔案系統快取
- 在檔案系統層次快取目標表格空間中的所有 I/O 作業。
- 沒有檔案系統快取
- 指定所有 I/O 作業都要略過檔案系統層次快取。 SMS 表格空間中的 LOB 及 Long 欄位資料除外。附註:
Db2 支援實體磁區大小為 512 位元組或 4096 位元組的磁碟裝置。
依預設,不會啟用 4096 位元組磁區大小的支援,可以使用 DB2_4K_DEVICE_SUPPORT 登錄變數來啟用。
- 已捨棄表格回復
- 指定是否可以使用 ROLLFORWARD DATABASE 指令的 RECOVER DROPPED TABLE ON 選項來回復已從 tablespace-name 中捨棄的表格。 對於分割表格,即使關閉一個以上表格空間中未分割表格的已捨棄表格回復,也一律會開啟已捨棄表格回復。
- ON
- 指定可以回復已捨棄的表格。
- OFF
- 指定無法回復已捨棄的表格。
- 切換連線
- 指定如果表格空間的儲存器變成可存取,則將處於 OFFLINE 狀態的表格空間變成線上。 如果無法存取儲存器,則會傳回錯誤 (SQLSTATE 57048)。
- 自動調整大小
- 指定是否要啟用資料庫管理空間 (DMS) 表格空間或自動儲存體表格空間的自動調整大小功能。 可自動調整大小的表格空間會在已滿時自動增加大小。
- NO
- 指定停用 DMS 表格空間或自動儲存體表格空間的自動調整大小功能。 如果停用自動調整大小功能,則不會保留先前指定給 INCREASESIZE 或 MAXSIZE 的任何值。
- YES
- 指定要啟用 DMS 表格空間或自動儲存體表格空間的自動調整大小功能。
- INCREASESIZE integer PERCENT 或 INCREASESIZE integer K | M | G
- 指定在表格空間已滿且已提出空間要求的情況下,每個資料庫分割區自動增加啟用自動調整大小的表格空間的數量。 整數值必須後接:
- PERCENT ,以在提出空間要求時表格空間大小的百分比來指定數量。 指定 PERCENT 時,整數值必須在 0-100 範圍內 (SQLSTATE 42615)。
- K (表示 KB)、M (表示 MB) 或 G (表示 GB) 以指定數量 (以位元組為單位)。
- MAXSIZE integer K | M | G 或 MAXSIZE NONE
- 指定已啟用自動調整大小的表格空間可自動增加至的大小上限。
- 整數
- 指定每個資料庫分割區可自動增加 DMS 表格空間或自動儲存體表格空間的大小硬性限制。 整數值必須後接 K (以 KB 為單位)、M (以 MB 為單位) 或 G (以 GB 為單位)。 實際使用的值可能略小於指定的值,因為資料庫管理程式會努力維護表格空間中儲存器之間的一致成長。
- NONE
- 指定容許表格空間成長至檔案系統容量或表格空間大小上限 (如
SQL 及 XML 限制
所述)。
- 轉換為大型
- 將現有的一般 DMS 表格空間修改為大型 DMS 表格空間。 在轉換期間會鎖定表格空間及其內容。 此選項只能在一般 DMS 表格空間上使用。 如果指定 SMS 表格空間、暫存表格空間或系統型錄表格空間,則會傳回錯誤 (SQLSTATE 560CF)。 您無法轉換包含分割表格之資料分割區的表格空間,該分割表格在另一個表格空間中具有資料分割區 (SQLSTATE 560CF)。 轉換在確定之後無法回復。 如果使用 DATA CAPTURE CHANGES 定義表格空間中的表格,請考量目標表格及表格空間的儲存體及容量限制。
- LOWER HIGH WATER MARK
- 對於具有可收回儲存體的自動儲存體及非自動儲存體表格空間,會觸發延伸範圍移動作業,以將表格空間中的延伸範圍數目上限向下移動。 雖然會降低高臨界值,但不會減少表格空間的大小。 後面必須接著 ALTER TABLESPACE REDUCE (針對自動儲存體表格空間) REDUCE (針對自動儲存體表格空間) 或 ALTER TABLESPACE REDUCE (針對非自動儲存體表格空間使用 db-container-clause 或 all-containers-clause )。附註: 具有 STOP 子句的 LOWER HIGH 臨界值選項,以及具有 MAX、數值、PERCENT 或 STOP 子句的 REduce 選項,僅適用於具有可收回儲存體屬性的資料庫管理及自動儲存體管理表格空間。 此外,必須指定這些選項,並在沒有任何其他選項 (包括彼此) 的情況下執行這些選項。附註: 此子句會在處理陳述式時生效,而且如果在其中執行陳述式的工作單元已回復,則不會回復該陳述式。
- STOP
- 對於具有可收回儲存體的自動儲存體及非自動儲存體表格空間,如果進行中,則會岔斷延伸範圍移動作業。
- USING STOGROUP
- 將表格空間與不同的儲存體群組相關聯。 與表格空間相關聯的資料會從其現行儲存體群組移至指定的儲存體群組。 除非使用 MANAGED BY AUTOMATIC STORAGE 子句 (SQLSTATE 42858) 指定,否則此子句僅適用於自動儲存體表格空間。
對於自動儲存體表格空間,會在確定時啟動隱含的 REBALANALT。 若要將資料庫管理的表格空間轉換為自動儲存體管理的表格空間,則需要明確的 REBALANALE 陳述式。
在 分割的資料庫環境中,若要變更表格空間的儲存體群組關聯,必須在所有資料庫分割區上使用自動儲存體來定義表格空間。 如果未使用自動儲存體定義任何資料庫分割區上的表格空間,則除非以 MANAGED BY AUTOMATIC STORAGE 子句 (SQLSTATE 42858) 指定,否則此指令會失敗。 不過,此指令不需要表格空間在所有資料庫分割區上具有相同的儲存體群組關聯,即可順利在所有資料庫分割區上移動表格空間。
- storagegroup-name
- 識別儲存表格空間資料的儲存體群組。 storagegroup-name 必須識別存在於現行伺服器上的儲存體群組 (SQLSTATE 42704)。 這是一個單部分名稱。
- DATA TAG integer-constant、DATA TAG INHERIT 或 DATA TAG NONE
- 指定表格空間中資料的標籤。 此值可以作為工作類別定義中 WLM 配置的一部分,或在臨界值定義內參照。 如需相關資訊,請參閱 CREATE WORK CLASS SET、ALTER WORK CLASS SET、CREATE THRESHOLD 及 ALTER THRESHOLD 陳述式。 此子句不能指定給 USER 或 SYSTEM TEMPORARY 表格空間或型錄表格空間 (SQLSTATE 42858)。
- 整數常數
- integer-constant 的有效值為 1-9 範圍內的整數。 如果指定 integer-constant 且相關聯的儲存體群組存在,則指定給表格空間的資料標籤會置換指定給相關聯儲存體群組的任何資料標籤值。
- 繼承
- 如果指定 INHERIT ,則必須使用自動儲存體來定義表格空間,且 DATA TAG 會動態繼承自儲存體群組。 如果未使用自動儲存體定義表格空間,則無法指定 INHERIT (SQLSTATE 42858)。
- NONE
- 如果指定 NONE ,則沒有資料標籤。
- 由自動儲存體管理
- 啟用資料庫管理 (DMS) 表格空間的自動儲存體。 啟用自動儲存體之後,無法在表格空間上執行進一步的儲存器作業。 所轉換的表格空間不能使用 RAW (DEVICE) 儲存器。
如果從 DMS 表格空間轉換為自動儲存體表格空間時未包括 USING STOGROUP 子句,則會指定預設儲存體群組。
規則
- 除非將那些子句導向至不同的資料庫分割區 (SQLSTATE 429BC) ,否則無法在與 ADD、DROP、EXTEND、REDUCE 及 RESIZE 相同的陳述式中指定 BEGIN NEW STRIPE SET 子句。
- 以 TO STRIPE SET 子句指定的分段集值必須在所變更表格空間的有效範圍內 (SQLSTATE 42615)。
- 在表格空間中新增或移除空間時,必須遵循下列規則:
- 如果每一個儲存器的大小都在增加,則可以在相同的陳述式中使用 EXTEND 及 RESIZE (SQLSTATE 429BC)。
- 如果每一個儲存器的大小都是遞減 (SQLSTATE 429BC) ,則可以在相同的陳述式中使用 REduce 及 RESIZE。
- 除非指向不同的資料庫分割區 (SQLSTATE 429BC) ,否則無法在相同的陳述式中使用 EXTEND 及 REQURET。
- 除非將 ADD 導向至不同的資料庫分割區 (SQLSTATE 429BC) ,否則無法在相同陳述式中搭配 REDULE 或 DROP 一起使用。
- DROP 無法與相同陳述式中的 EXTEND 或 ADD 一起使用,除非將它們導向至不同的資料庫分割區 (SQLSTATE 429BC)。
- 無法針對系統管理的空間 (SMS) 表格空間、使用自動儲存體建立的暫存表格空間或定義為使用原始裝置儲存器的 DMS 表格空間 (SQLSTATE 42601) 指定 AUTORESIZE、INCREASESIZE 或 MAXSIZE 子句。
- 如果表格空間無法自動調整大小 (SQLSTATE 42601) ,則無法指定 INCREASESIZE 或 MAXSIZE 子句。
- 指定新的表格空間大小上限時,該值必須大於每一個資料庫分割區上的現行大小 (SQLSTATE 560B0)。
- 無法在自動儲存體表格空間上執行儲存器作業 (ADD、EXTEND、RESIZE、DROP 或 BEGIN NEW STRIPE SET) ,因為資料庫管理程式正在控制這類表格空間的空間管理 (SQLSTATE 42858)。
- 原始裝置儲存器無法新增至可自動調整大小的 DMS 表格空間 (SQLSTATE 42601)。
- 無法在與任何其他子句相同的陳述式中指定 CONVERT TO LARANCE 子句 (SQLSTATE 429BC)。
- 重新平衡子句不能與任何其他子句一起指定 (SQLSTATE 429BC)。
- REBALANCE 子句僅適用於一般及大型自動儲存體表格空間 (SQLSTATE 42601)。 應該捨棄並重建暫時自動儲存體表格空間,以利用最近新增的儲存體路徑,或從正在捨棄的儲存體路徑中移除其儲存器。
- 如果表格空間處於
DMS 重新平衡器作用中
狀態 (SQLSTATE 55041) ,則無法指定儲存器作業及 REBALANCE 子句。 - 無法對暫存表格空間指定 USING STOGROUP 子句 (SQLSTATE 42858)。
- Db2 pureScale ® 環境不支援下列子句:
- ADD db-container-clause
- BEGIN NEW STRIPE SET db-container-clause
- DROP db-container-clause
- REBALANCE
- RESIZE db-container-clause
- USING STOGROUP
- ADD、DROP、RESIZE、EXTEND、REDUCE、LOWER HIGH WAYS MARK 及 BEGIN_STRIPE_SET 子句無法與 MANAGED BY AUTOMATIC STORAGE 子句或 USING STOGROUP 子句搭配使用 (SQLSTATE 429BC)。
- 如果表格空間處於
rebalancer is active
狀態 (SQLSTATE 55041) ,則無法指定 USING STOGROUP 子句。 - 儲存器大小限制: 在 DMS 表格空間中,儲存器必須至少是延伸範圍大小頁面長度的兩倍 (SQLSTATE 54039)。 儲存器的大小上限視作業系統而定。
- 儲存器定義長度限制: 每一個儲存器定義需要 53 個位元組加上儲存儲存器名稱所需的位元組數。 表格空間所有儲存器定義的合併長度不能超過 208 KB (SQLSTATE 54034)。
注意事項
- 預設儲存器作業是在 ALTER TABLESPACE 陳述式中指定,但未明確導向特定資料庫分割區的儲存器作業。 這些儲存器作業會傳送至陳述式中未列出的任何資料庫分割區。 如果這些預設儲存器作業未傳送至任何資料庫分割區,因為明確提及儲存器作業的所有資料庫分割區,則會傳回警告 (SQLSTATE 01589)。
- 在表格空間中新增或移除空間,並確定交易之後,就可以在儲存器之間重新平衡表格空間的內容。 在重新平衡期間,對表格空間的存取不受限制。
- 如果表格空間處於 OFFLINE 狀態且儲存器可存取,則使用者可以中斷所有應用程式的連線並重新連接至資料庫,以讓表格空間脫離 OFFLINE 狀態。 或者, SWITCH ONLINE 選項可讓表格空間啟動 (超出 OFFLINE) ,而其餘資料庫仍在啟動及使用中。
- 如果將多個儲存器新增至表格空間,則建議在相同陳述式中新增它們,以便重新平衡的成本只會產生一次。 嘗試將儲存器新增至單一交易內個別 ALTER TABLESPACE 陳述式中的相同表格空間,會導致錯誤 (SQLSTATE 55041)。
- 任何延伸、減少、調整大小或捨棄不存在的儲存器的嘗試都會產生錯誤 (SQLSTATE 428B2)。
- 延伸、減少或調整容器大小時,容器類型必須符合建立容器時所使用的類型 (SQLSTATE 428B2)。
- 嘗試使用個別 ALTER TABLESPACE 陳述式,但在單一交易內變更相同表格空間中的儲存器大小,將會產生錯誤 (SQLSTATE 55041)。
- 在分割的資料庫中,如果在相同的實體節點上存在多個資料庫分割區,則無法對此類資料庫分割區指定相同的裝置或特定路徑 (SQLSTATE 42730)。 對於此環境,請為每一個資料庫分割區指定唯一 container-string ,或使用相對路徑名稱。
- 雖然表格空間定義是交易式,且表格空間定義的變更會在確定時反映在型錄表格中,但除非下次啟動資料庫,否則無法使用具有新定義的緩衝池。 發出 ALTER TABLESPACE 陳述式時正在使用的緩衝池將在過渡期間繼續使用。
- REDUCE、RESIZE 或 DROP 選項會嘗試釋放 DMS 表格空間未用的延伸範圍 (必要的話) , REDUCE 選項會嘗試釋放自動儲存體表格空間未用的延伸範圍。 移除未用的延伸範圍可讓表格空間高臨界值減少至精確代表所使用空間量的值,進而可大幅減少表格空間大小。
- 轉換為大型 DMS 表格空間: 轉換之後,建議您發出 COMMIT 陳述式,然後增加表格空間的儲存體容量。
- 如果表格空間已啟用自動調整大小,除非 MAXSIZE 表格空間屬性已設為 NONE ,否則應該增加它。
- 如果表格空間未啟用自動調整大小,您有兩個選項:
- 發出 ALTER TABLESPACE 陳述式並指定 AUTORESIZE YES 選項,以啟用自動調整大小。
- 透過新增分段集及/或延伸現有儲存器的大小來新增更多儲存體。
- 您可以使用 REORG INDEXES ALL 指令搭配 REBUILD 選項來重建索引。 指定分割表格的 ALLOW NO ACCESS 選項。
- 或者,可以重組表格 (非 INPLACE) ,這將重建所有索引並讓表格每頁支援超過 255 列。
- 在儲存體路徑上具有處於
捨棄擱置
狀態之儲存器的自動儲存體表格空間重新平衡將會捨棄那些儲存器。 可能需要建立新的儲存器,以保留正在從所捨棄儲存器中移出的資料。 資料庫中的其他儲存體路徑必須有足夠的可用空間,以容許建立那些儲存器,否則會傳回錯誤 SQLSTATE 57011。 實際需要的可用空間量取決於許多因素,包括高臨界值範圍的位置及要變更的分段集。 不過,為了確保作業成功,在剩餘儲存體路徑上應該至少有足夠的可用空間,因為要捨棄的儲存器正在耗用空間。 - 如果指定 REBALANCE 子句,但資料伺服器判定不需要建立新的儲存器或捨棄現有的儲存器,則不會發生重新平衡,且陳述式會成功並發出警告 (SQLSTATE 01690)。
- 除了在最近新增的路徑上新增儲存器之外,還可以使用 REBALANCE 作業在現有儲存體路徑上新增儲存器。 會檢查表格空間中的每一個分段集,並識別特定分段集未使用的儲存體路徑。 對於所識別的每一個儲存體路徑,如果有足夠的可用空間,則會建立新的儲存器。 儲存器將具有與分段集中其他儲存器相同的大小。 如果給定的儲存體路徑用盡空間,表格空間停止使用它 (透過在其他路徑上建立分段集) ,並提供更多儲存體給路徑,則這將是有益的。 在此情況下,未新增任何路徑,但重新平衡會嘗試將該儲存體路徑併入之前未併入的分段集中。
- 當正在進行自動儲存體表格空間的重新平衡時,仍然可以自動調整大小。
- 當 MANAGED BY AUTOMATIC STORAGE 子句針對自動儲存體啟用 DMS 表格空間時,該表格空間具有一個以上使用者定義 (非自動儲存體) 儲存器的分段集,以及一個以上自動儲存體儲存器的分段集。 重新平衡表格空間 (使用 REBALANCE 子句) 會移除所有使用者定義的儲存器。 資料庫管理程式可能會延伸現有的自動儲存體儲存器,或建立新的自動儲存體儲存器,以保留從使用者定義儲存器移動的資料。
- 替代語法: 基於與舊版 Db2 及其他資料庫產品的相容性,支援下列各項。 這些替代方案是非標準的,不應該使用。
- 可以指定 NODE 來取代 DBPARTITIONNUM。
- 可以指定 NODES 來取代 DBPARTITIONNUMS。
- 若為 Db2 Developer-C Edition:
- 變更自動調整大小的表格空間而不指定 MAXSIZE 將隱含地將 MAXSIZE 設為剩餘容量,直到定義的儲存體大小為止。
- 嘗試調整大小、新增或延伸大於已定義儲存體大小之所有表格空間的儲存器大小會導致失敗。
- 如果存在尚未確定的後續 ALTER TABLESPACE ,則變更表格空間會失敗。
範例
- 範例 1: 將裝置新增至 PAYROLL 表格空間。
ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) - 範例 2: 變更 ACCOUNTING 表格空間的預先提取大小及 I/O 額外負擔。
ALTER TABLESPACE ACCOUNTING PREFETCHSIZE 64 OVERHEAD 19.3 - 範例 3: 建立表格空間 TS1,然後調整儲存器大小,讓所有儲存器都有 2000 頁。 (會顯示達成此調整大小的三個不同的 ALTER TABLESPACE 陳述式。)
或CREATE TABLESPACE TS1 MANAGED BY DATABASE USING (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 500, FILE 'cont2' 700) ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000)
或ALTER TABLESPACE TS1 RESIZE (ALL 2000)ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1500, FILE 'cont2' 1300) - 範例 4: 將 DATA_TS 表格空間中的所有儲存器擴充 1000 頁。
ALTER TABLESPACE DATA_TS EXTEND (ALL 1000) - 範例 5: 將 INDEX_TS 表格空間中所有儲存器的大小調整為 100 MB (MB)。
ALTER TABLESPACE INDEX_TS RESIZE (ALL 100 M) - 範例 6: 新增三個新的儲存器。 延伸第一個儲存器,並調整第二個儲存器的大小。
ALTER TABLESPACE TS0 ADD (FILE 'cont2' 2000, FILE 'cont3' 2000) ADD (FILE 'cont4' 2000) EXTEND (FILE 'cont0' 100) RESIZE (FILE 'cont1' 3000) - 範例 7: 表格空間 TSO 存在於資料庫分割區 0、1 及 2 上。 將新的儲存器新增至資料庫分割區 0。 延伸資料庫分割區 1 上的所有儲存器。 調整所有資料庫分割區 (不是明確指定的資料庫分割區 (即資料庫分割區 0 及 1)) 上的儲存器大小。
RESIZE 子句是此範例中的預設儲存器子句,將在資料庫分割區 2 上執行,因為其他作業明確地傳送至資料庫分割區 0 及 1。 不過,如果只有這兩個資料庫分割區,則陳述式會成功,但會傳回警告 (SQL1758W) ,指出已指定但未使用預設儲存器。ALTER TABLESPACE TS0 ADD (FILE 'A' 200) ON DBPARTITIONNUM (0) EXTEND (ALL 200) ON DBPARTITIONNUM (1) RESIZE (FILE 'B' 500) - 範例 8: 啟用表格空間 DMS_TS1的自動調整大小選項,並將其大小上限設為 256 MB。
ALTER TABLESPACE DMS_TS1 AUTORESIZE YES MAXSIZE 256 M - 範例 9: 啟用表格空間 AUTOSTORE1的自動調整大小選項,並將其成長率變更為 5%。
ALTER TABLESPACE AUTOSTORE1 AUTORESIZE YES INCREASESIZE 5 PERCENT - 範例 10: 將名為 MY_TS 的可自動調整大小表格空間的成長率變更為 512 KB ,並將其大小上限設為儘可能大。
ALTER TABLESPACE MY_TS INCREASESIZE 512 K MAXSIZE NONE - 範例 11: 針對資料庫管理的表格空間 DMS_TS10 啟用自動儲存體,並讓它使用儲存體群組 sg_3。
ALTER TABLESPACE DMS_TS10 MANAGED BY AUTOMATIC STORAGE USING STOGROUP sg_3 - 範例 12:ALTER DATABASE 陳述式已從目前連接的資料庫中移除路徑 /db/filesystem1 及 /db/filesystem2 。 名稱為 PRODTS1、 PRODTS2及 PRODTS3 的表格空間是唯一使用已移除路徑的表格空間。 重新平衡這些表格空間。 必須使用三個 ALTER TABLESPACE 陳述式。
ALTER TABLESPACE PRODTS1 REBALANCE ALTER TABLESPACE PRODTS2 REBALANCE ALTER TABLESPACE PRODTS3 REBALANCE - 範例 13: 啟用資料庫管理的表格空間 DATA1 的自動儲存體,並從表格空間中移除所有現有的非自動儲存體儲存器。 必須先確定第一個陳述式,然後才能執行第二個陳述式。
ALTER TABLESPACE DATA1 MANAGED BY AUTOMATIC STORAGE ALTER TABLESPACE DATA1 REBALANCE - 範例 14: 觸發具有可收回儲存體屬性之自動儲存體表格空間的延伸範圍移動,以將儲存器大小減少 10 MB。
ALTER TABLESPACE DMS_TS1 REDUCE 10 M - 範例 15: 觸發具有可收回儲存體屬性之非自動儲存體表格空間的延伸範圍移動,然後將每一個儲存器的大小減少 10 MB。
ALTER TABLESPACE TBSP1 LOWER HIGH WATER MARK ALTER TABLESPACE TBSP1 REDUCE (ALL CONTAINERS 10 M)
