DB2 restart database命令的作用总结

原文:https://blog.csdn.net/qingsong3333/article/details/62049039

信息中心对于RESTART DATABASE的作用只有一句话的介绍,就是做crash recovery用的。这里总结一下这个命令的作用
信息中心的介绍
Restarts a database that has been abnormally terminated and left in an inconsistent state. At the successful completion of RESTART DATABASE, the application remains connected to the database if the user has CONNECT privilege.

1. 主要作用是完成正常的crash recovery操作

如果数据库异常终止(inconsistent),则restart database会做crash recovery,并且做完Crash recovery之后会连接到数据库。
如果数据库当前状态正常(consistent)的话,则只是建立一个新的连接,也不会对其他现有连接产生影响。

默认情况下,数据库crash之后,因为autorestart默认设置为ON,连库时会自动做restart db操作,即会自动做crash recovery;如果设置为OFF的话,连库操作由于不会做crash recovery,数据库不一致,会报错SQL1015N,需要显式地发出restart database命令:

  1. $ db2 "update db cfg for sample using autorestart off"
  2. $ db2 "connect to sample"
  3. $ db2 +c "insert into t1 select * from t1" <--这个事务要足够大,以确保日志缓冲区的数据被刷新到磁盘上了,这才样会有crash recovery.
  4. $ db2_kill <--模仿crash
  5. Application ipclean: Removing DB2 engine and client IPC resources for e105q5a
  6. $ db2start
  7. 2017-03-14 08:38:58     0   0   SQL1063N  DB2START processing was successful.
  8. SQL1063N  DB2START processing was successful.
  9. $ db2 "connect to sample"  <--没有做Crash recovery,数据库状态不一致
  10. SQL1015N  The database is in an inconsistent state.  SQLSTATE=55025
  11. 2017-03-14-08.43.04.742052+480 E3152A612            LEVEL: Error
  12. PID     : 27852862             TID : 3343           PROC : db2sysc 0
  13. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  14. APPHDL  : 0-7                  APPID: *LOCAL.e105q5a.170314004304
  15. AUTHID  : E105Q5A              HOSTNAME: db2b
  16. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  17. FUNCTION: DB2 UDB, base sys utilities, sqledint, probe:2535
  18. MESSAGE : SQL1015N  The database is in an inconsistent state.
  19. DATA #1 : String, 91 bytes
  20. Crash Recovery is needed.
  21. Issue RESTART DATABASE on this node before issuing this command.
  22. $ db2 "restart db sample" <--查看诊断日志的话,会发现有做Crash recovery的操作,完成之后,restart db就会成功。
  23. DB20000I  The RESTART DATABASE command completed successfully.
  24. 2017-03-14-08.44.29.649628+480 E5852A467            LEVEL: Info
  25. PID     : 27852862             TID : 3343           PROC : db2sysc 0
  26. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  27. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314004429
  28. AUTHID  : E105Q5A              HOSTNAME: db2b
  29. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  30. FUNCTION: DB2 UDB, base sys utilities, sqledint, probe:5528
  31. MESSAGE : Crash Recovery is needed.
  32. ..
  33. 2017-03-14-08.44.29.812231+480 E7352A483            LEVEL: Info
  34. PID     : 27852862             TID : 3343           PROC : db2sysc 0
  35. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  36. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314004429
  37. AUTHID  : E105Q5A              HOSTNAME: db2b
  38. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  39. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:200
  40. MESSAGE : ADM1530I  Crash recovery has been initiated.
  41. ..
  42. 2017-03-14-08.44.30.992167+480 E26963A492           LEVEL: Info
  43. PID     : 27852862             TID : 3343           PROC : db2sysc 0
  44. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  45. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314004429
  46. AUTHID  : E105Q5A              HOSTNAME: db2b
  47. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  48. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3100
  49. MESSAGE : ADM1531I  Crash recovery has completed successfully.
  50. $ db2 list applications  <--restart db会连接到数据库
  51. Auth Id  Application    Appl.      Application Id                                                 DB       # of
  52. Name           Handle                                                                    Name    Agents
  53. -------- -------------- ---------- -------------------------------------------------------------- -------- -----
  54. E105Q5A  db2bp          8          *LOCAL.e105q5a.170314004429                                    SAMPLE   1

2. 重建失效的索引

