您可以使用 db2pd 或 LIST UTILITIES 命令来监视数据库前滚操作的进度。

过程

  • 发出 LIST UTILITIES 命令并指定 SHOW DETAIL 参数

      db2 LIST UTILITIES SHOW DETAIL
  • 发出 db2pd 命令并指定 -recovery 参数:
    db2pd -d 数据库名 -reco

结果

对于前滚恢复,进度监视分为两个阶段:FORWARD 和 BACKWARD。FORWARD 阶段期间中,读取日志文件并将日志记录应用于数据库。对于前滚恢复,当此阶段开始时,将工作总量估计值指定为 UNKNOWN。按字节计的已处理工作量将随进程的继续而更新。

在 BACKWARD 阶段中,回滚 FORWARD 阶段期间中应用任何未落实的更改。提供了要处理的日志数据量的估计值(按字节计)。当进程继续运行时,会更新已处理的工作量(按字节计)。

示例

以下示例是使用 db2pd 命令监视前滚操作性能所获得的输出:

Recovery:
Recovery Status 0x00000401
Current Log S0000005.LOG
Current LSN 0000001F07BC
Current LSO 000002551BEA
Job Type ROLLFORWARD RECOVERY
Job ID 7
Job Start Time (1107380474) Wed Feb 2 16:41:14 2005
Job Description Database Rollforward Recovery
Invoker Type User
Total Phases 2
Current Phase 1 Progress:
Address PhaseNum Description StartTime CompletedWork TotalWork
0x0000000200667160 1 Forward Wed Feb 2 16:41:14 2005 2268098 bytes Unknown
0x0000000200667258 2 Backward NotStarted 0 bytes Unknown
以下示例是使用附带 SHOW DETAIL 选项的 LIST UTILITIES 命令监视数据库前滚操作性能所获得的输出:

ID                               = 7
Type = ROLLFORWARD RECOVERY
Database Name = TESTDB
Member Number = 0
Description = Database Rollforward Recovery
Start Time = 01/11/2012 16:56:53.770404
State = Executing
Invocation Type = User
Progress Monitoring:
Estimated Percentage Complete = 50
Phase Number = 1
Description = Forward
Total Work = 928236 bytes
Completed Work = 928236 bytes
Start Time = 01/11/2012 16:56:53.770492 Phase Number [Current] = 2
Description = Backward
Total Work = 928236 bytes
Completed Work = 0 bytes
Start Time = 01/11/2012 16:56:56.886036
以下示例是使用附带 SHOW DETAIL 选项的 LIST UTILITIES 命令监视表空间前滚操作性能所获得的输出:

ID                               = 17
Type = ROLLFORWARD RECOVERY
Database Name = TESTDB
Member Number = 0
Description = Offline Tablespace Rollforward Recovery: 3
Start Time = 01/11/2012 17:04:27.269171
State = Executing
Invocation Type = User
Progress Monitoring:
Estimated Percentage Complete = 63
Phase Number = 1
Description = Forward
Total Work = 142
Completed Work = 90
Start Time = 01/11/2012 17:04:27.269283 Phase Number [Current] = 2
Description = Backward
Total Work = 0
Completed Work = 0
Start Time = Not Started 关于crash recovery
如果DB2数据库遭受断电或者异常关闭,数据库没有干净的关闭,那么数据库在启动的时候将会
进行crash recovery. 但是如果数据库参数AUTORESTART设置为OFF的话,在启动数据库后DB2不会
进行CRASH RECOVERY。我们在连接到数据库的时候将会报SQL1015N 错误。 [yansp@db2server ~]$ db2 get db cfg for oracle | grep AUTORESTART
 Auto restart enabled                      (AUTORESTART) = OFF db2 => connect to oracle @
SQL1015N  The database is in an inconsistent state.  SQLSTATE=55025 这个时候需要我们手工进行CRASH RECOVERY。 db2 => restart database oracle @
DB20000I  The RESTART DATABASE command completed successfully. db2 => connect to oracle @    Database Connection Information  Database server        = DB2/LINUX 9.7.0
 SQL authorization ID   = YANSP
 Local database alias   = ORACLE 通过日志文件我们看一下DB2 CRASH RECOVERY的过程。 2013-02-03-06.27.22.704092+480 I1529901G434       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, base sys utilities, sqledint, probe:30
MESSAGE : Crash Recovery is needed.   <-- 需要进行crash recovery 2013-02-03-06.27.31.389376+480 I1530336G497       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:410
MESSAGE : Crash recovery started. LowtranLSN 00000000252E0010 MinbuffLSN   <--启动 Crash recovery 
          00000000252E0010 2013-02-03-06.27.31.463994+480 E1530834G451       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:410
MESSAGE : ADM1530E  Crash recovery has been initiated.  <-初始化 Crash recovery 2013-02-03-06.27.31.643060+480 I1531286G492       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, recovery manager, sqlprecm, probe:2000
DATA #1 : <preformatted>
Using parallel recovery with 3 agents 8 QSets 24 queues and 16 chunks  <- 启动并行进程来进行Crash recovery  2013-02-03-06.27.31.933175+480 I1531779G351       LEVEL: Warning
PID     : 9899                 TID  : 2945444752  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000
EDUID   : 40                   EDUNAME: db2lfr (ORACLE) 0
FUNCTION: DB2 UDB, data protection services, sqlpgarl, probe:99
MESSAGE : INFO ONLY: Found an old page in the log file                 <-DB2发现日志文件中有OLD PAGE 2013-02-03-06.27.32.700437+480 I1532131G507       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, recovery manager, sqlprecm, probe:4000
MESSAGE : DIA2051W Forward phase of crash recovery has completed.  Next LSN is  <--前滚恢复完成
          "00000000252E7400". 2013-02-03-06.27.33.293191+480 E1532639G460       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3170
