自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BJ_NOT_NULL的博客

关于DB2的那些事

  • 博客(27)
  • 收藏
  • 关注

原创 GROUP BUFFERPOOL(GBP) CASTOUT

GBP 存放的是由某个 member 更改的但是在所有 member 间共享的数据页,所以当很多数据页被频繁修改的时候,GBP 里就会存很多的 page, 同时DB2有后台程序,不断的从GBP里CASTOUT数据页到DASD。DB2z会在线监测GBP的使用情况,DSNB319A表示某个GBP已经使用了75%,DSNB325A表示某个GBP已经使用了90%。可以通过更改CLASST and GBPO...

2018-05-17 09:02:26 410

原创 RLL in data sharing

get & p-lock pagelock rowp-lock & latch pagetest to see if existed most current copy of page, if yes then refresh pageupdate pagerelease latchcommit    write changed page     release row lockw...

2018-05-08 16:56:45 198

原创 PAGE REGRESSION

所谓的page regression,说白了就是两个UR对同一个record进行了update,这样第一个UR的update就会被miss掉,这是不允许的。导致page regression的原因有很多,需要进一步分析。如果UR A对某条record进行修改,紧接着另外一个UR B也对这个record进行修改。这个时候就要看如果UR B在对这条record进行修改的时候,UR A还没有COMMIT...

2018-05-08 16:42:24 158

原创 DISATER RECOVERY(DR)

    在做DR的时候,务必保证CF(SCA+LOCK+GBP)是clean的,这是因为CF里面的数据可能是坏掉的,有可能会影响到DR,好在DB2提供了zPARM DEL_CFSTRUCTS_ON_RESTART,这样在做DR之前,DB2会调用z/os的功能自行清空CF。       DR共分为下面几个步骤:        1.重启所有的DB2 MEMBER,这里说的重启时正常重启而不是consi...

2018-05-08 16:24:15 279

原创 FAST TRAVERSE BLOCK(FTB)

    INDEX是一个B树结构,在访问index entry的时候,要从root page开始,折半找到non-leaf page,最后逐渐遍历至leaf page,leaf page上存了所有的index entry(key+RID),再根据RID找到对应的data record。过程如下图      这样看来,如果index level够大,为了拿到leaf page,就要拿到更多的non-...

2018-05-04 21:26:09 258

原创 00C9 ERROR

最近忽然想到一个问题,为什么Db2z在发现内部错误的时候,抛出的reason code是00C9XXXX,后来仔细一想,在主机环境下EBCDIC C9的编码就是I, I是internal的缩写,所以这个reason code,就是DB2Z的内部错误。。。比如00C90101是最普通的data-index inconsistency00C90026是forign key找不到parent key00...

2018-05-02 10:00:06 351

原创 segmented tablespace

Seg TS在分配空间的时候,是以segment为单位的,一个segment包含若干个page,是在创建TS的时候由SEGSIZE指定的。与UTS TS不同,可以在segmented TS创建若干张表,在spacemap中,由segblk管理哪些连续的page属于哪张表。在seg ts里建三张表,segtb1插入一点数据,一个seg entry就是可以hold住                  ...

2018-04-26 14:16:21 199

原创 GRECP/LPL RECOVERY

GRECP和LPL是DM标记的两个DBET状态。之前有篇博文讲述了LPL在介绍GRECP/LPL 之前,先介绍下GRECP(GROUP BUFFER POOL RECOVERY PENDING)。在DATASHARING环境中,每个MEMER都有自己的local buffer pool,当多个MEMBER都该某个page的时候,会先把page读到自己的local buffer里修改,当达到chec...

2018-04-25 14:12:28 271

原创 LIGHT RESTART DB2

在LPAR failure之后,可以考虑以LIGHT的模式重启DB2, 所谓的轻量(light)重启,顾名思义,就是以最小的代价,仅仅去启动DB2的基本服务。命令:默认的情况是LIGHT(NO),即默认重启模式就是正常的重启。当NON-DATA SHARING的时候,即使指明了LIGHT(YES),也是无效的,non data sharing DB2也会正常重启。看看文档说明LIGHT(YES)都...

2018-04-25 13:54:01 173

原创 COLD RESTART DB2

有时候LOG坏了或者丢了,APPLY LOG出了ABEND,NORMAL RESTART ABEND 或者 HUNG住了,在正常RESTART 不能正常work的情况下,只能上COLD RESTART, COLD RESTART不到万不得已,一定不能使用,因为即使在DB2 RESTART之后,DB2仍然可能出在inconsistent状态。执行COLD RESTART DB2之前,除了做COLD ...

2018-04-24 19:16:24 341

原创 CONSISTENT RESTART DB2

对于那些long running URL来说,重启DB2需要花更长的时间,因此DB2引入了CONSISTENT RESTART的概念。所谓的CONSISTENT RESTART,就是在常规的RESTART加入了一个POSTPONED UR RESOLUTION的阶段。支持在DB2启起来之后,再去back out这些long running的UR。这个功能由LBACKOUT=AUTO/YES控制那什...

2018-04-24 17:25:57 152

原创 LPL

LPL(logical page list)也是EXCEPTION PAGE SET的一种状态,通常在下面的情况下会把一个page set标记成LPL状态:1.在读log的时候,有个page set open的log,当读到这条log,去open page set的时候,发现open不了,该page set包含的所有page都会被mark成LPL状态2.read page 失败也会把page标记成...

2018-04-24 16:25:41 339

原创 DB2 RESTART

在讲DB2 RESTART之前,先普及一下CHECKPOINT的概念。CHECKPOINT检查点,顾名思义就是在某个时间点检查DB2当前的状态,在启动/关闭DB2 subsystem, 在经历了一段时间/写了若干条log, active log switch等时候DB2会take一个checkpoint, 记录当前系统状态。那么CHECKPOINT到底记录了些什么呢?可以从checkpoint l...

