发布新日志

  • 实现DB2备份恢复的步骤与操作中的问题

    2012-03-15 16:17:43

      下面的文章主要介绍的是DB2备份恢复在实际操作中的有感有问,如果你对DB2备份恢复心存好奇的话,以下的文章将会揭开它的神秘面纱,以下就是具体内容的描述,希望在你今后的学习中会有所帮助。

      练手DB2备份与恢复,盲人摸象一般捣腾了好几天,终于成功实现联机DB2备份恢复了。先讲下我怎么做的。

      

    创建数据库testdb
    db2 create database testdb using codeset UTF-8 territory US 
    
    开启联机备份
    db2 update db cfg for testdb using userexit on logretain on trackmod on 
    
    创建备份目录
    mkdir /backup/db2inst1  chown db2inst1:db2grp1 /backup/db2inst1
    
    重启db2实例,进行一次冷备,时间戳为20100224111110
    db2stop force  db2start  db2 backup db testdb to /backup/db2inst1 
    
    创建数据库表
    create table T(  a int,  b int,  c int  ) 
    
    在T表中插入100条数据0,0,0
    进行一次联机备份,时间戳为20100224113029
    
    db2 backup db testdb online to /backup/db2inst1 
    查看首个活动日志,为S00000001.LOG
    
    db2 get db cfg for testdb 
    在T表中插入100条数据1,1,1
    
    进行一次联机备份,时间戳为20100224113530
    
    db2 backup db testdb online to /backup/db2inst1
     查看首个活动日志,为S0000002.LOG
    
    db2 get db cfg for testdb 在T表中删除100条0,0,0
    将活动日志目录SQLOGDIR下的所有归档日志和活动日志都拷到/temp目录下
    
    将testdb整个删除
    db2 drop db testdb 
    DB2备份恢复到最后一个备份点20100224113530
    
    db2 restore database testdb from /backup/db2inst1 
    taken at 20100224113530 
    将所有归档日志和活动日志都拷到SQLOGDIR下,并更改用户和用户组
    chown db2inst1:db2grp1 * 日志回滚

      因为备份的时间戳日期和归档日志的时间似乎有点不同,我现在的做法只能是先执行下面这句,得到一个时间,然后再rollforward到那个时间才能成功回滚

      db2 rollforward db testdb stop

      执行上面语句以后提示以下内容

      

    SQL1276N Database "TESTDB" cannot be brought out of rollforward pending state   
    until roll-forward has passed a point in time greater than or equal to  
     "2010-02-24-03.12.34.000000 UTC",
     because node "0" contains information later  than the specified time.

      根据这里的提示信息,得到时间2010-02-24-03.12.34.000000,再rollforward到这个时间

      

      db2 rollforward db testdb to 2010-02-24-03.12.34.000000 and stop 不知道正常情况下高手们是怎么知道回滚到什么时间点的?特别请教一下。谢谢!

      

      在做回滚的时候我还发现了一个情况:根据活动日志可以DB2备份恢复到故障点到最后一次备份点之间的数据。

      

      在rollforward的时候将时间点往后多写一点

      

    $ db2 rollforward db testdb to 2010-02-24-03.15.00 and stop 
    然后他会提示
    SQL4970N Roll-forward recovery on database "TESTDB" cannot reach the   
    specified stop point (end-of-log or point-in-time) on database partition(s)  
     "0". Roll-forward recovery processing has halted on log file "S0000005.LOG".

      在这个时候数据库依旧是pending状态,再执行一次db2 rollforward db testdb stop就可以DB2备份恢复到删除数据库之前的状态了

  • Windows下DB2端口查看/修改/分配

    2011-05-19 11:02:16

    简单总结Windows下DB2端口有关操作.

    1. 端口查看

    1. 在DB2命令行中, 运行: DB2 GET DBM CFG |FIND "SVCENAME", 将会获得如下输出:
    TCP/IP Service name    (SVCENAME) = db2c_DB2

    2. 打开c:\windows\system32\drivers\etc\services, 查看1中找到的服务名称对应的端口号, 如:
    db2c_DB2    50000/tcp

    2. 端口修改

    直接修改ttc\Services中的对应端口. 然后db2stop, db2start即可.

    可通过telnet ip:port 检查是否已启动.

    3. 为新建的Instance分配端口

    1. 增加Service: 编辑etc\services文件, 增加Service名称及端口, 如增加:
    db2c_MYINST    50006/tcp

    2. 分配端口:
    db2 UPDATE DBM CFG USING SVCENAME db2c_MYINST

    参考: DB2 Instance实例 的创建 http://topic.csdn.net/t/20030704/12/1990179.html

Open Toolbar