oracle中transaction是不是只有commit之后才能完成,不commit事物就完成不了???

数据库] oracle中transaction是不是只有commit之后才能完成,不commit事物就完成不了??? [复制链接]
0 0

论坛徽章:
1
天蝎座日期:2014-10-18 18:48:57
跳转到指定楼层
1[收藏(0)][报告]
  发表于 2014-04-11 20:19  | 只看该作者  | 倒序浏览
本帖最后由 蓦然princes 于 2014-04-12 00:02 编辑

oracle中讲到transaction时提到,只有commit之后才一个事物才算完成。例如 一条insert语句,如果不commit
则,数据一致在SGA中,并没有写入Redolog file中。只有commit之后才会将SGA中的数据写入Redolog file中
一个transaction才算完成。
问题:在讲到后台进程时说:DBWR进程是由checkpoint时间触发、或者data Buffer cache达到一定界值之后触发
         那就是说,如果一个insert语句执行完了,不进行commit,此时checkpoint时间发生,或者data Buffer cache
         达到一定界限值,又或是,日志切换发生,都将触发DBWR进程进行数据写操作,但是在DBWR进行之前会
        触发LGWR进程。此时没有进行commit的数据自动从SGA中的Relog Buffer中写道Redolog file中。
请问:这样不是和transaction中说的如果没有commit事物就没有完成矛盾了吗????也就是说,即使没有commit
       那insert这个transaction也可能完成。

     也就是说,任何操作不用commit进行提交,等到LGWR进程启动时(如:redolog Buffer达到1/3满,每三秒等)Sga中的redolog Buffer会写入到redolog file中, 这样的话,对于一个transaction,没有commit,也很有可能由于LGWR启动,将
sga中的数据写入到日志了啊。。。。我不知道哪里理解错了,请高手们指点小弟一下!!!感激不尽啊!!!
 
   

论坛徽章:
17
技术图书徽章日期:2014-04-29 09:09:57 数据库技术版块每日发帖之星日期:2015-12-13 06:20:00 IT运维版块每日发帖之星日期:2015-12-13 06:20:00 数据库技术版块每日发帖之星日期:2015-10-20 06:20:00 数据库技术版块每日发帖之星日期:2015-08-21 06:20:00 数据库技术版块每日发帖之星日期:2015-06-17 22:20:00 2015年迎新春徽章日期:2015-03-04 09:57:09 2015年辞旧岁徽章日期:2015-03-03 16:54:15 技术图书徽章日期:2015-01-12 17:05:35 亥猪日期:2014-11-09 13:05:04 未羊日期:2014-07-26 13:08:31 金牛座日期:2014-09-25 11:28:54
2[报告]
  发表于 2014-04-15 16:10  | 只看该作者
回复 1# 蓦然princes 


    不矛盾的,一般checkpoint的时候,脏数据会写入日志和数据文件,即使是没有提交commit也会写入数据文件,同时在日志文件中会有相关的信息描述,未提交commit和提交commit的数据都会在数据文件中,区别在于日志文件中记录的信息不同,一旦自动或者是手动执行rollback回滚操作的话,未提交commit的数据会被恢复为前映像的状态,不知道我的回答你是否满意?
 
   

论坛徽章:
1
天蝎座日期:2014-10-18 18:48:57
3[报告]
  发表于 2014-04-15 20:48  | 只看该作者
还不能确定你说的是不是正解,因为除了你没有其他人恢复啊?????为什么,难道是我问的问题没法回答吗????回复 2# jackson198574 


   
 
   

论坛徽章:
17
技术图书徽章日期:2014-04-29 09:09:57 数据库技术版块每日发帖之星日期:2015-12-13 06:20:00 IT运维版块每日发帖之星日期:2015-12-13 06:20:00 数据库技术版块每日发帖之星日期:2015-10-20 06:20:00 数据库技术版块每日发帖之星日期:2015-08-21 06:20:00 数据库技术版块每日发帖之星日期:2015-06-17 22:20:00 2015年迎新春徽章日期:2015-03-04 09:57:09 2015年辞旧岁徽章日期:2015-03-03 16:54:15 技术图书徽章日期:2015-01-12 17:05:35 亥猪日期:2014-11-09 13:05:04 未羊日期:2014-07-26 13:08:31 金牛座日期:2014-09-25 11:28:54
4[报告]
  发表于 2014-04-16 09:28  | 只看该作者