MESSAGE : ADM1531E  Crash recovery has completed successfully.   <--CRASH RECOVERY成功完成 2013-02-03-06.27.33.294698+480 I1533100G462       LEVEL: Warning
PID     : 9899                 TID  : 2947541904  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-15                 APPID: *LOCAL.yansp.130202222719
AUTHID  : YANSP   
EDUID   : 35                   EDUNAME: db2agent (ORACLE) 0
FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3170
MESSAGE : Crash recovery completed. Next LSN is 00000000252E7400 2013-02-03-06.27.34.627484+480 E1533563G464       LEVEL: Event
PID     : 9899                 TID  : 2949639056  PROC : db2sysc 0
INSTANCE: yansp                NODE : 000         DB   : ORACLE
APPHDL  : 0-16                 APPID: *LOCAL.DB2.130202222734
AUTHID  : YANSP   
EDUID   : 34                   EDUNAME: db2stmm (ORACLE) 0
FUNCTION: DB2 UDB, Self tuning memory manager, stmmLog, probe:1008
DATA #1 : <preformatted>
Starting STMM log from file number 0  整个恢复过程都是有主控进程PID=9899 DB2SYSC进程来完成的。
[yansp@db2server ~]$ ps -ef | grep 9899 
yansp     9899  9897  0 06:16 pts/0    00:00:06 db2sysc 0                                      
root      9900  9899  0 06:16 pts/0    00:00:00 db2ckpwd 0                                      
root      9901  9899  0 06:16 pts/0    00:00:00 db2ckpwd 0                                      
root      9902  9899  0 06:16 pts/0    00:00:00 db2ckpwd 0                                      
yansp    12571 11322  1 06:33 pts/2    00:00:00 grep 9899

list utilities监视数据库前滚操作的更多相关文章

  1. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  2. Android-Sqlite数据库的操作

    Sqlite数据库的简单操作: 设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> ...

  3. (四)SQL入门 数据库的操作与事务管理

    数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某 ...

  4. Laravel框架数据库CURD操作、连贯操作使用方法

    Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍.   Laravel是一套简洁.优雅的PHP Web开 ...

  5. zabbix数据库mariadb从服务器迁移到云mysql数据库的操作

    zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...

  6. 使用my exclipse对数据库进行操作(4)

    四.删除 public class class4 { public static void main(String[] args) { // TODO Auto-generated method st ...

  7. 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...

  8. MYSQL数据库的操作

    Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password);   //打开一个到Mysql服务器的连接 mysql_select_db( ...

  9. DBA必备:MySQL数据库常用操作和技巧

    DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...

随机推荐

  1. webpack学习笔记--多种配置类型

    除了通过导出一个 Object 来描述 Webpack 所需的配置外,还有其它更灵活的方式,以简化不同场景的配置. 下面来一一介绍它们. 导出一个 Function 在大多数时候你需要从同一份源代码中 ...

  2. CentOS6.9安装HDFS

    1.安装依赖包 yum install -y gcc openssh-clients 2.升级glib2.14 升级glibc-2.14用到的rpm 下载地址:https://pan.baidu.co ...

  3. JMeter中BeanShell断言使用一

    Jmeter Ant Task如何让beanshell断言失败的详细信息展示在report里面 首先必须给beanshell断言添加FailureMessage if(${TotalClient_SS ...

  4. TopCoder SRM502 Div1 1000 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-1000.html SRM502 Div1 1000 题意 从 [0,n-1] 中选择 k 个不同的 ...

  5. 五种UML工具

    ProcessOn是一款在线流程图软件(https://www.processon.com/),能够高效的完成在线流程图.UI原型图.UML以及组织图,网络拓扑图的构建.该软件最大的特点是,无需安装, ...

  6. HDU 3342 Legal or Not (图是否有环)【拓扑排序】

    <题目链接> 题目大意: 给你 0~n-1 这n个点,然后给出m个关系 ,u,v代表u->v的单向边,问你这m个关系中是否产生冲突. 解题分析: 不难发现,题目就是叫我们判断图中是否 ...

  7. Pytorch安装(基于anaconda虚拟环境)

    Pytorch安装倒腾了一上午终于搞定,记录一下安装过程. 1. 首先尝试官网的安装方式,但是网速太慢了. 除去cudnn100, torchvision和pytorch三个文件,其余可以直接从清华镜 ...

  8. git命令详解( 七 )

    此为git命令详解的第七篇 这章我们可以来逐渐揭开 git push.fetch 和 pull 的神秘面纱了.我们会逐个介绍这几个命令,它们在理念上是非常相似的.   git push的参数 git ...

  9. Django 学习第四天——Django 模板标签

    一.模板标签: 作用:标签在渲染的过程中提供任意的逻辑:例如 if for...in... 等 标签语法:由 {% %} 来定义的:例如:{% tag %}xxx{% endtag %} 常用标签: ...

  10. JS运算符问题

    以下代码是否报错,如果不报错输出什么,为什么 var x = !!"Hello" + (!"world", !!"from here!!") ...