|下面关于 db2inidb 实用程序的信息优先于《版本 7.2 新增内容》一书中的信息。
|db2inidb 是 DB2 附带交付的工具,可执行崩溃恢复或者使数据库处于前滚暂挂状态。
|暂挂 I/O 支持持续的系统可用性,方法是完全实现联机分割镜像处理,即分割镜像而不关闭数据库。如果您不能对大型数据库进行脱机或联机备份,可通过使用暂挂的 I/O 和分割镜像映象来从镜像映象中执行备份或系统复制。
|暂挂 I/O 避免了在采用数据库的分割镜像映象时执行磁盘写操作。除了联机备份和复原之外,所有数据库操作在数据库暂挂期间都应正常工作。但是,如果必须将缓冲池或日志缓冲区中的脏页清仓至日志中,则某些操作可能需要等待恢复 |I/O 写操作。一旦数据库 I/O 恢复,这些操作就应恢复正常。数据库 I/O 从它最初暂挂的同一连接恢复是很重要的。否则,如果它们需要将缓冲池中的脏页清仓至磁盘,后续连接尝试可能会挂起。一旦恢复数据库 |I/O,就会完成这些连接。如果连接尝试被挂起,并且不能从用来暂挂它的连接中恢复 |I/O,则将需要使用 RESTART 命令的 WRITE RESUME 选项来执行崩溃恢复。
|在分区数据库环境中,不需要同时对所有分区暂挂 |I/O 写操作。可以暂挂一个或多个分区的子集,以便创建分割镜像以执行脱机备份。如果子集中包括目录节点,则它必须是要暂挂的最后一个分区。
|对数据库创建镜像主要涉及到复制数据库目录和本地数据库目录的整个内容。本地数据库目录 sqldbdir 与主数据库目录位于文件结构的同一层。另外,如果日志目录和表空间容器不在数据库目录中,则还必须复制它们。因为分割镜像数据库独立于这些目录路径,所以这些目录复制至的路径必须与主系统的那些路径完全相同。这意味着实例也必须是相同的。由于存在这种相关性,因此,不可能在主数据库所在的同一系统上创建镜像数据库,除非使用 |db2inidb 工具的新选项"重定位"。
|“重定位”选项的目的在于使用指定的配置文件在给定系统上重定位数据库。这可能涉及到更改内部数据库目录、容器目录、日志目录、实例名和数据库名。假定数据库目录、容器目录和日志目录已成功镜像至主数据库所在系统上的不同目录路径,可将 |db2inidb 工具与“重定位”选项配合使用来更新镜像数据库的内部路径。可以下文中找到带有此选项的使用方案。
|根据镜像存储设备的方式,使用 db2inidb 的方式也将发生变化。以下用法假定整个数据库在存储器系统中是一致镜像的。
|在多节点环境中,db2inidb 工具一定要在每个分区上运行,才能从任何分区上使用分割镜像。通过使用 db2_all 命令,db2inidb 工具可以同时在所有分区上运行。 |
|创建克隆数据库
|此处的目标是在另一系统上使用主数据库的克隆。下列过程描述如何克隆数据库:
| db2 set write suspend for database
| db2 set write resume for database
|运行命令后, |主数据库应返回正常状态。
| db2start
|db2inidb database_name AS SNAPSHOT
|还可以使用此进程来执行脱机备份,但是如果在主数据库上复原,则不能使用此备份来进行前滚,原因是日志链将不匹配。
|将“分割镜像”用作备用数据库
|因为镜像(备用)数据库会持续前滚日志,所以会经常从主系统访存主数据库创建的新日志。以下过程描述如何将分割镜像用作备用数据库:
| db2 set write suspend for database
| db2 set write resume for database
| db2inidb database_name AS STANDBY
|将分割镜像用作备份映象
|下列过程描述如何将镜像数据库用作备份映象来覆盖复原主数据库:
|db2inidb database_name AS MIRROR
|将镜像分割到主数据库所在的同一系统上
|下列过程描述如何使用 db2inidb 工具的“重定位”选项将数据库镜像到主数据库所在的同一系统上。示例假定将在新实例中使用该数据库。
| db2 set write suspend for database
| db2 set write resume for database
| db2start
| db2inidb database_name as STANDBY relocate using config_file