oracle数据库中什么是已经提交的事务?

•Atcommit•Whenone-thirdfull•Whenthereis1MBofredo•Everythreese... • At commit
• When one-third full
• When there is 1 MB of
redo
• Every three seconds
• Before DBWn writes

只有当用户手动执行
sql>commit;
时写入redo logfile的事务才就已提交的事务码?而类似every three seconds等自动写入redo logfile中的数据并不是以提交的事务?

-------------------------------------------------------------------------
在数据库启动的时候,系统监视进程SMON会在下一次启动例程的时候,自动读取重做日志文件并对数据库进行恢复。也就是说,进行将已提交的事物写入数据文件(已经写入到日志文件中而没有写入到数据文件中的数据)、回退未提交的事务操作。可见,Oracle SMON进程是一个比较小但是却非常重要的角色。
---------------
什么的这段话的意思是当数据库崩溃时启动数据库后,会将redo logfile中由用户手动commit的数据形容datafile中,而将• When one-third full• When there is 1 MB of
redo• Every three seconds自动写入redo logfile的数据回退?
我说的对吗?

还有回退未提交的事务操作是什么意思呢,datafile并没有更改,回退什么啊?回退给谁啊,往哪里回退啊?datafile并没有更改,smon把已经提交的当时没有写入datafile中的脏数据写入datafile中不就行了吗?干什么还回退啊?回退都做了什么呢?
展开
 我来答
badkano
2016-01-07 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部

已经提交的事务即在进行update或insert操作后,进行了commit的操作。

1、如,有以下两个语句:


update test set id=3 where id=2;
commit;
insert into test values (4,'王五');
commit;

2、如果进行了update及insert操作后不进行提交的话,那么修改或插入的数据只在当前session有效,并不会写入数据库,只有当commit(提交)后,才会生效。

仁科信息
2024-07-24 广告
Oracle EBS运维是确保企业资源规划系统稳定、高效运行的关键环节。它涵盖了系统监控、性能优化、故障排查与恢复等多方面内容。通过持续的监控和数据分析,运维团队能够及时发现并解决潜在问题,保障系统的稳定性和安全性。同时,他们还需要与业务部... 点击进入详情页
本回答由仁科信息提供
姑遂向触0L
推荐于2017-09-06 · TA获得超过190个赞
知道小有建树答主
回答量:157
采纳率:66%
帮助的人:56.1万
展开全部
这里为什么重点强调 未提交的事务 呢 , • When one-third full
• When there is 1 MB of
redo
• Every three seconds
• Before DBWn writes

这些情况下 都会自动写入redo logfile, 这种自动的机制是为了 确保避免一次commit的时候执行过多的写入。

比如我们用sql语句修改了一个值 但是没有提交 在上面几种情况下可能 这个操作已经记录到了redo logfile 但是这个操作并没有得到认为的确认,所以当发生系统崩溃等问题时,应该将这种修改回退,因为他并不是人为确认的,并不合法。 未提交的事务就是指 系统自动写入到redo中但是并没有得到用户的commit 确认的事务
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang07402
2013-10-08 · TA获得超过396个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:279万
展开全部
1 时写入redo logfile的事务才就已提交的事务码?而类似every three seconds等自动写入redo logfile中的数据并不是以提交的事务?

commit 是标记事务提交,会在数据块上做标记,此时 数据可能在内存里面。
every three seconds等自动写入redo logfile中的数据并不是以提交的事务?
----这个是将在内存中的数据的操作记录写入redo log ,达到写入条件的所有数据都会被写入而不管它是不是被标记为提交。

2 回退就是回滚,oracle在做修改操作的是除了写 redo log之外 还会写 undo 也即回滚记录,redo的逆向操作。
利用undo 中的信息对已经修改的操作当时为标记为commit记录做修改。
datafile中没有修改,但是数据库内存中的已经修改了,此时数据是不一致的,不符合acid原则。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenggaona1
2013-10-09 · TA获得超过122个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:45.7万
展开全部
你做了修改,不提交别人就看不到你的修改,是为了体现一致性;回退是做了修改,但最后不想这么做了,所以才回退,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式