事物处理与并发控制 授课教师:李 斌 目标: Oracle 中的事务处理是什么 怎样控制Oracle 中的事务处理 Oracle 怎样在数据库中实现并发控制,让多个用户同时访问和修改相同的数据表 1 什么是事务 事务就是在数据库上完成的一个操作。要么全部执行并且存储需要的操作,要么全部撤销已经进行的操作,使得数据库恢复到没有改变之前的状态。 2 事务处理控制语句 Oracle 中的一个重要的概念就是没有“开始事务处理”的语句。用户不能显式开始一个事务,事务结束时需要向数据库提交(Commit),或者回滚(Rollback)操作。 COMMIT ROLLBACK SAVEPOINT ROLLBACK TO SAVEPOINT SET TRANSACTION SET CONSTRAINTS 2.1 COMMIT处理 当提交时,我们需要处理三个任务: 1、 为我们的事务处理生成SCN(系统改变号)。 2、 将所有剩余的已经缓冲的重做日志表项写入磁盘,并且将 SCN 记录到在线重做日志文件中。由 LGWR 执行处理。 3、 释放我们的会话所锁定的资源。 LGWR 会在下列情况之一发生时执行清理工作: 每隔 3 秒 当 SGA 中的Redo Log Bu ffer Cache 容量超过 1/3 的空间,或者包含了 1MB 或者更多的已经缓冲数据 进行任何事务处理提交 2.2 ROLLBACK 处理 回滚是一项比较耗费资源的操作。当我们不需要存储所作出的修改时,就回滚我们的操作。回滚可以归结为异常处理范畴。 2.3 SAVEPOINT 和ROLLBACK TO SAVEPOINT SAVEPOINT 可以在应用中建立保存点。它可以让用户将单独的大规模事务处理分割成一系列较小的部分。 2.4 SET TRANSACTION SET TRANSACTION 必须是你的事务处理的第一条语句,用来设置事务之间的隔离级别。 规定事务处理的隔离级别 规定为用户事务处理所使用的特定回滚段 命名用户事务处理 SET TRANSACTION READ ONLY SET TRANSACTION READ WRITE SET TRANSACTION ISOLATION LEVEL SERIALIZABLE SET TRANSACTION ISOLATION LEVEL READ COMMITED 1、 READ ONLY 命令 SET TRANSACTION READ ONLY 将会做两件事情。 首先而且最明显的是:它会确保你无法执行修改数据的DML 操作。如果你要执行这样的操作,就会报错。 另外,READ ONLY 可以使得我们把数据库视图冻结在某个时间点。 例如:我们需要获得上午 10:00 使,数据库中某个数据表中的数据,而这张表又与其它很...