网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle数据库-PL/SQL整理(2).
.Oracle 数据库 10g 企业版数据表.
.oracle全球管理与新技术大会上海.
.为什么在mc文件里面定义的FEATUR.
.在ORalce 中,怎么判断两个时间段.
.提高ORACLE数据库的查询统计速度.
.Oracle最大可用性体系结构.
.研究生管理信息系统的开发流程.
.Oracle中的Instance实例和数据库.
.Daemon是怎样练成的.
.在Oracle9i中建立SPFILE文件.
.教你如何使用 J2ME 实现移动支付.
.自己整理的OCI文档,抛砖引玉.
.Linux 指令大全(2).
.性检查的简单快捷方法(利用Post方.
.理解和使用Oracle 8i分析工具-L.
.Oracle 游标使用大全.
.数据文件internal的内部结构分析.
.细说容灾备份的等级和技术.
.全面解析Oracle developer的异常.

Oracle笔记-自治事务

发表日期:2008-2-9


  第 15 章 自治事务   DECLARE   PRAGMA AUTONOMOUS_TRANSACTION;   15.1 为何使用自治事务   无法回滚的审计   一般情况下利用触发器禁止某些对表的更新等操作时,若记录日志,则触发器最后抛出异常时会造成日志回滚。利用自治事务可防止此点。   避免变异表   即在触发器中操作触发此触发器的表   在触发器中使用DDL   写数据库   对数据库有写操作(INSERT、UPDATE、DELETE、CREATE、ALTER、COMMIT)的存储过程或函数是无法简单的用SQL来调用的,此时可以将其设为自治事务,从而避免ORA-14552(无法在一个查询或DML中执行DDL、COMMIT、ROLLBACK)、ORA- 14551(无法在一个查询中执行DML操作)等错误。需要注重的是函数必须有返回值,但仅有IN参数(不能有OUT或IN/OUT参数)。   开发更模块化的代码   在大型开发中,自治事务可以将代码更加模块化,失败或成功时不会影响调用者的其它操作,代价是调用者失去了对此模块的控制,并且模块内部无法引用调用者未提交的数据。   15.2 如何工作   事务控制   DECLARE整个块都是属于父事务的,自治事务从离PRAGMA后的第一个BEGIN开始,只要此BEGIN块仍在作用域,则都属于自治事务。例如在 DECLARE模块中声明一个写数据库的函数,则此函数虽然在自治事务所在存储过程执行,但其属于父事务;而自治事务中调用的任何函数和存储过程、激发的任何触发器等均为此自治事务的一部分。   自治事务可以嵌套,嵌套深度等只受INIT.ORA参数TRANSACTIONS(同时并发的事务数,缺省为SESSIONS的1.1倍)制约。   作用域   1.      包中的变量   自治事务可看到并修改父事务的变量,父事务也会察觉到这一改变,且不存在回滚问题。   2.      会话设置/参数   自治事务与父事务共享同一个会话环境,通过ALTER SESSION作的修改对整个会话均有效。但SET TRANSACTION是事务级的,仅对提起修改的事务有效。   3.      数据库修改   父事务已提交的修改对自治事务可见,未提交的对自治事务不可见,自治事务的修改对父事务是否可见取决于隔离级别(Isolation Level)。   对于游标,取决于其打开的位置,若其在父事务中打开,则之前父事务未提交的修改对其是有效的,在自治事务中这些修改也可见;而在自治事务中打开,则父事务未提交的修改不可见。   若使用缺省的READ COMMITTED隔离级别,则自治事务的修改对父事务可见;若改用SERIALIZABLE,则不可见。   4.      锁   父事务与自治事务是完全不同的事务,因此无法共享锁等。   结束一个自治事务   必须提交一个COMMIT、ROLLBACK或执行DDL.   保存点   无法在自治事务中回滚到父事务中的一个保存点,只能在内部使用保存点。   15.3 最后说明   不支持分布式事务   截至8.1.7在自治事务中不支持分布式事务   仅可用PL/SQL   全部事务回滚   若自治事务出错,则全部回滚,即便父事务有异常处理模块。   事务级临时表   每个会话仅一个事务可访问事务级临时表(多个会话中的事务可并发操作)。   变异表   15.4 可能碰到的错误   ORA-06519 – 检查到活动自治事务,回滚——退出自治事务时没有提交、回滚或DDL操作   ORA-14450 – 试图访问正在使用的事务级临时表   ORA-00060 – 等待资源时检查到死锁
上一篇:对rman命令行为的操作简单分析 人气:577
下一篇:9i新特性之——在线表格重定义研究5 人气:493
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