数据库恢复操作使用数据库备份映象来重新创建数据库。如果要将数据库从一台机器克隆到另一台,最简单的方法就是从备份映象恢复数据库。除非源系统上的数据库引用的文件系统和物理设备与目标系统的设置方法完全相同,否则在目标系统上还原数据库就需要执行重定向恢复操作。
重定向恢复操作包括两步数据库恢复过程,并且中间有一个表空间容器定义步骤:
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中国
作者
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
-
如何使用服务来平衡Oracle RAC 数据库工作负载
为不同的应用程序配置不同的服务,DBA可以更有效地平衡集群工作负载,在Oracle RAC数据库环境下实现更好的应用程序性能。