楼主: jiangzx

[精华] db2回滚处理问题

[复制链接]
论坛徽章:
61
马上有车
日期:2014-12-08 18:21:572012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:36ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-08-25 10:31:10蛋疼蛋
日期:2011-07-21 10:57:04现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-03-11 15:50:142011新春纪念徽章
日期:2011-02-18 11:42:47
151#
发表于 2006-5-24 21:49 | 只看该作者
有空得多来研究研究这个贴才行。。。
谢谢各位!

使用道具 举报

回复
zluo 该用户已被删除
152#
发表于 2006-5-27 22:30 | 只看该作者
各位老大们谈得老很好,让我学到了很好多东西,非常感谢你们

使用道具 举报

回复
论坛徽章:
0
153#
发表于 2006-12-5 21:08 | 只看该作者
最初由 caucasus_lee 发布
[B]

有一个明显的偏差,这里提到的cluster软件,只是cluster软件而已。cluster软件的功能是什么?是提供操作系统级别的集群,也就是说,操作系统级别的切换真的可以满足秒级切换没有错,但是操作系统切换了有什么用呢?必须将应用也切换过来是不是?这个应用就包括oracle,相信配过IBM HACMP主备模式的人都清楚,阵列和IP的切换确实是非常快(其实应该是十秒级),之后的应用切换,就要看应用自己的切换速度了。这个时间,恐怕就不是秒级了,完全是根据宕机那一刻,系统的繁忙程度成正比的。

其实我们大家都知道,这些cluster软件切换的一个重要环节就是配置Oracle切换脚本。如果配置过这样的脚本,就会知道,这个脚本就是关闭和启动数据库。因此,真正切换时间不应该只是计算硬件资源的切换,最关键的和时间最长的应该是应用重启一次的时间,具体时间的长短,我想有过实施经验的人都会很明白的。

这个讨论真是有意思,我喜欢 [/B]


哥们,HADR的备点库是用复制技术同步的,不需要重启.
这个和共享磁盘的冷备不是一个意思.
不过HADR的备点平时是不可访问的.就这点而言SYBASE的REP要比HADR强.
应该这样说,如果讨论的是高扩展性,oracle的rac强.如果是高可用性,那当然是谁的failover时间短谁强了,所以ibm的hadr或SYBASE的REP强.

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
186
授权会员
日期:2008-07-27 22:25:202014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14版主4段
日期:2015-02-26 02:21:03慢羊羊
日期:2015-03-04 14:51:35
154#
发表于 2006-12-6 16:14 | 只看该作者
感谢各位,
本人受益匪浅!

使用道具 举报

回复
论坛徽章:
2
设计板块每日发贴之星
日期:2006-10-17 01:09:06授权会员
日期:2007-01-10 08:53:09
155#
发表于 2006-12-9 11:52 | 只看该作者
关注。。。

使用道具 举报

回复
论坛徽章:
0
156#
发表于 2006-12-12 10:51 | 只看该作者

真精彩!

看这些高手辩论的真是很精彩啊
学习学习!

使用道具 举报

回复
论坛徽章:
0
157#
发表于 2007-2-17 20:57 | 只看该作者
最初由 hannibal 发布
[B]事务隔离级别生产应用都是使用isolation 3。即禁止幻影读。
利用事务隔离不同级别说事是误导和混淆。
至于从事务隔离级别说到HA和DR,只能说是离题了。
我怀疑oracle在一种小select + 小update, 小select +  小update的情况下会出现select数据不准确的情况。
我来举个银行扣款的简单例子:
通常扣款后前台都会显示 账户交易前金额 发生额 账户余额
我们知道扣款交易的事务流程是
select bal (交易前金额)
中间处理过程
update bal - val (账户余额)
假如并发量特别大的情况,A,B两个交易同时执行,当然事务隔离级别保证最终结果是正确的。
那么会不会发生 [交易前金额] 返回前台有误的情况?
db2,sybase等通过给读加锁严格保证了不可能产生幻影读,
oracle利用回滚段巧妙的避免了幻影读,但是有一个问题是oracle读出的数据当前可能是不正确的,oracle可以利用SCN找到最早的数据(注意这不是当前的数据),但他读出的数据是错误的。
而db2,sybase的做法保证当前读和写的数据是完全一致的。
银行是实时扣款,电信移动是延时批量扣款。
因此银行少用oracle, 电信移动多用oracle?
错误之处请指教,大家共同进步。 [/B]

曾经培训过ORACLE,就是这种感觉

使用道具 举报

回复
论坛徽章:
8
授权会员
日期:2007-02-07 08:06:00数据库板块每日发贴之星
日期:2007-02-16 01:02:55数据库板块每日发贴之星
日期:2007-03-20 01:05:44数据库板块每日发贴之星
日期:2007-03-21 01:07:54数据库板块每日发贴之星
日期:2007-03-23 01:08:55数据库板块每日发贴之星
日期:2007-03-27 01:07:31数据库板块每日发贴之星
日期:2007-03-28 01:07:49会员2007贡献徽章
日期:2007-09-26 18:42:10
158#
发表于 2007-2-25 16:28 | 只看该作者
最初由 guorui 发布
[B]各位老大过年好!


