互联网服务数据库insertdetail

db2 list tablespaces show detail 与pending free page

db2 v9.5 + 双机16逻辑节点。

直接drop表之后数据库每个节点出现了大概6个G左右的pending free pages,而且free pages不足一个G,几分钟后报错:"insert的时候不能分配新页"。

想利用db2 list tablespaces show detail命令释放挂起的空闲页。但是命令执行成功,pending free pages却无法消除(在单个节点上node0上执行的,但这个节点的暂挂空闲页页没有消除),这是为嘛呢?

select * from sysibmadm.snaptbsp_part where ....
参与13

11同行回答

yyranyyran  业务部门经理 , sdb
你DROP表的时候,表空间是不会马上释放的,需要时间完全释放。显示全部
你DROP表的时候,表空间是不会马上释放的,需要时间完全释放。收起
软件开发 · 2010-12-31
浏览2716
duanzhihuiduanzhihui  数据库管理员 , IBM成都GDC
非常感谢!!显示全部
非常感谢!!收起
互联网服务 · 2010-12-29
浏览3045
stephensun123stephensun123  软件开发工程师 , SAP China
对的,其实理论上,只要影响对应表空间的SMP的page的应用都提交了,那么就可以了(条件1),但是由于DB2并不记录是谁(哪些transaction)影响了该表空间的SMP的page,所以安全起见,DB2就可以用条件2来确保条件1了...显示全部
对的,其实理论上,只要影响对应表空间的SMP的page的应用都提交了,那么就可以了(条件1),但是由于DB2并不记录是谁(哪些transaction)影响了该表空间的SMP的page,所以安全起见,DB2就可以用条件2来确保条件1了收起
互联网服务 · 2010-12-29
浏览2935
duanzhihuiduanzhihui  数据库管理员 , IBM成都GDC
我是否可以这样理解,pnd pages的释放需要满足两个条件:1)所有影响到该SMP的应用被commit(表空间级)2)所有早于pageCommitLSN的transaction都要commit(数据库级的)StephenSun,是不是这样呢?显示全部
我是否可以这样理解,pnd pages的释放需要满足两个条件:
1)所有影响到该SMP的应用被commit(表空间级)
2)所有早于pageCommitLSN的transaction都要commit(数据库级的)

StephenSun,是不是这样呢?收起
互联网服务 · 2010-12-29
浏览2898
stephensun123stephensun123  软件开发工程师 , SAP China
SMP -> Tablespace LevelEMP -> "Storage Object" Level两个表空间的SMP的更新本身不会互相影响但注意理解wangzhonnew 在帖子http://www.itpub.net/viewthread. ... p%3Bfilter%3Ddigest中给出的解释中加粗的部分“当一个表被drop的时候,需要修改SMP的pageCommitLSN。而...显示全部
SMP -> Tablespace Level
EMP -> "Storage Object" Level
两个表空间的SMP的更新本身不会互相影响