首先一点,无论何时,只要访问表数据,失效的索引就被会自动重建。还可能有另外一种情形,即发出restart db命令时。

indexrec默认设置为RESTART,意思就是发出restart database命令的时候,会自动重建所有的索引(注意,首次连库不会重建索引,除非数据库之前crash了)。

如果系统中有很多的索引失效,那么最好显式地发出restart database命令,以避免等到访问相关表时再创建从而影响性能。

3. 跳过表空间的crash recovery

如果数据库Crash之后,某些表空间容器丢失或损坏,则crash recovery会失败。这时候可以使用restart database命令跳过这些表空间的crash recovery,成功连库,连库之后这些表空间会被处于drop pending的状态,只能被删除。

  1. //首先模式了一个crash操作,之后将表空间的容器删掉,则crash recovery会失败:
  2. $ db2 restart db sample <--restart db会失败,失败的原因是表空间TBS1容器被删,无法做Crash recovery
  3. SQL0290N  Table space access is not allowed.  SQLSTATE=55039
  4. 2017-03-14-11.56.28.645793+480 E138213A633          LEVEL: Info
  5. PID     : 37093388             TID : 3343           PROC : db2sysc 0
  6. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  7. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314035628
  8. AUTHID  : E105Q5A              HOSTNAME: db2b
  9. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  10. FUNCTION: DB2 UDB, buffer pool services, sqlbStartPoolsErrorHandling, probe:55
  11. MESSAGE : ADM6023I  The table space "TBS1" (ID "6") is in state "0x00000000".
  12. The table space cannot be accessed.  Refer to the documentation for
  13. SQLCODE -290.
  14. 2017-03-14-11.56.28.646872+480 E138847A1413         LEVEL: Error
  15. PID     : 37093388             TID : 3343           PROC : db2sysc 0
  16. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  17. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314035628
  18. AUTHID  : E105Q5A              HOSTNAME: db2b
  19. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  20. FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:63
  21. MESSAGE : ADM6049E  The database cannot be restarted because one or more table
  22. spaces cannot be brought online. To restart the database specify the
  23. "DROP PENDING TABLESPACES" option on the RESTART DATABASE command.
  24. Putting a table space into the drop pending state means that no
  25. further access to the table space will be allowed.  The contents of
  26. the table space will be inaccessible throughout the remainder of the
  27. life of the table space; and the only operation that will be allowed
  28. on that table space is "DROP TABLE SPACE". There is no way in which
  29. it can be brought back.  It is important that you consider the
  30. consequences of this action as data can be lost as a result. Before
  31. proceeding consult the DB2 documentation and contact IBM support if
  32. necessary.  The table spaces to specify in the DROP PENDING
  33. TABLESPACES list are: "TBS1,".
  34. $ db2 "restart db sample drop pending tablespaces (TBS1)" <--跳过表空间TBS1的crash recovery
  35. DB20000I  The RESTART DATABASE command completed successfully.
  36. 2017-03-14-11.58.42.738412+480 E175431A535          LEVEL: Warning
  37. PID     : 37093388             TID : 3343           PROC : db2sysc 0
  38. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  39. APPHDL  : 0-9                  APPID: *LOCAL.e105q5a.170314035841
  40. AUTHID  : E105Q5A              HOSTNAME: db2b
  41. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  42. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:2850
  43. MESSAGE : ADM1533W  Database has recovered.  However, one or more table spaces
  44. are offline.
  45. 2017-03-14-11.58.42.739983+480 E175967A492          LEVEL: Info
  46. PID     : 37093388             TID : 3343           PROC : db2sysc 0
  47. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE
  48. APPHDL  : 0-9                  APPID: *LOCAL.e105q5a.170314035841
  49. AUTHID  : E105Q5A              HOSTNAME: db2b
  50. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0
  51. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3100
  52. MESSAGE : ADM1531I  Crash recovery has completed successfully.
  53. $ db2 list tablespaces show detail
  54. Tablespaces for Current Database
  55. ..
  56. Tablespace ID                        = 6
  57. Name                                 = TBS1
  58. Type                                 = Database managed space
  59. Contents                             = All permanent data. Large table space.
  60. State                                = 0xc000
  61. Detailed explanation:
  62. Offline
  63. Drop Pending

4. 跳过某个表的crash recovery