hannibal 论述“oracle读出的数据当前可能是不正确的”的论据是“oracle可以利用SCN找到最早的数据(注意这不是当前的数据)”。这个论据是错误的,我的依据如下:
“Whenever a transaction is committed, LGWR writes the transaction redo records from the redo log buffer of the SGA to a redo log file, and assigns a system change number (SCN) to identify the redo records for each committed transaction.”(摘自Oracle联机文档 http://download-west.oracle.com/ ... 4231/onlineredo.htm)。无论多么小的事务,每次提交commit产生一个新SCN号。
“When the Oracle server begins executing a SELECT statement, it determines the current system change number (SCN) and ensures that any changes not committed before this SCN are not processed by the statement.”(摘自Oracle DBA教材) 。注意是“current”SCN ,不是hannibal 认为的“最早的”SCN。
假设多个查询发起时SCN不一样(不同时开始),而且多个查询发起之间出现了相关数据提交,即便多个查询同时结束,查询的结果也会不同,即,查询结果有多个版本。每个查询都查到自己发起那一时刻的一致性数据(每个查询发起时的数据快照),结果中没有未提交的数据,即,没有不一致数据。这就是Oracle“多版本读一致性”。所以,我的结论是Oracle读的是正确的数据。



“oracle可以看到别人正在修改而没有提交“之前”的数据。”意思正确,但是容易引起歧义,因为“之前”可以理解为“修改之前”和“提交之前”,“提交之前”的理解显然错了。建议表述为“Oracle可以看到别人‘正在修改而没有提交’的数据的原始值。”
cliser  的例子中,“朋友正在存”,还没有提交,显而易见,储户本来就不应该看到朋友的未提交存款,所以,Oracle提供的不是“虚假的信息”,是可以对账的正确信息,所以,cliser的“储户就获得了虚假的信息”的结论是错误的。
假设这时候储户看到了朋友的存款,但是朋友又取消了存款,这种情况下储户看到的信息才是虚假信息。Oracle默认设置下是不会读到虚假信息的,而DB2在允许读取未提交信息的状态下会读出虚假信息(脏读,UR)。顺便说一句,Oracle通过设置一些少用的参数,也可以实现DB2的功能,例如UR,当然UR不是什么好功能。

A用户修改数据但是没提交,B用户可以读修改前的数据,这是很多并发系统具有的特征。例1,你用PowerPoint打开一个文档正在修改没有关闭,当你再到资源管理器中打开一次时,PowerPoint就提示你以只读方式打开未修改的版本;例2,当你从文档管理软件(例如VisualSafe)中Check Out一个文档来修改,在你Check In之前,其他人只能只读这个文档的原始版本。

有一致的数据,就应该能被读出来,这是数据库应有的功能。如果不能被读出来,有什么好处呢?难道就是通知B用户有个用户正在改数据?

DB2, SQL Server, Sybase因为没有回退段,回退靠Log实现,结果Log争抢激烈,再加上读一致性要求,带来特别多锁问题,开发人员要手工管理复杂的锁机制。Oracle没有这些问题,用不着开发人员管理锁,全自动。据我了解,开发那些数据库人员换用Oracle后,都感觉像脚踏车换成摩托车,甚至有人说Oracle的缺点是很难蹬着跑,哈哈。

DB2等数据库之所以有这么多个隔离级别和锁设置,主要是没有回退段而带来的开发和管理复杂性提高,并发行和读一致性无法兼顾。Oracle有回退段,并发行和读一致性都能兼顾,所以没有这方面的复杂性。
DB2和Oracle之间的比较就好比脚踏车和摩托车比较。脚踏车轻便,但是费劲;摩托车省力,但是多了个发动机。如果骑两种车的条件都具备,多数人会选择哪种车呢? [/B]


cliser  的例子中,“朋友正在存”,还没有提交,显而易见,储户本来就不应该看到朋友的未提交存款,所以,Oracle提供的不是“虚假的信息”,是可以对账的正确信息,所以,cliser的“储户就获得了虚假的信息”的结论是错误的。
假设这时候储户看到了朋友的存款,但是朋友又取消了存款,这种情况下储户看到的信息才是虚假信息。Oracle默认设置下是不会读到虚假信息的,而DB2在允许读取未提交信息的状态下会读出虚假信息(脏读,UR)。顺便说一句,Oracle通过设置一些少用的参数,也可以实现DB2的功能,例如UR,当然UR不是什么好功能。

兄弟,你说的这个有问题啊,ORACLE的一致读是说读到的东西以开始读的那时刻为准,和读的过程中其他会话操作数据是否提交没有关系啊.即便提交了,一致读的时候也是看没修改前的数据啊

使用道具 举报

回复
论坛徽章:
42
ITPUB元老
日期:2005-09-09 13:45:35马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14优秀写手
日期:2013-12-18 09:29:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32版主3段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:13:362012新春纪念徽章
日期:2012-02-13 15:13:36
159#
发表于 2007-10-16 22:25 | 只看该作者
同意  bbkingbbking  的观点

使用道具 举报

回复
论坛徽章:
29
授权会员
日期:2006-09-06 10:13:102013年新春福章
日期:2013-02-25 14:51:24法拉利
日期:2013-08-25 18:34:31路虎
日期:2013-08-26 20:49:09问答徽章
日期:2013-11-26 08:58:15林肯
日期:2014-02-11 13:02:482014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:112014年世界杯参赛球队:巴西
日期:2014-05-29 16:03:24马上有房
日期:2014-11-18 16:07:15
160#
发表于 2007-10-18 09:51 | 只看该作者
可以说DB2数据库是不支持读一致性这个概念,读一致性概念算是oracle特有的吧,DB2遵循sql的标准。oracle读的是 语句发出的那个时间点的 数据的映像,而db2是语句执行过程中的 实时数据。个人感觉IBM和甲骨文 对“读”操作 理解不同

使用道具 举报

回复

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

本版积分规则 发表回复

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