但注意理解
wangzhonnew 在帖子
http://www.itpub.net/viewthread. ... p%3Bfilter%3Ddigest
中给出的解释中加粗的部分
“当一个表被drop的时候,需要修改SMP的pageCommitLSN。而将被free的extents会被保存在一个bitmap中。但是当多个application同时drop同一个tablespace里面的不同表的时候,如果同一个SMP page被影响到,那么这个pageCommitLSN只会保存最新的那条LSN。
那么也就是说,如果前面的一些drop table有的被commit,有的没有被commit,如果db2无法区分哪些extent是被commit哪些是没有被commit的。也就是说,如果在这期间那些没有被commit的drop table需要rollback,db2必须保证这些extents没有被别的app使用到。所以,只有当所有影响到该SMP的应用被commit,同时没有比pageCommitLSN更早的未被提交的transaction(因为SMP只保存pageCommitLSN,也就是说db2并不知道都有什么transaction改变了这个SMP page,甚至不知道是否有多过一个transaction改变了这个page),DB2才会真正地把存在在那个bitmap中的所有extents free掉”收起
互联网服务 · 2010-12-29
浏览3121
duanzhihuiduanzhihui  数据库管理员 , IBM成都GDC
谢谢二位,但是我还是有点不明白,希望帮忙解释下:在表空间test1操作的transaction是怎么影响到表空间test2中的SMP,从而导致pending无法释放的? 另外,如mdkii 所问: 据我所知,smp,emp都是表空间级的,其他表空间的事务怎么会hold住本表空间的smp页的释放呢?还请高手详细指教。...显示全部
谢谢二位,但是我还是有点不明白,希望帮忙解释下:
在表空间test1操作的transaction是怎么影响到表空间test2中的SMP,从而导致pending无法释放的? 另外,如mdkii 所问: 据我所知,smp,emp都是表空间级的,其他表空间的事务怎么会hold住本表空间的smp页的释放呢?
还请高手详细指教。
收起
互联网服务 · 2010-12-28
浏览2819
stephensun123stephensun123  软件开发工程师 , SAP China
嗯pageCommitLSN>=lowtranLSNDB SNAP看一下“Appl id holding the oldest transaction”是不是一直没有变,变了的话,再list tablespaces show detail看一下显示全部
嗯pageCommitLSN>=lowtranLSN
DB SNAP看一下“Appl id holding the oldest transaction”是不是一直没有变,变了的话,再list tablespaces show detail看一下收起
互联网服务 · 2010-12-27
浏览2849
limin19821limin19821  系统工程师 , 乐酷天
"PS:我敢肯定这段时间只有我一个人在操作这个表空间。"其他表空间呢? 有没有在操作,请耐心看完那个帖子,其中说到了不是一个表空间也有影响的。显示全部
"PS:我敢肯定这段时间只有我一个人在操作这个表空间。"
其他表空间呢? 有没有在操作,请耐心看完那个帖子,其中说到了不是一个表空间也有影响的。收起
IT分销/经销 · 2010-12-27
浏览2967
duanzhihuiduanzhihui  数据库管理员 , IBM成都GDC
难道里边有个什么开关?还是说双机里边在单节点执行db2 list tablespaces show detail不能消除单节点的pnd free pages?显示全部
难道里边有个什么开关?

还是说双机里边在单节点执行db2 list tablespaces show detail不能消除单节点的pnd free pages?收起
互联网服务 · 2010-12-27
浏览2904
duanzhihuiduanzhihui  数据库管理员 , IBM成都GDC
这个应该是提交了的,操作时用的QC,选中几个表之后右键drop。还有,如果没有提交的话,我在QC里边关闭这个transaction的时候,肯定会提示是否提交。重新试验了一下:在A库(也就是上边我说的那个库)1、 ALTER TABLE  "DQ"."F_PENDING_TEST" ACTIVATE NOT LOGGED INITIALLY;c...显示全部
这个应该是提交了的,操作时用的QC,选中几个表之后右键drop。

还有,如果没有提交的话,我在QC里边关闭这个transaction的时候,肯定会提示是否提交。

重新试验了一下:
在A库(也就是上边我说的那个库)
1、
ALTER TABLE  "DQ"."F_PENDING_TEST" ACTIVATE NOT LOGGED INITIALLY;
commit;
INSERT INTO "DQ"."F_PENDING_TEST" SELECT * FROM DQ.F_FEE_ALLUSER;--insert600W数据
COMMIT;

2、
select tbsp_usable_pages,tbsp_used_pages,tbsp_free_pages,tbsp_pending_free_pages,dbpartitionnum from sysibmadm.snaptbsp_part where tbsp_name ='TBS_DQTB3' order by 4;

Result: node0上pending free pages为9120
            drop并commit之后变成了9184;

3、 执行db2 list tablespaces show detail命令之后node0上的pending free pages 依然为9184,而不是原来的9120

PS:我敢肯定这段时间只有我一个人在操作这个表空间。


同样的操作在另一个库B上
1.
ALTER TABLE "DQ"."F_PENDING_TEST" ACTIVATE NOT LOGGED INITIALLY;
COMMIT;
INSERT INTO "DQ"."F_PENDING_TEST" SELECT * FROM DQ.F_SALES_AGGR_DAY;--大约400多W数据
COMMIT;

2.select tbsp_usable_pages,tbsp_used_pages,tbsp_free_pages,tbsp_pending_free_pages,dbpartitionnum from sysibmadm.snaptbsp_part where tbsp_name ='TBS_DQTB5' order by 4;

Result: node0上pending free pages为0
            drop并commit之后变成了2688。

3。 执行db2 list tablespaces show detail
再次执行步骤2
node0上的pending free pages为0。收起
互联网服务 · 2010-12-27
浏览3588

提问者

duanzhihui
数据库管理员IBM成都GDC

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2010-12-27
  • 关注会员:2 人
  • 问题浏览:17857
  • 最近回答:2010-12-31
  • X社区推广