同情况3类似,如果某个表上有坏页,crash recovery因为这张表而失败,可以跳过这张表的Crash recovery,成功连库,但该表会被置于drop pending,必须被删除;但这个是隐藏的选项,只有在IBM的支持下才能操作,所以购买IBM的维保服务还是挺重要的。

对于情况3和4,虽然表空间、表处于drop pending的状态,还是可以使用db2dart工具抢救一部分数据的。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingsong3333/article/details/62049039

(转)DB2 restart database命令的作用总结的更多相关文章

  1. DB2数据库常用命令数据库学习

    DB2数据库常用命令数据库学习你可以用 get snapshot for locks on XXX 看是那个表锁了,再从相关的操作去查原因吧 db2pd -d 库名 -locks和db2pd -d 库 ...

  2. 经典MSSQL语句大全和常用SQL语句命令的作用

    下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL类型包括数据库.表的创建,修改,删除,声明—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML类 ...

  3. DB2经常使用命令

    1.打开命令行窗体 #db2cmd 2.打开控制中心 # db2cmd db2cc 3.打开命令编辑器 db2cmd db2ce =====操作数据库命令=====   4.启动数据库实例 #db2s ...

  4. linux中常用的60个命令及作用详解

    Linux 必学的 60 个命令 Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在 Linux 系统上工作离不开使用系统 ...

  5. 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

    非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法 环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一 ...

  6. Linux sync命令的作用

    adb shell sync 写缓存命令——sync 在用reboot命令启动unix系统后,系统提示出错信息,部分应用程序不能正常工作.经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确 ...

  7. SQL SERVER镜像配置,无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

    环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一步的时候,可能会遇到 执行( ALTER DATABASE [mirrortest] SET WITNE ...

  8. CentOS系统中last命令的作用

    CentOS系统中last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户.通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统. 格式 last [—R] [—n] ...

  9. Linux sync命令的作用分析

    Sync命令   在用reboot命令启动unix系统后,系统提示出错信息,部分应用程序不能正常工作.经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确实被破坏了,翻来覆去找不到文件遭破坏 ...

随机推荐

  1. wpf使用truetype字体ttf

    查了半天都是语焉不详,这篇算是稍微详细点的:http://www.cnblogs.com/junhengml/p/6878933.html 要先查找到字体的字库名称,才能使用: <Window. ...

  2. [转]FreeMarker使用

    copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...

  3. 备忘录(Memento)模式

    *备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对戏的内部状态, * 并在该对象之外保存这个状态.这样以后就能恢复到原来保存的状态 *Originator(发起人): 负责创建一个备忘 ...

  4. constexpr函数------c++ primer

    constexpr函数是指能用于常量表达式的函数.定义constexpr函数的方法有其他函数类似,不过要遵循几项约定:函数的返回值类型及所以形参的类型都是字面值类型,而且函数体中必须有且只有一条ret ...

  5. hive的安装与配置 mysql安装 启动

    三种模式 内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接 本地独立模式:在本地安装Mysql,吧元数据放到mySql内 远程模式:元数据放置在远程的Mysql数据库 1.下载Hive安 ...

  6. 苹果开发者账号提示“Unable to verify mobile phone number”的解决方案

    在注册苹果开发者账号时,会提示:"Unable to verify mobile phone number.".顾名思义,没有有效的手机号码. 解决方案: 进入到Your Appl ...

  7. 深入 Nginx:我们是如何为性能和规模做设计的

    NGINX 在网络应用中表现超群,在于其独特的设计.许多网络或应用服务器大都是基于线程或者进程的简单框架,NGINX突出的地方就在于其成熟的事件驱动框架,它能应对现代硬件上成千上万的并发连接. NGI ...

  8. dos窗口运行java文件需要jar依赖

    执行java文件时候,有些里面依赖了java之外的jar,这是识别不到的,运行java命令的时候,带上jar路径: java -cp .;jar路径(加上jar名字)  java文件名 例:java ...

  9. 【转】C#控件——DataGridView单元格文本自动换行

    源地址:https://www.cnblogs.com/wangshenhe/archive/2012/07/25/2608324.html DataGridView是.NET开发中常用的控件,在开发 ...

  10. mybatis 学习笔记(二):mybatis SQL注入问题

    mybatis 学习笔记(二):mybatis SQL注入问题 SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞. ...