zoukankan      html  css  js  c++  java
  • (转)DB2 restart database命令的作用总结

    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命令:

    [sql] view plain copy
     
    1. $ db2 "update db cfg for sample using autorestart off"  
    2.   
    3. $ db2 "connect to sample"  
    4.   
    5. $ db2 +c "insert into t1 select * from t1" <--这个事务要足够大,以确保日志缓冲区的数据被刷新到磁盘上了,这才样会有crash recovery.  
    6.   
    7. $ db2_kill <--模仿crash  
    8. Application ipclean: Removing DB2 engine and client IPC resources for e105q5a  
    9.   
    10. $ db2start  
    11. 2017-03-14 08:38:58     0   0   SQL1063N  DB2START processing was successful.  
    12. SQL1063N  DB2START processing was successful.  
    13.   
    14. $ db2 "connect to sample"  <--没有做Crash recovery,数据库状态不一致  
    15. SQL1015N  The database is in an inconsistent state.  SQLSTATE=55025  
    16.   
    17. 2017-03-14-08.43.04.742052+480 E3152A612            LEVEL: Error  
    18. PID     : 27852862             TID : 3343           PROC : db2sysc 0  
    19. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    20. APPHDL  : 0-7                  APPID: *LOCAL.e105q5a.170314004304  
    21. AUTHID  : E105Q5A              HOSTNAME: db2b  
    22. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    23. FUNCTION: DB2 UDB, base sys utilities, sqledint, probe:2535  
    24. MESSAGE : SQL1015N  The database is in an inconsistent state.  
    25. DATA #1 : String, 91 bytes  
    26. Crash Recovery is needed.  
    27. Issue RESTART DATABASE on this node before issuing this command.  
    28.   
    29. $ db2 "restart db sample" <--查看诊断日志的话,会发现有做Crash recovery的操作,完成之后,restart db就会成功。  
    30. DB20000I  The RESTART DATABASE command completed successfully.  
    31.   
    32. 2017-03-14-08.44.29.649628+480 E5852A467            LEVEL: Info  
    33. PID     : 27852862             TID : 3343           PROC : db2sysc 0  
    34. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    35. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314004429  
    36. AUTHID  : E105Q5A              HOSTNAME: db2b  
    37. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    38. FUNCTION: DB2 UDB, base sys utilities, sqledint, probe:5528  
    39. MESSAGE : Crash Recovery is needed.  
    40.   
    41. ..  
    42.   
    43. 2017-03-14-08.44.29.812231+480 E7352A483            LEVEL: Info  
    44. PID     : 27852862             TID : 3343           PROC : db2sysc 0  
    45. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    46. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314004429  
    47. AUTHID  : E105Q5A              HOSTNAME: db2b  
    48. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    49. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:200  
    50. MESSAGE : ADM1530I  Crash recovery has been initiated.  
    51.   
    52. ..  
    53.   
    54. 2017-03-14-08.44.30.992167+480 E26963A492           LEVEL: Info  
    55. PID     : 27852862             TID : 3343           PROC : db2sysc 0  
    56. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    57. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314004429  
    58. AUTHID  : E105Q5A              HOSTNAME: db2b  
    59. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    60. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3100  
    61. MESSAGE : ADM1531I  Crash recovery has completed successfully.  
    62.   
    63. $ db2 list applications  <--restart db会连接到数据库  
    64.   
    65. Auth Id  Application    Appl.      Application Id                                                 DB       # of  
    66.          Name           Handle                                                                    Name    Agents  
    67. -------- -------------- ---------- -------------------------------------------------------------- -------- -----  
    68. 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的状态,只能被删除。
    [sql] view plain copy
     
    1. //首先模式了一个crash操作,之后将表空间的容器删掉,则crash recovery会失败:  
    2.   
    3. $ db2 restart db sample <--restart db会失败,失败的原因是表空间TBS1容器被删,无法做Crash recovery  
    4. SQL0290N  Table space access is not allowed.  SQLSTATE=55039  
    5.   
    6. 2017-03-14-11.56.28.645793+480 E138213A633          LEVEL: Info  
    7. PID     : 37093388             TID : 3343           PROC : db2sysc 0  
    8. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    9. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314035628  
    10. AUTHID  : E105Q5A              HOSTNAME: db2b  
    11. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    12. FUNCTION: DB2 UDB, buffer pool services, sqlbStartPoolsErrorHandling, probe:55  
    13. MESSAGE : ADM6023I  The table space "TBS1" (ID "6") is in state "0x00000000".    
    14.           The table space cannot be accessed.  Refer to the documentation for   
    15.           SQLCODE -290.  
    16.   
    17. 2017-03-14-11.56.28.646872+480 E138847A1413         LEVEL: Error  
    18. PID     : 37093388             TID : 3343           PROC : db2sysc 0  
    19. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    20. APPHDL  : 0-8                  APPID: *LOCAL.e105q5a.170314035628  
    21. AUTHID  : E105Q5A              HOSTNAME: db2b  
    22. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    23. FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:63  
    24. MESSAGE : ADM6049E  The database cannot be restarted because one or more table   
    25.           spaces cannot be brought online. To restart the database specify the   
    26.           "DROP PENDING TABLESPACES" option on the RESTART DATABASE command.   
    27.           Putting a table space into the drop pending state means that no   
    28.           further access to the table space will be allowed.  The contents of   
    29.           the table space will be inaccessible throughout the remainder of the   
    30.           life of the table space; and the only operation that will be allowed   
    31.           on that table space is "DROP TABLE SPACE". There is no way in which   
    32.           it can be brought back.  It is important that you consider the   
    33.           consequences of this action as data can be lost as a result. Before   
    34.           proceeding consult the DB2 documentation and contact IBM support if   
    35.           necessary.  The table spaces to specify in the DROP PENDING   
    36.           TABLESPACES list are: "TBS1,".  
    37.             
    38. $ db2 "restart db sample drop pending tablespaces (TBS1)" <--跳过表空间TBS1的crash recovery  
    39. DB20000I  The RESTART DATABASE command completed successfully.  
    40.   
    41. 2017-03-14-11.58.42.738412+480 E175431A535          LEVEL: Warning  
    42. PID     : 37093388             TID : 3343           PROC : db2sysc 0  
    43. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    44. APPHDL  : 0-9                  APPID: *LOCAL.e105q5a.170314035841  
    45. AUTHID  : E105Q5A              HOSTNAME: db2b  
    46. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    47. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:2850  
    48. MESSAGE : ADM1533W  Database has recovered.  However, one or more table spaces   
    49.           are offline.  
    50.   
    51. 2017-03-14-11.58.42.739983+480 E175967A492          LEVEL: Info  
    52. PID     : 37093388             TID : 3343           PROC : db2sysc 0  
    53. INSTANCE: e105q5a              NODE : 000           DB   : SAMPLE  
    54. APPHDL  : 0-9                  APPID: *LOCAL.e105q5a.170314035841  
    55. AUTHID  : E105Q5A              HOSTNAME: db2b  
    56. EDUID   : 3343                 EDUNAME: db2agent (SAMPLE) 0  
    57. FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:3100  
    58. MESSAGE : ADM1531I  Crash recovery has completed successfully.  
    59.   
    60. $ db2 list tablespaces show detail  
    61.   
    62.            Tablespaces for Current Database  
    63. ..  
    64.   
    65.  Tablespace ID                        = 6  
    66.  Name                                 = TBS1  
    67.  Type                                 = Database managed space  
    68.  Contents                             = All permanent data. Large table space.  
    69.  State                                = 0xc000  
    70.    Detailed explanation:  
    71.      Offline  
    72.      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
  • 相关阅读:
    Windows 2012 安装 SQL Server 2012,.Net Framework 3.5安装不成的解决办法
    HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
    删除N天前的文件(夹)与拷贝文件到共享盘的批处理
    npm 常用命令
    使用scrapy crawl name启动一个爬虫时出现的问题
    anaconda和pycharm环境交叉的现象
    list和range()函数中使用反向索引的方法
    关于一些术语的解释
    关于assert和de-assert的解释
    搭建eclipse4.6(neon) + Pydev5.8.0 + python3.6(小版本3.6.1)
  • 原文地址:https://www.cnblogs.com/liujiacai/p/8873378.html
Copyright © 2011-2022 走看看