暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DB2表空间backup-pending及表pengding状态如何处理

IT那活儿 2022-05-16
3787

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

表空间backup-pending

Load命令中有一个copy选项,可以理解为备份的意思。
Copy支持三种方式:
  • copy on 

  • copy yes 

  • nonrecoverable

Copy on是默认方式,会将表所属的表空间处于backup-pending状态,就是为了要提示DBA对表空间进行备份,不然出了问题就没有办法进行恢复,目标可以读,但是不能增删改。Load命令一旦执行了,表空间立即就会处于backup-pending状态,就算是终止load操作,也没有办法脱离这个状态。
下面模拟一下load引起的表空间backup-pending情形
[db2i97@localhost ~]$ db2 connect to sample
创建表空间ts1:
[db2i97@localhost ~]$ db2 "create tablespace ts1"
创建表t3:
[db2i97@localhost ~]$ db2 "create table t3 (id int,name char(20)) in ts1"
创建存放归档的目录:
[db2i97@localhost ~]$ mkdir home/db2i97/archlog
开启归档模式:
[db2i97@localhost ~]$ db2 update db cfg for sample using LOGARCHMETH1 disk:/home/db2i97/archlog
将sample库全备:
[db2i97@localhost ~]$ db2 backup db sample to /dev/null
准备测试数据:
将这几条数据导入t3表:
[db2i97@localhost ~]$ db2 "load from t3.del of del insert into t3"
再去查看这张表:
发现可以正常查看。
尝试修改其中的一条数据:
[db2i97@localhost ~]$ db2 "update t3 set name='newcc' where id=3"
再查看表空间状态:
[db2i97@localhost ~]$ db2 list tablespaces show detail Tablespace ID                        = 7 Name                                 = TS1 Type                                 = Database managed space Contents                             = All permanent data. Large table space. State = 0x0020
可以看到ts1表空间处于0x0020状态。
在线将这个表空间备份:
[db2i97@localhost ~]$ db2 backup db sample tablespace ts1 online to /dev/null
再次查看ts1表空间的状态:
Tablespace ID = 7 Name = TS1 Type = Database managed space Contents = All permanent data. Large table space. State = 0x0000   Detailed explanation:     Normal
恢复正常。
再次尝试修改表数据:
[db2i97@localhost ~]$ db2 "update t3 set name='newcc' where id=3"DB20000I The SQL command completed successfully.
修改成功。
为了避免这一现象,建议在load数据后面加上nonrecoverable 参数:
[db2i97@localhost ~]$ db2 "load from t3.del of del insert into t3 nonrecoverable"
再次查看表空间状态:
[db2i97@localhost ~]$ db2 list tablespaces show detail Tablespace ID                        = 7 Name                                 = TS1 Type                                 = Database managed space Contents                             = All permanent data. Large table space. State = 0x0000

load pending

如果在提交数据之前,表上的正在执行的load操作被终止了,那么就会出现load pending状态,如果要使这个表恢复正常,需要调用load terminate、load restart 或 load replace操作。
下面模拟一个load pending情形
创建一个大小为256页的表空间,再创建一张表:
[root@localhost ~]# mkdir data1[root@localhost ~]# chown db2i97:db2i97 data1[db2i97@localhost ~]$ db2 "create tablespace ts3 pagesize 8k managed by database using (file '/data1/ts2' 256) bufferpool bp8k"[db2i97@localhost ~]$ db2 "create table t1 (id int, name char(50), desc char(150)) in ts1"

编写一个存储脚本sp_insert.sql:

[db2i97@localhost ~]$ vi sp_insert.sqlCREATE PROCEDURE sp_insert (IN count int)   LANGUAGE SQLBEGIN      DECLARE i INTEGER DEFAULT 0;      while i<count      do        insert into t1 values( i, 'abcdefghixxxxxxxxxx' || char(i), 'bbbbbbbbbbbbbbbbbbbb'|| char(i) );        set i=i+1;      end while;END@
执行存储过程插入数据,然后将数据导出到t1.del:
[db2i97@localhost ~]$ db2 -td@ -f sp_insert.sqlDB20000I The SQL command completed successfully.[db2i97@localhost ~]$ db2 "call sp_insert(6500)"  Return Status = 0[db2i97@localhost ~]$ db2 "export to t1.del of del select * from t1"SQL3104N The Export utility is beginning to export data to file "t1.del".SQL3105N The Export utility has finished exporting "6500" rows.Number of rows exported: 6500


重建一个大小为232页的表空间,将t1.del数据加载,由于无法分配新页,引起load出现异常。

通过load query命令信息显示,t1表处于load pending状态:
[db2i97@localhost ~]$db2 "create tablespace ts1 pagesize 8k managed by database using (file '/data1/ts1' 232) bufferpool bp8k"[db2i97@localhost ~]$ db2 "create table t1 (id int, name char(50), desc char(50) ) in ts1"[db2i97@localhost ~]$db2 "load from t1.del of del insert into t1"[db2i97@localhost ~]$db2 load query table t1
查看状态为PENDING的表:
db2 "SELECT TABSCHEMA, TABNAME, LOAD_STATUS FROM SYSIBMADM.ADMINTABINFO where load_status = 'PENDING'"
db2 "call sysproc.admin_cmd('Load from /dev/null of del terminate into db2i97.t1')"
PENDING状态解除。

 

END




本文作者:曹志铖

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论