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中不就行了吗?干什么还回退啊?回退都做了什么呢? 展开
• 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中不就行了吗?干什么还回退啊?回退都做了什么呢? 展开
4个回答
展开全部
已经提交的事务即在进行update或insert操作后,进行了commit的操作。
1、如,有以下两个语句:
update test set id=3 where id=2;
commit;
insert into test values (4,'王五');
commit;
2、如果进行了update及insert操作后不进行提交的话,那么修改或插入的数据只在当前session有效,并不会写入数据库,只有当commit(提交)后,才会生效。
展开全部
这里为什么重点强调 未提交的事务 呢 , • 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 确认的事务
• When there is 1 MB of
redo
• Every three seconds
• Before DBWn writes
这些情况下 都会自动写入redo logfile, 这种自动的机制是为了 确保避免一次commit的时候执行过多的写入。
比如我们用sql语句修改了一个值 但是没有提交 在上面几种情况下可能 这个操作已经记录到了redo logfile 但是这个操作并没有得到认为的确认,所以当发生系统崩溃等问题时,应该将这种修改回退,因为他并不是人为确认的,并不合法。 未提交的事务就是指 系统自动写入到redo中但是并没有得到用户的commit 确认的事务
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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原则。
commit 是标记事务提交,会在数据块上做标记,此时 数据可能在内存里面。
every three seconds等自动写入redo logfile中的数据并不是以提交的事务?
----这个是将在内存中的数据的操作记录写入redo log ,达到写入条件的所有数据都会被写入而不管它是不是被标记为提交。
2 回退就是回滚,oracle在做修改操作的是除了写 redo log之外 还会写 undo 也即回滚记录,redo的逆向操作。
利用undo 中的信息对已经修改的操作当时为标记为commit记录做修改。
datafile中没有修改,但是数据库内存中的已经修改了,此时数据是不一致的,不符合acid原则。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你做了修改,不提交别人就看不到你的修改,是为了体现一致性;回退是做了修改,但最后不想这么做了,所以才回退,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询