楼主: hahabean

[精华] 为什么有大量的FreePndpgs很久都不释放呢?

[复制链接]
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
11#
发表于 2009-8-10 10:45 | 只看该作者
原帖由 hahabean 于 2009-8-9 22:09 发表
还要向两位老大讨教呢,呵呵  我的理解是这样的:

SMP里面记录了所管理的EMP的状态(而不记录是谁做的更改)。同时还记录了最后一个更新SMP的交易LSN(这里用A代替)。由于只有特定的操作才会触发db2释放SMP中的页,即由Freepnd到Free的过程。所以在尝试free的时候需要保证任何早于A的交易(lowtranLSN)必须提交才行。

同时还像请问两位老大,怎么才能确定那个交易hold住了那个lowtranLSN呢?我尝试用db2pd -trans但是不行,呵呵


这里有两个问题: 首先是找到那个lowtranLSN ,how?
                         找到后,how to map to appid? 这一步,可以分析日志获得吧。

使用道具 举报

回复
论坛徽章:
1
生肖徽章2007版:虎
日期:2008-01-02 17:35:53
12#
 楼主| 发表于 2009-8-10 10:51 | 只看该作者

回复 #11 diablo2 的帖子

一般LSN都是被一个transaction hold住的吧,所以,如果能确定哪个是lowtranLSN的话,应该可以找到是哪个Trans,我觉得。但是我这边做过一个简单的测试,只有两个trans,后来发现crash recovery用的lowtranLSN比我用db2pd -trans能看到的firstLSN都小

使用道具 举报

回复
论坛徽章:
18
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:52
13#
发表于 2009-8-10 11:18 | 只看该作者
原帖由 ninth99 于 10/8/2009 12:44 发表

因为我遇到过这样的问题,表空间上有30%的空间处于pending,而系统却遇到表空间满,因此我想找到LSN,手工回滚它,已释放pending


用9.5吗?9.5上我虽然不能得到LSN,但有办法达到你的目的。

使用道具 举报

回复
论坛徽章:
5
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:马
日期:2009-09-10 11:26:192010新春纪念徽章
日期:2010-03-01 11:20:08ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262011新春纪念徽章
日期:2011-02-18 11:43:34
14#
发表于 2009-8-10 11:21 | 只看该作者
原帖由 unixnewbie 于 2009-8-10 11:18 发表


用9.5吗?9.5上我虽然不能得到LSN,但有办法达到你的目的。

怎么得到?谢谢。

使用道具 举报

回复
论坛徽章:
18
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:52
15#
发表于 2009-8-10 11:41 | 只看该作者
原帖由 ninth99 于 10/8/2009 13:21 发表

怎么得到?谢谢。


本来想用Workload Manager(9.5 and above only)来帮你实现找出抓住最早LSN的appl,所以才问你是否用9.5。
现在发现好像不用用到WLM,只需用
db2pd  -db name -appl|sort +8|more

然后看Firstlsn列中不为0x000000000000的第一个数值。这个数值应该就是lowest tran lsn了。
AppHandl列中数值就是你要kill的appl。最好先对其做个snapshot看看在做什么。

使用道具 举报

回复
招聘 : c/c++研发
论坛徽章:
45
技术图书徽章
日期:2014-03-10 14:09:192012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
16#
发表于 2009-8-10 12:01 | 只看该作者
原帖由 ninth99 于 2009-8-10 10:15 发表
同问,怎么才能确定那个交易hold住了那个lowtranLSN呢?这个问题我也困惑了好久。

db snapshot
Appl id holding the oldest transaction

使用道具 举报

回复
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:橄榄球
日期:2011-05-22 10:54:33管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010年世界杯参赛球队:丹麦
日期:2010-04-06 10:23:36
17#
发表于 2009-8-10 13:13 | 只看该作者
这个问题在db2v8里面碰到多次

使用道具 举报

回复
论坛徽章:
9
2009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
18#
发表于 2009-8-10 13:59 | 只看该作者
原帖由 hahabean 于 2009-8-9 22:09 发表
还要向两位老大讨教呢,呵呵  我的理解是这样的:

SMP里面记录了所管理的EMP的状态(而不记录是谁做的更改)。同时还记录了最后一个更新SMP的交易LSN(这里用A代替)。由于只有特定的操作才会触发db2释放SMP中的页,即由Freepnd到Free的过程。所以在尝试free的时候需要保证任何早于A的交易(lowtranLSN)必须提交才行。

同时还像请问两位老大,怎么才能确定那个交易hold住了那个lowtranLSN呢?我尝试用db2pd -trans但是不行,呵呵




请问一下楼主:
在本例中,你认为的 “最后一个更新SMP的交易LSN(这里用A代替)” 是步骤6产生的吗?
但是步骤6是另外在另外一个表空间操作,要更新SMP也应该更新ftest表空间的SMP,为什么
ftest2的free 依赖于更新ftest的smp的交易lsn呢?
难道是说步骤6产生的lsn要早于步骤5的lsn吗?
能详细解释一下吗,非常感谢。。。。

另外,crash recovery用的lowtranLSN比db2pd -trans能看到的firstLSN都小是不是因为
数据库需要redo和undo的原因?
请大侠们解惑啊。。。。。。。。。。


好不容易找到了组织,一定要把问题问到底!

使用道具 举报

回复
论坛徽章:
10
数据库板块每日发贴之星
日期:2009-06-04 01:01:02祖国60周年纪念徽章
日期:2009-10-09 08:28:002009日食纪念
日期:2009-07-22 09:30:00数据库板块每日发贴之星
日期:2009-06-28 01:01:02数据库板块每日发贴之星
日期:2009-06-15 01:01:02数据库板块每日发贴之星
日期:2009-06-14 01:01:02数据库板块每日发贴之星
日期:2009-06-09 01:01:02数据库板块每日发贴之星
日期:2009-06-07 01:01:02授权会员
日期:2009-06-06 10:43:16数据库板块每日发贴之星
日期:2010-12-01 01:01:01
19#
发表于 2009-8-10 17:12 | 只看该作者
0x0700000047484820 是什么地址啊

使用道具 举报

回复
论坛徽章:
1
生肖徽章2007版:虎
日期:2008-01-02 17:35:53
20#
 楼主| 发表于 2009-8-10 21:30 | 只看该作者
原帖由 mdkii 于 2009-8-10 13:59 发表




请问一下楼主:
在本例中,你认为的 “最后一个更新SMP的交易LSN(这里用A代替)” 是步骤6产生的吗?
但是步骤6是另外在另外一个表空间操作,要更新SMP也应该更新ftest表空间的SMP,为什么
ftest2的free 依赖于更新ftest的smp的交易lsn呢?
难道是说步骤6产生的lsn要早于步骤5的lsn吗?
能详细解释一下吗,非常感谢。。。。

另外,crash recovery用的lowtranLSN比db2pd -trans能看到的firstLSN都小是不是因为
数据库需要redo和undo的原因?
请大侠们解惑啊。。。。。。。。。。


好不容易找到了组织,一定要把问题问到底!


呵呵,这些可能都是设计上的考虑了吧,为了简化管理的开销吧,我觉得

[ 本帖最后由 hahabean 于 2009-8-10 21:32 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表