12
返回列表 发新帖
楼主: 迷人的蚊子

[笔记] 问一个比较初级的问题

[复制链接]
论坛徽章:
0
11#
发表于 2008-4-30 16:57 | 只看该作者
要产生归档日志的前提是你的库是否为归档模式,用archive log list 查看一下!不是归档模式不管你做什么都不会有归档日志!概念没搞清楚啊!
insert 要是成功是会产生日志的!没成功应该是不会有日志产生!rollback那就不要说了,你没insert成功那来的undo啊!

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
12#
发表于 2008-4-30 21:30 | 只看该作者
没成功也有UNDO,UNDO也是一种操作,是此前修改操作的反操作,和一般的操作没什么区别,因此,无论成功与否,都会产生REDO记录。

[ 本帖最后由 sqysl 于 2008-4-30 21:31 编辑 ]

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2008-4-30 22:48 | 只看该作者
打个比方你对唯一键insert了一个已有的值,insert报错!
那么你没有修改任何的数据,那么拿来的undo呢!

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
14#
发表于 2008-5-1 01:39 | 只看该作者
原帖由 zhujunyan001 于 2008-4-30 08:48 发表
打个比方你对唯一键insert了一个已有的值,insert报错!
那么你没有修改任何的数据,那么拿来的undo呢!


It generates both redo and undo. Redo is easy to understand and check. You can find the session's "redo size" statistic go up in v$sesstat when that session keeps doing insert into table with a duplicate value, where the table has a unique constraint on that column.

You can check undo's activity by select * from v$sesstat where statistic# in ([the stat# from v$statname or v$sysstat for "undo change vector size" and "rollback changes - undo records applied"]) and sid = the_sid. My test in 10.2.0.1 shows that "rollback changes - undo records applied" goes up by 1 and "undo change vector size" goes up by about 70 bytes for a one-number-column table with PK on it and I run insert into testunique values (1) after it already has value 1.

Yong Huang

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
15#
发表于 2008-5-2 21:05 | 只看该作者
insert成功与不成功都是对块有所修改的,而且产生的UNDO差不多。

使用道具 举报

回复
论坛徽章:
38
2010新春纪念徽章
日期:2010-01-04 08:33:082012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主2段
日期:2012-05-15 15:24:11优秀写手
日期:2013-12-18 09:29:08马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
16#
发表于 2008-5-9 14:54 | 只看该作者
原帖由 Flying-Tiger 于 2008-4-17 19:27 发表
这个问题要具体试验下才知道。因为我有个疑问,如果我新增了资料,这时候REDO LOG Buffer中有该日志条目,但还没写入到Redo Log File中,我这时执行Rollback,不知道Oracle会怎么处理。建议做个试验,用LOGMINER分析下。



你一作修改,服务器进程要先生成重做记录,传到重做缓存中,然后服务器进程才开始执行修改。重做缓存中的重做记录会被LGWR很快写进日志文件。
你后来再回滚,这是另一个操作了,Oracle同样也会为他生成重做记录,并写到日志文件中

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
17#
发表于 2008-5-11 19:46 | 只看该作者
所有的操作做了就做了,都要写入REDO FILE,无论成功与否,生成的REDO迟早都要写入REDO FILE,回滚也是修改,和用户的修改一样的,而不是用户修改的取消。

使用道具 举报

回复

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

本版积分规则 发表回复

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