相同平台下DB2数据库使用重定向恢复示例

日期: 2008-06-18 作者:Alvin 来源:TechTarget中国

  数据库恢复操作使用数据库备份映象来重新创建数据库。如果要将数据库从一台机器克隆到另一台,最简单的方法就是从备份映象恢复数据库。除非源系统上的数据库引用的文件系统和物理设备与目标系统的设置方法完全相同,否则在目标系统上还原数据库就需要执行重定向恢复操作。


  重定向恢复操作包括两步数据库恢复过程,并且中间有一个表空间容器定义步骤:


  1. 带 REDIRECT 选项发出 RESTORE DATABASE 命令。


  2. 使用 SET TABLESPACE CONTAINERS 命令来定义被恢复的数据库的表空间容器(DB2 需要知道您想要让表空间驻留在目标系统上的什么位置)。


  3. 再次发出 RESTORE DATABASE 命令,这次指定 CONTINUE 选项。


  重要!整个重定向恢复操作必须在同一个会话中调用;否则,将返回 SQL0900N,恢复操作会失败,记住这一点很重要。确保不会发生这种情况的一个方法是创建并运行包含重定向恢复过程中全部三部分的脚本。


  下面是一次相同平台的 DB2 数据库使用重定向恢复的示例,脚本如下:


  第一步,在源系统中离线完全备份数据库


  –源系统 ZYSJK


  –源数据库 YNDC


C:Documents and SettingsAdministrator>cd /d D:backupautobakdb2


D:backupautobakdb2>db2 backup db YNDC


  这个映象的时间戳记是 20070315165040 ,该映象在 D:backupautobakYNDC.0DB2NODE0000CATN000020070315 中。


  DB2 在发出 BACKUP DATABASE 命令的目录中创建这个子目录树。子目录名称表示以下含义:


<database_alias.backup_type><instance_name><node_number><catalog_node_number><date>


  在这个子目录树中,将会有一个表示实际备份映象的文件(165040.0)。文件名表示获取备份的时间。


  第二步,在目标系统中创建相似的目录,并将备份文件拷贝至 165040.0 的文件至该目录下


C:Documents and SettingsAdministrator>cd


C:>mkdir D:backupautobakYNDC.0DB2NODE0000CATN000020070315


  注意!这是关键步骤:如果没有正确创建这个路径,后续的数据库恢复操作就会失败。


  第三步,查看源系统的数据库表空间情况


C:Documents and SettingsAdministrator>db2 list tablespaces


  当前数据库的表空间


  表空间标识 = 0


  名称 = SYSCATSPACE


  类型 = 系统管理空间


  内容 = 任何数据


  状态 = 0x0000


  详细解释:


  正常


  表空间标识 = 1


  名称 = TEMPSPACE1


  类型 = 系统管理空间


  内容 = 系统临时数据


  状态 = 0x0000


  详细解释:


  正常


  表空间标识 = 2


  名称 = USERSPACE1


  类型 = 系统管理空间


  内容 = 任何数据


  状态 = 0x0000


  详细解释:


  正常


  表空间标识 = 3


  名称 = YNDC


  类型 = 数据库管理空间


  内容 = 任何数据


  状态 = 0x0000


  详细解释:


  正常


  表空间标识 = 4


  名称 = SYSTOOLSPACE


  类型 = 系统管理空间


  内容 = 任何数据


  状态 = 0x0000


  详细解释:


  正常


  表空间标识 = 5


  名称 = USERTEMPSP


  类型 = 数据库管理空间


  内容 = 用户临时数据


  状态 = 0x0000


  详细解释:


  正常


  表空间标识 = 6


  名称 = TEMPSPACE8K


  类型 = 数据库管理空间


  内容 = 系统临时数据


  状态 = 0x0000


  详细解释:


  正常


  其中,标识为 0,1,2 的表空间是系统缺省的默认表空间,无需进行重定向操作,这里可以不必“理会”它。


  标识为 3,5,6 的表空间需要进行重定向操作,脚本如下(以下语句必须写在一个脚本中执行):


  第四步,在目标系统中创建数据库 YNDC ,然后通过表空间重定向还原数据库


db2 create db YNDC;


  执行下面的脚本,脚本清单:


restore db YNDC from d taken at 20070315165040 to d redirect;USING ( ’D:DB2ContainerTestDBSysData’ )


set tablespace containers for 4 using (PATH ’G:DB2Containner_2YNDCsys’ );


set tablespace containers for 3 using (FILE “G:DB2Containner_2YNDCYNDC” 5242880);


set tablespace containers for 5 using (FILE “G:DB2Containner_2YNDCUSERTEMPSP” 51200);


set tablespace containers for 6 using (FILE “G:DB2Containner_2YNDCTEMPSPACE8K” 51200);


restore db YNDC continue;


  第五步,验证目标系统中还原的数据库的表空间


db2 list db directory


db2 connect to YNDC


db2 list tablespace containers for 3


db2 list tablespace containers for 5


db2 list tablespace containers for 6


db2 connect reset


db2 terminate


  Edit by pjj in 2007-03-16 9:09 关于数据库重定向恢复数据库还有一点补充:如果源数据库的缓冲池较大,还原后目标数据库启动不了的情况下,在还原成功之后请修改缓冲池的大小。另外,在指定表空间容器的时候,需要注意目标表空间和源表空间的管理类型必须一致,系统管理表空间对应系统管理表空间,数据库管理表空间对应数据库管理表空间。就本例来说,标识为 3,5,6的表空间为数据库管理表空间,其它的为系统管理表空间。具体的设置语句也有不同,详细内容请参考上面的语句。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Alvin
Alvin

相关推荐