资讯专栏INFORMATION COLUMN

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

IT那活儿 / 3289人阅读
DB2表空间backup-pending及表pengding状态如何处理

点击上方“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.sql
CREATE PROCEDURE sp_insert (IN count int)
   LANGUAGE SQL
BEGIN
      DECLARE i INTEGER DEFAULT 0;
      while i      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.sql
DB20000I 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那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129510.html

相关文章

  • 七面阿里:现在分享一下阿里最全面试116题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案

    摘要:面试,是跳槽后第一个需要面对的问题而且不同公司面试的着重点不同但是却有一个共同点基础是必考的。对自动灾难恢复有要求的表。 貌似这一点适应的行业最广,但是我可以很肯定的说:当你从事Java一年后,重新找工作时,才会真实的感受到这句话。 工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需...

    animabear 评论0 收藏0
  • 七面阿里:现在分享一下阿里最全面试116题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案

    摘要:面试,是跳槽后第一个需要面对的问题而且不同公司面试的着重点不同但是却有一个共同点基础是必考的。对自动灾难恢复有要求的表。 貌似这一点适应的行业最广,但是我可以很肯定的说:当你从事Java一年后,重新找工作时,才会真实的感受到这句话。 工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需...

    fjcgreat 评论0 收藏0
  • 网易云 MySQL实例迁移的技术实现

    摘要:本文将介绍网易云基础服务蜂巢实例迁移功能的实现,并探讨如何高效完成实例迁移任务。网易云基础服务蜂巢提供了负载监控阈值选项,在业务负载超过该阈值时,会暂停迁移操作,直到负载重新低于阈值。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 我们把数据库里部分或全部 Schema和数据迁移到另一个实例的行为称为实例迁移,将导出数据的实例称为源实例,导入数据的实例称为目标实例。 根据迁移数...

    Olivia 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<