yangtingkun
===========================================================
事务管理——数据库概念
===========================================================

事务是一个或多个SQL语句构成的逻辑单元。

 


Oracle中的事务开始于第一个可执行的SQL。可执行的SQL语句是指产生对Oracle直接的语句,比如DML和DDL语句。

事务结束于以下情况:

用户发出COMMIT或ROLLBACK语句;

用户发出DDL语句;

用户断开和数据库的连接,这时当前事务会提交;

用户的进程异常终止,这时当前的事务会回滚。

 

当发出COMMIT后,Oracle会进行下列操作:

相应回滚段的内部事务表记录事务已经提交。并将对应的SCN(系统改变号)记录到表中;

LGWR把所有余下的缓冲区中的重做日志条目存储到硬盘上,并在联机重做日志中记录SCN;

释放表和行上的锁定;

Oracle标识事务完成。

 

当发出ROLLBACK后,Oracle会进行下列操作:

撤销所有已做的修改,通过从回滚段中读取数据来完成;

释放会话的锁定,释放在队列等待中被占用锁定的每个事项;

标识事务完成。

 

Discrete Transaction:通过使用BEGIN_DISCRETE_TRANSACTION过程。这种事务采用DIRECT PATH方式,不产生UNDO信息,产生的REDO信息存放在内存中单独的位置。

 

自治事务(Autonomous Transaction):自治事务独立于调用当前事务的事务。独立事务的提交和回滚不会影响到父事务。

 

yangtingkun 发表于:2005.05.04 23:32 ::分类: ( 读书笔记 ) ::阅读:(1935次) :: 评论 (4)
[回复]

Discrete Transaction产生的REDO信息存放在内存中单独的位置?什么意思?

玉面飞龙 评论于: 2005.05.06 09:17
[回复]

还不清楚,文档上是这样描述的,还没有做具体的测试。
原文如下:
Oracle generates redo information, but stores it in a separate location in memory.

yangtingkun 评论于: 2005.05.06 14:37
事务处理的顺序 [回复]

请教:当DBServer先后开始几个事务时,是并行处理还是串行处理?

liufang 评论于: 2005.09.08 14:04
[回复]

如果一个SESSION上的事务当然是串行。
如果是多个SESSION上的事务是并行。

yangtingkun 评论于: 2005.09.08 16:52

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...