2018-04-24 16:03:43 890

原创 REBUILD INDEX

接上文,当CHECK INDEX发现index上有错的时候,当确认data是好的时候,可以执行REBUILD INDEX。REBUILD INDEX的工作机制是从data里面抽取key column的数据,排序,然后重新build一个新的index,从而修正错误的index.REBUILD INDEX之前可以看到在PGBIGRBA A96B8C4D的时候index entry有duplicate ...

2018-04-24 10:55:11 1073

原创 CHECK INDEX

当INDEX有问题的时候,CHECK INDEX会告诉你INDEX有什么问题,在REPORT里会列出相关的index key, RID信息。看一下check index output:DSNU708I 告诉我们RID 202上的index key '00C1'不是unique的DSNU713I 告诉我们在key column在index上的值是'00C1',而在data record上对应的值是'...

2018-04-23 16:06:34 512

原创 update

update某条记录的时候,如果index key column也被update了,那么在找到index entry后,先对旧的index entry做一个pseudo delete,再插入一条新的index entry(new key+old rid), 那么找到RID后,在data page上把old column value替换成new column value。在这种场景下,尽管data ...

2018-04-21 00:33:28 373

原创 slip dump for deadlock/timeout

Db2z在出现deadlock/timeout的时候,不会主动take一个dump,而是会抛出DSNT375I/DSNT500I或者DSNT376I/DSNT500I这样的消息对来说明情况,如果要分析deadlock/timeout原因,就需要精确地set一个slip,去生成dump可以根据MEPL,找到DSNILMCL可能出TIMEOUT的地方,算出range,写出如下slip如果R8是belo...

2018-04-20 23:11:02 179

原创 DSN1SDMP

当执行SQL语句,出现SQL CODE=-XXX的时候,可以通过DSN1SDMP来触发一个dump,分析具体原因下面的例子讲的是如何通过START IFCID 340 TRACE,捕捉一个SQLERROR -204当拿不到00E60100的时候,可以怀疑是否有DAE阻止了这个dump,可以写另外一个ABEND CODE(00E60100到 00E60199),或者改一把DAE。如果是DSN1SDM...

2018-04-17 23:44:09 292

原创 BSDS

VSAM FILE BSDS(BOOTSTRAP DATA SET)是LOG INVENTORY,里面存了双份的active log data set以及双份的archive log data set, 每个active/archive log data set都存了一段时间的log,当active满了的时候,就会offload到archive log data set, 除此之外,还存储了所有的...

2018-04-17 23:23:52 1005

翻译 START DATABASE

The command is typically used after one of the following events:1. The STOP DATABASE command is issued2. A table space, partition, or index is placed in group buffer pool RECOVER-pending status (GRECP...

2018-04-16 17:19:22 361

原创 CREATE TS

从RR看,CREATE TS经历了两个pseudo open的操作在data set close过后,如果经历了一段时间又重新open,进行update的话,就在SYSLGRNX里mark一个pseudo open记录,表示一段时间page set是open for update的,反之经过一段时间重新open for read的话,就不往SYSLGRNX里mark一个pseudo open记录,...

2018-04-16 15:10:08 384

原创 TS extend

在创建TABLESPACE的时候,PRIQTY指定首次分配多少空间,SECQTY指定后续extend多少空间,如果都是-1的话,就是SMS来管理每次extend多少空间,当然总数不能超过DSSIZE。LISTCAT是来看VSAM使用情况的下图是刚建好一个TS后,VSAM的使用情况,可以看出pagesize是4K,一个磁道有12个page,一个CA有一个磁道,共计59152个字节,首次分配了一个tr...

2018-04-15 07:44:47 1221

原创 OVERFLOW RECORD

如果当前page已经满了,此时某些record如果变长,长到当前page装不下,这种情况下,就会产生overflow record, 此时DB2会根据SMAP的信息,把变长后的record存到别的page上。此时index entry里存的RID不变,而base page会存overflow RID。做个实验OVERFLOW之前page的镜像Data page还有6个字节的free space,因...

2018-04-13 23:33:51 265

原创 OBD

OBD: 由DDL创建数据库里各种对象OBDDBD/DBD/databaseOBDFILEOBDPSET/PAGE SET/FILE PAGE SET/PSFI/TABLESPACEOBDFSET/FANSET/INDEX PAGE SET/PSI/INDEXOBDREC/PSFIRECA/TABLE RECORDOBDREFLD/OBDR1FLD/COLUMN...OBD是存在DIRECTORY...

2018-04-13 22:06:57 432

原创 常用IPCS命令

主机上的程序ABEND之后,通常会生成一个DUMP,表示ABEND时候各个地址空间的镜像,通过分析DUMP,我们就知道是什么条件触发了ABEND, 而unformatted dump是肉眼无法读取的,因此就要借助IPCS命令去format我们感兴趣的内容。本文主要介绍读DB2 DUMP通常需要的IPCS命令。IP ST: 查看DUMP的基本信息,比如ERR SEQ, ABEND MODULE等等I...

2018-04-13 21:38:09 580

原创 LOB DATA

   DB2z的一个I/O单元是一个page(数据页),一个page的大小取决于bp的大小,通常可以是4K,8K,16K和32K,所以一条record最长不能超过32K,显然这个不符合现在的应用,某些数据,比如说文档,图片,影音什么的通常非常大,常规的page就存不下,因此DB2引入了数据类型是LOB的column,来存放LOB DATA。     那么DB2是如何实现对LOB DATA的访问呢,...

2018-04-13 21:18:01 562

原创 Split index leaf page

2018-04-12 23:49:39 426

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除