資料及 DB2 維護的指令

資料保留可讓您控制當變更資料結構或 meta 資料,或將資料從某個表格移轉至另一個表格時,在目標資料庫顯示資料的方法。

Optim™ Database Administrator 支援延伸變更。無法使用 ALTER 陳述式輕易實作變更時,即需要延伸變更。延伸變更會儲存並保留表格資料,捨棄並重建表格,然後重新載入資料。此外,當您將資料從某個表格移轉至另一個表格時,也必須儲存並保留資料。

當您在「變更管理 Script 編輯器」中按一下預覽指令鏈結時,Optim Database Administrator 即會產生該變更的指令。當產品偵測到必須保留資料時,也會自動產生卸載及重新載入指令。同時也會自動產生 DB2® 維護指令。然後,如果您要修改指令,可以按一下資料選項,以啟動「自訂資料保留」精靈。該精靈會引導您完成下列程序:修改要使用的卸載及重新載入方法、修改卸載指令及重新載入指令,以及變更要產生的 DB2 維護指令。

在下列狀況中,資料保留非常有用:
捨棄表格時
當您捨棄表格時,可能想要將該表格中的資料儲存至檔案中,以供日後使用,特別是以防您需要復原變更。
建立表格時
當您建立表格時,可能想要將另一個表格中的資料移入表格中。您可以透過使用變更管理主功能表項目下的移轉資料動作,將資料移轉至表格中。然後在「變更管理 Script 編輯器」的指令區段中,按一下資料選項,即可自訂您要載入的資料。這時會啟動「自訂資料保留」精靈。該精靈會引導您完成對映程序,對映您要從某個表格中卸載然後再載入到新表格的資料。
提示: 若要將某檔案中的資料移入新表格,您可以使用 LOAD 或 IMPORT 公用程式。在「物件清單」中,用滑鼠右鍵按一下新表格,然後從功能表中選取適當的動作。
執行破壞性變更時
進行的變更需要先捨棄再重建表格時,您必須先卸載該表格中的資料,然後再重新載入資料。
將資料從某個表格移轉至另一個表格時
移轉資料時,您必須卸載來源表格中的資料,然後再將資料重新載入目標表格。

在「自訂資料保留」精靈的「卸載及重新載入資訊」頁面上,您可以執行數個動作。 您可以選取表格,再選取變更查詢勾選框,以自訂該表格的卸載指令。同樣地,您可以選取變更對映勾選框,以自訂重新載入指令。這時會顯示協助您自訂卸載及重新載入指令的其他精靈頁面。您必須自訂資料保留變更指令,才能正確部署某些變更。

限制: 當您產生變更指令時,一律會重新產生預設的資料保留項目。重新執行「自訂資料保留」精靈的過程中,不會帶入之前產生的資料保留指令。

卸載及重新載入指令方法

Optim Database Administrator 支援數個用來卸載及重新載入資料的不同方法。您可以在「自訂資料保留」精靈的「指定資料卸載及重新載入資訊」頁面上,選擇及自訂用於卸載及重新載入作業的方法。

您選擇的卸載指令方法類型決定資料保留為外部或內部,如下表所示:
表 1. 支援的卸載方法及資料保留類型
卸載提供者 資料保留的類型
EXPORT for DEL 資料格式 外部
EXPORT IXF 資料格式 外部
高效能卸載(DB2 HPU 卸載指令) 外部
內部資料保留提供者 內部
內部資料保留游標提供者 內部

使用外部資料保留,資料會儲存至外部檔案中。使用 Export 指令或 DB2 HPU,將資料卸載至外部檔案。 視您選擇的重新載入指令方法而定,使用 Import 或 Load 指令,從外部檔案重新載入資料。當您將資料從某個表格移轉至另一個表格時,因為資料必須儲存至外部檔案,所以您必須使用外部資料保留。

使用內部資料保留,資料會儲存在資料庫內部中。變更表格時,會重新命名資料庫中的表格以建立陰影表格。重建表格之後,資料會從陰影表格移至已重建且已變更的表格。視您選取的卸載指令方法而定,使用 INSERT 陳述式或使用載入來源游標來移動資料。

