关于DB2恢复时候不能停止前滚的问题

来源:互联网 发布:json get post 编辑:程序博客网 时间:2024/04/26 10:14

问题大致如下:

先用命令:恢复数据库

C:/Documents and Settings/tanchao>db2 restore db CASHINFO from C:/  into  fff
SQL2529W  警告!复原到与备份映像数据库不相同的现有数据库,现有数据库的别名 "FFF
与备份映像的别名 "CASHINFO" 不匹配,并且现有数据库的数据库名称 "FFF" 与备份映像
的数据库名称 "HBJY" 不匹配。目标数据库将被备份版本覆盖。将删除与目标数据库相关联
的“前滚”恢复日志。
想要继续吗?(y/n) y
DB20000I  RESTORE DATABASE 命令成功完成。

再用右击数据库名 停止前滚 没效果

用命令  C:/Documents and Settings/tanchao>db2 rollforward db FFF stop
SQL1276N  在前滚已经过大于或等于 "2009-06-25-04.24.14.000000"
的时刻之前,数据库 "FFF"不能脱离前滚暂挂状态,因为节点 "0"
中包含比指定时间更新的信息。

 

几经搜索,最后终于找到了答案,下面是解决上面问题的方法,贴出来希望对寻找的人有用。

 
  最近不断地有人问我怎么在命令行下面恢复数据库,我给每个人都进行了比较详细的说明;后来感觉这样的事情还是写出来比较好一些,于是就有了想写关于这个东西的念头。我想还是从讲故事开始把。。。。。。  
   
  那是一个冬天,很冷很冷的那种。当时做一个项目,采用IBM   RS6000小型机作为数据库的服务器,当时是第一次接触这种机器,感觉什么东西都很新鲜。在摆弄了几天之后我真正认识到学会使用CPL环境管理数据库是多么的关键,因为我把系统玩得不正常了,DB2cc在那上面启动不起来了(后来经过查验是AIX系统环境变量的问题)。当时我一下子就蒙到那里了,因为我刚做了备份后Drop了数据库准备重新恢复到另外一个地方的;后面开发还要用呢。这时候出问题可真是要命啊~~这个时候最需要的就是冷静,我回想起当时备份使用的命令行环境,肯定可以用它来恢复数据库的,但是怎么去重定向那些表空间呢?问题就在这里,原来都是用图形界面来完成的根本就没有考虑用命令行来做,弄得现在这么狼狈地。哎!早知如此,何必当初阿!  
   
  想想还是从信息中心找下把,不过运气还不错让我给找到了。在Command   Reference的Restore   DataBase章节中有个例子是关于重定向表空间的,于是我照着做了,具体过程如下:  
   
  第一步:建立一个新的数据库,在这里需要注意它的字符集,例如:  
   
  db2   create   db   test   on   /home/db2inst1   using   codeset   GBK   territory   zh_CN;  
   
  codeset   GBK   territory   zh_CN就是指定中文字符集的命令字  
   
  第二步:将需要恢复的数据库恢复到这个新建的数据库中,在这个命令运行的时候会有一个提示信息,大概得意思就是说你要恢复的数据库正试图覆盖一个数据库,原来数据库的数据将会被覆盖,你可以不管它,选择Yes就行,因为那个数据库就是你刚才新建的。  
   
  db2   restore   db   test1   from   /home/db2inst1/dbback   taken   at   20040330073123   into   test   REDIRECT   WITHOUT   ROLLING   FORWARD;  
   
  在这个命令中需要指定待恢复数据库的时间戳,REDIRECT   WITHOUT   ROLLING   FORWARD的意思是不要前滚。  
   
  第三步:重新定向表空间,我在这里使用的是文件型的表空间容器。  
   
  在这里需要注意的是你必须事先知道表空间容器的类型和大小。通过LIST   TABLESPACES命令可以查看到数据库表空间的数量、类型和ID。然后通过命令LIST   TABLESPACE   CONTAINERS   For   tablespaceID(在前面命令中显示的tablespaceID的值)   show   detail查看表空间容器的大小类型和位置,如下所示:  
   
  Tablespace   Containers   for   Tablespace   0  
     
    Container   ID                                                   =   0  
    Name                                                                   =   /home/smith/smith/NODE0000/  
                                                                                  SQL00001/SQLT0000.0  
    Type                                                                   =   Path  
    Total   pages                                                     =   895  
    Useable   pages                                                 =   895  
    Accessible                                                       =   Yes  
  接下来决定需要重定向表空间容器的类型位置和大小。重定向的表空间容器的size是不能小于当前值。  
   
  db2   =〉set   tablespace   containers   for   4   using   (file   /'/home/db2inst1/   long/'   51200);  
   
  db2   =〉set   tablespace   containers   for   3   using   (file   /'/home/db2inst1/temp/'   51200);  
   
  db2   =〉set   tablespace   containers   for   2   using   (file   /'/home/db2inst1/user/'   102400);  
   
  第四步:正式恢复数据库,打完收工。  
   
  db2   =>   restore   db   test1   continue;