commit在oracle中,oracle 中的commit的操作

commit,对于oracle来说,是一个提交的动作,也就是说,你把你对oracle数据库的修改,提交给数据库,告诉数据库,你已经确定要修改这些东西了,然后数据库看到了你的提交,就把内容修改了

其实在commit里面呢,涉及到了一个oracle数据库的概念,那就是事务

transaction,事务的特点呢,有四个

ACID

ATOMIC:原子性,也就是说,这是最小的单位了,没有比这个更小的单位了

要么提交,要么失败

consistentcy:一致性,??我现在还是不明白一致性到底是什么意思?

TOM书里写的内容是:事务将oracle从一个状态切换到另外一个状态

我现在还是不明白???????????????????????????

STILL DON'T GET IT

ISOLATION:隔离性,这也就是说,在你提交一个事务之前,任何数据库的别人,都看不到你的操作,你的改动。

DURATION:持久性,这个意思是说,一旦你提交这个事务之后,她就不会改动了,除非你回滚

对于commit来说呢,我们现在来讲我们commit之后呢,what's going to happen

WELL,two thing is going to happen

1:oracle会使用LGWR进程把REDO LOG BUFFER中的内容写到硬盘DISK中,也就是写到REDO01.LOG或者REDO02.LOG,或者REDO03.LOG中去。

这里的内容指的是:我们的transaction的redo records

2:oracle会为我们的这一次提交生成一个SCN号,提交给数据库,来确定我们commit的transaction的redo records。

I don't knwo why,but during these days ,I always thought that this is it

我已经把oracle的redo的信息整理过了

下面呢,我们来讲一下commit,这是一个和transaction事务紧密相连的一个事情

一个DML语句是默认事务的开始

我忘记了,好像是一个事务开始默认是DML语句开始,一个事务结束就是commit了

我真的是忘了,这是TOM的书里面写的内

就是说,一个事务的默认开始是:DML语句

让我再看看我的书里,哈哈

wait for me

哈哈,找到了

oracle不需要专门的语句来“开始事务”。事务会在修改数据的第一条语句处开始。

恩恩,讲述的真是明白,这和其他的数据库不相同

和DB2,SQLSERVER不一样,比如说,她们需要显式地开始一个事务,但是oracle不需要

oracle可以显式的结束一个事务,使用commit,或者rollback

其实oracle和文件系统不同的地方就在于这里,oracle数据库是以事务为原子

这也就是说,all or nothing。

文件系统可能会产生数据不一致的地方,但是oracle数据库不会

这是oracle数据库的一种设计理念

为了容错率极低的保险和金融行业,恩恩

这是逻辑上的东西,下面我们来看oracle是怎么从物理上来实现这些事情的

$其实要说起commit来,是无法和oracle中的事务分开的。

下面我们来看commit之后的动作

commit之后呢,发生的两件事情并没有同步数据到物理的存储上面

那么oracle是如何实现数据一致性的呢?

这是一个很大的问题,我们现在这里留一个疑问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值