本帖最后由 jackson198574 于 2014-04-16 09:32 编辑

回复 3# 蓦然princes 

官方文档Concept:
checkpoint
1. A data structure that marks the checkpoint position, which is the SCN in the redo 
thread where instance recovery must begin. Checkpoints are recorded in the control 
file and each data file header, and are a crucial element of recovery. 
2. The writing of dirty data blocks in the database buffer cache to disk. The database 
writer (DBWn)process writes blocks to disk to synchronize the buffer cache with the 
data files.

Checkpoint Process (CKPT) 
The checkpoint process (CKPT)updates the control file and data file headers with 
checkpoint information and signals DBWnto write blocks to disk. Checkpoint 
information includes the checkpoint position, SCN, location in online redo log to begin 
recovery, and so on. As shown in Figure 15–4, CKPT does not write data blocks to data 
files or redo blocks to online redo log files.

 
   

论坛徽章:
1
天蝎座日期:2014-10-18 18:48:57
5[报告]
  发表于 2014-04-17 19:28  | 只看该作者
高手,请问你的这段”不矛盾的,一般checkpoint的时候,脏数据会写入日志和数据文件,即使是没有提交commit也会写入数据文件,同时在日志文件中会有相关的信息描述,未提交commit和提交commit的数据都会在数据文件中,区别在于日志文件中记录的信息不同,一旦自动或者是手动执行rollback回滚操作的话,未提交commit的数据会被恢复为前映像的状态,不知道我的回答你是否满意?“内容在联机文旦哪里能找到,我找不到这段内容在官方文档中的讲解位置。。。。感激不尽回复 4# jackson198574 


   
 
   

论坛徽章:
17
技术图书徽章日期:2014-04-29 09:09:57 数据库技术版块每日发帖之星日期:2015-12-13 06:20:00 IT运维版块每日发帖之星日期:2015-12-13 06:20:00 数据库技术版块每日发帖之星日期:2015-10-20 06:20:00 数据库技术版块每日发帖之星日期:2015-08-21 06:20:00 数据库技术版块每日发帖之星日期:2015-06-17 22:20:00 2015年迎新春徽章日期:2015-03-04 09:57:09 2015年辞旧岁徽章日期:2015-03-03 16:54:15 技术图书徽章日期:2015-01-12 17:05:35 亥猪日期:2014-11-09 13:05:04 未羊日期:2014-07-26 13:08:31 金牛座日期:2014-09-25 11:28:54
6[报告]
  发表于 2014-04-17 20:20  | 只看该作者
回复 5# 蓦然princes 


    不是官方文档里的,你谷歌一下吧。
 
   

论坛徽章:
17
技术图书徽章日期:2014-04-29 09:09:57 数据库技术版块每日发帖之星日期:2015-12-13 06:20:00 IT运维版块每日发帖之星日期:2015-12-13 06:20:00 数据库技术版块每日发帖之星日期:2015-10-20 06:20:00 数据库技术版块每日发帖之星日期:2015-08-21 06:20:00 数据库技术版块每日发帖之星日期:2015-06-17 22:20:00 2015年迎新春徽章日期:2015-03-04 09:57:09 2015年辞旧岁徽章日期:2015-03-03 16:54:15 技术图书徽章日期:2015-01-12 17:05:35 亥猪日期:2014-11-09 13:05:04 未羊日期:2014-07-26 13:08:31 金牛座日期:2014-09-25 11:28:54
7[报告]
  发表于 2014-04-17 20:22  | 只看该作者
回复 5# 蓦然princes 


    我这段描述回头看有问题,不过既然你看过官方文档了,最好自己多安排一些精力在研究官方文档上。
 
   

论坛徽章:
7
天蝎座日期:2013-08-16 23:19:32 午马日期:2014-04-28 11:02:40 丑牛日期:2014-01-08 09:20:14 寅虎日期:2014-01-11 11:03:44 天秤座日期:2014-05-16 23:24:24 摩羯座日期:2014-07-20 10:46:04 卯兔日期:2014-08-08 15:21:41
8[报告]
  发表于 2014-04-17 22:21  | 只看该作者
commit做了什么?
commit的本质是把 log buffer里的日志数据块刷新到redo logfiles磁盘中,保证了数据部丢失。
 
   

论坛徽章:
0
9[报告]
  发表于 2015-09-21 10:21  | 只看该作者
2楼回答的很正确 闲来无聊 翻翻帖子
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值