oracle事务处理机制探析

ORACLE事务处理机制探析摘要:在ORACLE数据库中,为了确保数据的完整性和一致性,提供了事务处理机制。该文详细阐述了事务处理的运行机制和实现方法,最后用实例说明事务处理的整个过程,为程序员提供了一个用事务处理来保证数据止确统一的方法。关键词:事务处理;提交;回滚;保存点:TP311文献标识码:A:1009-3044(2013)15-3466-02在ORACLE的PL/SQL程序设计过程中,经常会使用DML语句来操作数据库,怎么才能确保数据库不会因为意外或者误操作损坏数据呢,以员工管理系统为例,其中有一张部门表和一张员工表,当我们删除某个部门时,应该先删除这个部门所有的员工,如果员工表没有删除成功而部门表中成功删除,就破坏了数据,造成数据库统计错误。同样的道理,添加员工时,如果这个员工的部门不存在而添加成功,也会造成统计错误,使数据库的数据变得混乱,影响此系统的正常运行,ORACLE为了确保数据的完整性和一致性,所以引入了事务处理的机制。1事务处理详述是由多个SQL语句组合成一起组成的逻辑工作单元,它负责执行一系列对数据的操作。这些对数据库的所有操作如果全部成功完成,则永久更新,否则,只要有一条SQL语句执行失败,就不会更新当前数据,而会冋滚到执行前的状态。这样,就能使数据库保持完整性和一致性,不会产生错误的数据。事务处理所组成的逻辑工作单元为了保证数据的一致性,那么其中每一个逻辑工作单位就必须要满足ACID属性,即原子性、一致性、隔离性和持久性。1.1原子性原子性其实就是对事务的一个完整性操作,就好比一段顺序执行的程序,要么全部执行完成,要么不执行。如果执行到中途遇到错误,则停止并且回到执行前的状态。例如在个人帐户管理中,A帐户支出500元给B帐户,那么A帐户就应该减少500元,B帐户就应该增加500元,这个操作要么全部执行成功,要么都不成功,这样来确保这个事务是一个原子工作单位。1.2一致性事务的一致性是指在事务完成的时候,对数据的相关操作在受影响的数据表的数据都会同时进行更新,保持数据的一致状态。就如在刚才的例子当中,A帐户和B帐户在数据库中每个表中的状态都会同时发生改变,來保持数据的完整性。1.3隔离性不同事务Z间的运行是互不干扰的,是完全隔离执行的,一个事务不会看到另一个事务发生的状态,也看不到中间状态的数据。事务查看到的只能是数据修改前或或务执行成功更新后的状态。就如刚才的事例,要么看到A帐户到B帐户支出前的数据或者成功支出后的数据,对于A帐户支出后,13帐户没有执行完成的状态是看不到的。这就是事务的隔离性。1.4持久性事务的持久性是指如果一个事务已经成功提交后,数据库中的数据就会成功更新,这种更新会永久的保存,即使系统遇到故障甚至机器崩溃,也不会影响数据库的状态。2提交事务(COMMIT)在事务处理过程中,使用COMMIT语句会提交并结束一个事务处理。当执行COMMIT语句后,数据库的事务处理主要做了两项工作:第一是将所有对数据库的操作永久性的写入数据库,其他的用户可以立即看到对数据库所做的所有变化;第二是对丁本事务的所有锁定以及事务所占用的所有资源都会被自动的释放出来,并且将此事务标记为已完成。3回滚事务(ROLLBACK)事务的回滚就是取消已执行的操作,并且回到操作前的状态。例如在前面的例子中,A帐户成功执行了支出500元的操作,但遇了一些错误或问题,B帐户并没有增加金额,这是回滚就会撤消刚才的操作,回到A帐户支出前的数据,并且终止事务的执行。事务的回滚一般也是有两种情况:第一是数据的误删除或误更改來使用回滚撤消;第二是事务程序中设置的异常被触发,使用回滚恢复到数据初始状态。4事务的保存点(SAVEPOINT)事务的保存点主要用于回滚部分事务。因为在一个很大的卩L/SQL程序设计过程中,如果执行了很多的语句,使用回滚是非常占用时间和资源的。保存点可以在一个很大的程序中将一个事务分成很多语句块,将每一块设置为一个保存点,一旦程序发生错误,就会回滚到最近的保存点。在不可能发生错误的情况下,保存点很有用。在很少出现错误的情况下使用保存点回滚部分事务,比让每个事务在更新之前测试更新的有效性更为有效。更新和回滚操作代价很大,...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?