依預設,會以字首 'SHAD_' 重新命名陰影表格。如果已存在使用該名稱的表格,則會在建立陰影表格之前捨棄該表格。您可以自訂內部卸載方法的選項,以指定使用不同的字首,或建立具有不同字首的陰影表格(如果已存在使用該名稱的表格)。

因為不需要檔案的 I/O,因此內部資料保留的速度會比外部保留更快。不過,當您使用內部資料保留時,請確定資料庫中有足夠的空間。

需求: 若要指定「高效能卸載」作為卸載方法,必須安裝 DB2 High Performance Unload (HPU) for Multiplatforms 或 DB2 High Performance Unload (HPU) for Workgroups。 否則,產生的卸載指令會失敗。這些產品是個別訂價且個別安裝的。

當資料重新載入具有觸發程式的表格時,只有在使用 Import 指令或從含有 INSERT 陳述式的資料檔重新載入資料時,才會啟動觸發程式。使用 Load 指令或從使用載入來源游標的資料檔重新載入資料時,並不會啟動觸發程式,因為「載入」公用程式無法強制執行與觸發程式相關聯的商業規則。如果您不要啟動觸發程式,請使用 Load 指令(或載入來源游標)或修改已產生的變更指令,以在載入資料之後,才建立任何觸發程式。

重要: 如果您選擇會啟動觸發程式的重新載入方法,請檢查變更指令檔,驗證資料的重新載入順序。Optim Database Administrator 不會以您預期啟動觸發程式的方法,自動重新載入資料

進階資料保留技術

進階資料保留技術包括下列項目:

捨棄直欄
透過自訂產生的卸載及重新載入指令,即可輕鬆地管理捨棄直欄。您可以變更指令,以確保保留已捨棄直欄中的資料。您也可以自訂重新載入指令,以確定已卸載的直欄適當地對映至已重新載入的直欄。
新增 NOT NULL 直欄
對具有預設值的直欄而言,新增 NOT NULL 直欄很簡單。如果直欄沒有預設值,請在「自訂資料保留」精靈的「自訂卸載指令」頁面上,自訂卸載指令中的 SELECT 子句。
使用自動強制轉型函數
如果卸載及重新載入直欄的資料類型不符,您可以使用「自動強制轉型」函數來解決不符的問題。當您在「自訂資料保留」精靈的「卸載及重新載入資訊」頁面或「自訂卸載指令」頁面上,選取自動強制轉型時,Optim Database Administrator 會自動在 export 或 unload 陳述式的 SELECT 子句中,新增 CAST 直欄函數。您可以選取預設查詢,以回復預設的 SELECT 子句。
限制: 當您選取自動強制轉型預設查詢選項時,會失去您對 SELECT 子句所做的任何其他變更。

受支援的 DB2 維護指令

在整個變更管理程序中,特定的資料庫套件可能會變成無效,且統計資料可能會變得不正確。例如,當您捨棄物件時,DB2 會將套件標記為無效。您可能需要發出 rebind 指令,才能根據最新的統計資料來重建套件。DB2 維護指令包括下列項目:
Runstats 指令
在變更資料庫之後,或資料載入表格之後,重新產生統計資料是很重要的。
Reorg 指令
變更表格時,您應該重組所有索引。變更表格空間時,也應該重組所有表格及索引。建立模型的正向工程時,Optim Database Administrator 依預設會發出 REORG TABLE 指令,除非您在「自訂資料保留」精靈的「維護指令」頁面上,清除該選項。重組表格之後,Optim Database Administrator 也會自動產生 runstats 指令,以重新整理統計資料。您也應該重新連結所有應用程式套件,才能利用重組的資料。

如需 reorg 指令影響的相關資訊,請參閱 DB2 Command Reference

Rebind 指令
如果您的變更指令包含下列 DROP 陳述式,則需要重新連結套件:
  • TABLE
  • TRIGGER
  • MQT
  • UDF
  • VIEW
  • ALIAS
  • INDEX
  • STRUCTURE TYPE

如果您正在進行數個變更,則應重新連結套件以提高效能。Optim Database Administrator 會針對受到變更管理 Script 中所定義變更影響的套件,產生 rebind 指令。

flush package cache 指令
在更新統計資料之後清除套件快取,動態 SQL 陳述式就會使用更新過的統計資料,進而提高效能。

建議與意見