数据保留允许您控制更改数据结构或元数据时,或将数据从一张表迁移到另一张表时,数据在目标数据库中的显示方式。
Optim™ Database Administrator 支持扩展的变更。当 ALTER 语句无法用于轻松实施更改时,需要使用扩展的变更。扩展的变更可保存并保留表数据,删除并重新创建表,然后重新装入数据。此外,将数据从一张表迁移到另一张表时,也必须保存并保留数据。
单击“更改管理脚本编辑器”中的预览命令链接时,Optim Database Administrator 会生成用于更改的命令。此外,当该产品检测到必须保留数据时,还会自动生成卸载和重新装入命令。DB2® 维护命令也会自动生成。之后如果要修改命令,可以单击数据选项来启动“定制数据保留”向导。该向导将引导您完成修改要使用的卸载和重新装入方法,修改卸载命令和重新装入命令,以及更改生成哪些 DB2 维护命令的过程。
数据保留在以下情况中会很有用:
- 删除表时
- 删除表时,您可能希望将该表中的数据存储在文件中以供将来使用,特别是需要撤销更改的情况。
- 创建表时
- 创建表时,您可能希望用其他表中的数据填充该表。可以使用更改管理主菜单项下的迁移数据操作将数据迁移到该表。然后,可以通过单击“更改管理脚本编辑器”命令部分中的数据选项来定制要装入的数据。“定制数据保留”向导将启动。该向导将引导您完成要从一张表中卸载并装入新表中的数据的映射过程。
提示: 要使用某个文件的数据来填充新表,可以使用 LOAD 或 IMPORT 实用程序。在“对象列表”中,右键单击新表,然后从菜单中选择相应的操作。
- 执行破坏性更改时
- 进行需要删除然后重新创建表的更改时,必须卸载该表中的数据,然后将其重新装入。
- 将数据从一张表迁移到另一张表时
- 迁移数据时,必须卸载源表中的数据,然后将这些数据重新装入目标表。
在“定制数据保留”向导的“卸载和重新装入信息”页面上,可以执行以下几个操作。
可以选择表并选中更改查询复选框以定制表的卸载命令。与此类似,可以选中更改映射复选框以定制重新装入命令。此时将显示帮助您定制卸载和重新装入命令的其他向导页面。必须定制数据保留更改命令才能正确部署某些更改。
限制: 生成更改命令时,会始终重新生成缺省数据保留条目。重新运行“定制数据保留”向导时,不会引入先前生成的数据保留命令。
卸载和重新装入命令方法
Optim Database Administrator 支持用于卸载和重新装入数据的多个不同方法。在“定制数据保留”向导的“指定数据卸载和重新装入信息”页面上,可以选择和定制用于卸载和重新装入操作的方法。
选择的卸载命令方法的类型决定了数据保留是外部还是内部的,如下表中所示:
表 1. 受支持的卸载方法和数据保留类型卸载提供程序 |
数据保留类型 |
导出为 DEL 数据格式 |
外部 |
导出为 IXF 数据格式 |
外部 |
高性能卸载(DB2 HPU 卸载命令) |
外部 |
内部数据保留提供程序 |
内部 |
内部数据保留游标提供程序 |
内部 |
使用外部数据保留,数据将保存到外部文件。数据将使用导出命令或 DB2 HPU 卸载到外部文件。
根据选择的重新装入命令方法,将使用导入或装入命令从外部文件重新装入这些数据。要将数据从一张表迁移到另一张表,必须使用外部数据保留,因为数据必须保存到外部文件。
使用内部数据保留,数据将内部保存在数据库中。当更改表时,该表在数据库中会重命名以创建影子表。重新创建该表后,数据将从影子表移入重新创建的已更改表。根据选择的卸载命令方法,将使用 INSERT 语句或使用“从游标装入”来移动数据。
缺省情况下,影子表会使用前缀“SHAD_”重命名。如果存在具有该名称的表,将删除该表后再创建影子表。可以定制用于内部卸载方法的选项,以指定使用不同前缀,或者如果存在具有该名称的表,可创建具有不同前缀的影子表。
内部数据保留的速度会比外部保留快,因为前者无需对文件执行 I/O。但是,使用内部数据保留时,请确保数据库中具有足够的空间。
需求: 要将高性能卸载指定为卸载方法,必须安装 DB2 High Performance Unload (HPU)
for Multiplatforms 或 DB2 High Performance Unload (HPU)
for Workgroups。否则,生成的卸载命令将失败。这些产品单独定价并单独安装。
当数据重新装入具有触发器的表中时,仅当数据使用导入命令重新装入或使用 INSERT 语句从数据文件中重新装入时,才会激活触发器。当使用装入命令重新装入数据或使用“从游标装入”从数据文件重新装入数据时,触发器不会激活,因为装入实用程序无法强制实施与触发器关联的业务规则。如果不希望激活触发器,请使用装入命令(或从游标装入)或修改生成的更改命令,以便所有触发器都在装入数据后再创建。
要点: 如果选择激活触发器的重新装入方法,请检查更改命令文件以验证数据重新装入的顺序。Optim Database Administrator 不会以您希望的激活触发器的方式来自动重新装入数据
高级数据保留方法
高级数据保留方法包括:
- 删除列
- 通过定制生成的卸载和重新装入命令,可以轻松管理删除列。可以更改命令以确保保留已删除列中的数据。还可以定制重新装入命令以确保已卸载的列相应映射到重新装入的列。
- 添加 NOT NULL 列
- 添加 NOT NULL 列对于具有缺省值的列来说很简单。如果列没有缺省值,请在“定制数据保留”向导的“定制卸载命令”页面上定制卸载命令的 SELECT 子句。
- 使用自动强制类型转换函数
- 如果卸载列和重新装入列的数据类型不匹配,可以使用自动强制类型转换函数来解决不匹配问题。在“定制数据保留”向导的“卸载和重新装入信息”页面或“定制卸载命令”页面上选择自动强制类型转换时,Optim Database Administrator 会自动在 export 或 unload 语句的 SELECT 子句中添加 CAST 列函数。可以选择缺省查询来还原到缺省 SELECT 子句。
限制: 当选择自动强制类型转换或缺省查询选项时,对 SELECT 子句所作的所有其他更改都将丢失。
受支持的 DB2 维护命令
在整个更改管理过程中,特定数据库数据包可能会变得不可运作,并且统计信息可能变得不准确。例如,删除对象时,DB2 将数据包标记为无效或不可运作。您可能需要发出重新绑定命令以基于最新的统计信息重新创建数据包。DB2 维护命令包括:
- Runstats 命令
- 在数据库已更改或数据装入表中之后,重新生成统计信息非常重要。
- 重新组织命令
- 表变更后,应重新组织所有索引。此外,表空间变更后,也应重新组织所有表和索引。缺省情况下,对模型进行正向工程时,Optim Database Administrator 将发出 REORG TABLE 命令,除非在“定制数据保留”向导的“维护命令”页面上清除了该选项。Optim Database Administrator 还将在表重新组织后自动生成 runstats 命令,以刷新统计信息。此外,还应重新绑定所有应用程序数据包以利用重新组织的数据。
有关重新组织命令的影响的更多信息,请参阅《DB2 命令参考大全》。
- 重新绑定命令
- 如果更改命令包含以下 DROP 语句,那么需要重新绑定数据包:
- TABLE
- TRIGGER
- MQT
- UDF
- VIEW
- ALIAS
- INDEX
- STRUCTURE TYPE
如果要进行多个更改,应重新绑定数据包以改进性能。Optim Database Administrator 会为更改管理脚本中定义的更改所影响的数据包生成重新绑定命令。
- 清空数据包高速缓存命令
- 更新统计信息之后,清空数据包高速缓存以便动态 SQL 语句将使用更新后的统计信息,这将会增强性能。