DB2崩溃恢复后表空间异常模拟

本文档通过模拟DB2数据库的崩溃,展示了如何处理表空间异常。首先创建了一个名为ts1的表空间和一张表tb2,然后在执行大事务时杀掉db2进程,造成数据库崩溃。接着,通过mv命令模拟表空间异常,重启db2并观察崩溃恢复过程。在恢复过程中,表空间被置为ROLLFORWARD_PENDING状态,无法访问。最后通过将文件名还原,切换表空间在线并前滚到最新状态,成功恢复正常。
摘要由CSDN通过智能技术生成

1.新建一个表空间ts1存储路径是/home/test/file
[test@demo SQL00001]$ db2 "create tablespace ts1 managed by database using (file '/home/test/file' 10M)"
DB20000I  The SQL command completed successfully.
[test@demo ~]$ pwd
/home/test
[test@demo ~]$ ls
dlockmon  file  sqllib  SQLOGDIR  test

2.在表空间ts1上创建一张表
[test@demo ~]$ db2 "create table tb2(id int,name varchar(10)) in ts1"

3.执行一个大事务
[test@demo ~]$ db2 "begin atomic declare i int default 0;while (i<1000000) do insert into tb2 values(i,'yo'||char(i));set i=i+1;end while;end"

4.另一个窗口暴力kill掉db2进程
[root@demo Desktop]# ps -ef|grep db2sysc
root      3829 29534  0 15:39 pts/3    00:00:00 grep db2sysc
db2inst1  8676  8674  0 04:38 ?        00:00:05 db2sysc                                        
test     25270 25268  0 02:49 pts/1    00:01:30 db2sysc                                        
[root@demo Desktop]# kill -9 25270
[root@demo Desktop]# ps -ef|grep db2sysc
root      3874 29534  0 15:39 pts/3    00:00:00 grep db2sysc
db2inst1  8676  8674  0 04:38 ?        00:00:05 db2sysc   

5.db2停止,SQL命令失败
[test@demo ~]$ db2 "begin atomic declare i int default 0;while (i<1000000) do insert into tb2 values(i,'yo'||char(i));set i=i+1;end while;end"
DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL1224N  The database manager is not able to accept new requests, has 
terminated all requests

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值