首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次大事务回滚导致的数据库奇慢

这个专题讲一些日常运维的异常处理 以前的请查看: http://www.zhaibibei.cn/oracle/1.1/ 今天讲一次大事务回滚导致的数据库奇慢 1....wait-for-a-undo-record-or-wait-for-stopper-event-to-be-increased-database-messages/ 从上面我们得知当Oracle做大事物回滚时...smon进程会作为coordinator 启动并行恢复 这时就可能会导致数据库DML语句无法继续 2.5 查询undo表空间使用率 SELECT round(((SELECT (NVL(SUM(bytes...fast_start_parallel_rollback = false scope=spfile; 如果不使用spfile,可能会导致大量enq: PE - contention等待 重启后等待回滚完成可将值修改回来...4.关于FAST_START_PARALLEL_ROLLBACK 该参数用于指定回滚的并行度,当使用fast-start parallel rollback时 smon充当coordinator角色并开启相应的多个

1.7K10

Spring的声明式事务管理

它只是返回一个值 0 作为交易订单的键,而不会更改数据库。这是事务处理的主要陷阱之一:基于 ORM 的框架需要一个事务来触发对象缓存与数据库之间的同步。...这意味着事务会在不必要的情况下启动。根据使用的数据库,这会引起不必要的共享锁,可能会使数据库中出现死锁的情况。此外,启动和停止事务将消耗不必要的处理时间和资源。...出于验证错误、资金不足或其他原因,不管交易是否失败,这条信息都需要被持久化。如果没有对审计方法使用 REQUIRES_NEW 属性,审计记录就会连同尝试执行的交易一起回滚。...通常大多数开发人员指定 Exception.class 作为值,表示该方法中的所有异常应该强制回滚。 在回滚事务这一点上,EJB 的工作方式与 Spring Framework 稍微有点不同。...EJB 3.0 规范中的 @TransactionAttribute 注释不包含指定回滚行为的指令。

97050
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java中事务总结详解

    一般说来,在单个JDBC 连接连接的情况下可以选择JDBC事务,在跨多个连接或者数据库情况下,需要选择使用JTA事务,如果用到了EJB,则可以考虑使用EJB容器事务。...Rollback表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态。 自动提交事务:每条单独的语句都是一个事务。...隐式事务:当连接以隐式事务模式进行操作时,sql server数据库引擎实例将在提交或回滚当前事务后自动启动新事务。无须描述事物的开始,只需提交或回滚每个事务。...在第一个事务被提交或回滚之后,下次当连接执行以上任何语句时,数据库引擎实例都将自动启动一个新事务。该实例将不断地生成隐性事务链,直到隐性事务模式关闭为止。...持续性(Durable) 事务处理结束,其效果在数据库中持久化。

    4K10

    重点来了:事务一致性的深入研究&EJB的全生命周期 | 从开发角度看应用架构5

    Passivated:由于有状态的EJB,具有在多个客户端调用中持久化的对象状态,因此应用程序服务器可能会将EJB钝化(停用)到辅助存储以优化内存消耗。...三、隐式和显式事务 典型的Java EE企业应用程序,通常会访问、操作一个或多个持久数据存储中的数据,这些数据通常在关系数据库里(RDBMS)。...此API为应用程序中的提交和回滚事务提供了一个方便的高级界面。例如,如果Java持久性API(JPA)与JTA一起使用,则开发人员不必在应用程序源码中编写跟踪SQL提交和回滚语句。...3注入UserTransaction对象。 这用于在此EJB中开始,提交和回滚事务。 4Begin开始交易。 5如果所有方法都没有任何错误地成功执行,请提交事务。...@Resource告诉容器分配一个新的事务对象并在运行时将其注入到这个EJB中。 ? 添加以下代码以提交事务: ? 添加以下代码以在发生异常时回滚事务: ? 接下来,启动EAP: ?

    87740

    有关Spring事务,看这一篇就足够了

    持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。...,当前事务回滚到某一个点,从而避免所有的嵌套事务都回滚,即各自回滚各自的,如果子事务没有把异常吃掉,基本还是会引起全部回滚的。...隔离级别 含义 ISOLATION_DEFAULT 使用后端数据库默认的隔离级别 ISOLATION_READ_UNCOMMITTED 允许读取尚未提交的更改。可能导致脏读、幻读或不可重复读。...假设事务的运行时间变得格外的长,由于事务可能涉及对数据库的锁定,所以长时间运行的事务会不必要地占用数据库资源。这时就可以声明一个事务在特定秒数后自动回滚,不必等它自己结束。...回滚规则 在默认设置下,事务只在出现运行时异常(runtime exception)时回滚,而在出现受检查异常(checked exception)时不回滚(这一行为和EJB中的回滚行为是一致的)。

    74130

    Spring的一些基本概念(面试备用)

    在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。 Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。...例如,Spring能使用 AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。...切面对关注点进行模块化,例如横切多个类型和对象的事务管理 Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP 提供声明式企业服务,特别是为了替代EJB声明式服务。...的事务管理: 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之 前的所有操作。...省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象. void add(){   transactionTemplate.execute( new TransactionCallback(

    30220

    可能是最漂亮的 Spring 事务管理详解

    事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致; 隔离性: 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的; 持久性: 一个事务被提交之后...它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。...另外,外部事务的回滚也会导致嵌套子事务的回滚。...在 TransactionDefinition 中以 boolean 类型来表示该事务是否只读。 (5) 回滚规则(定义事务回滚规则) 这些规则定义了哪些异常会导致事务回滚而哪些不会。...默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚(这一行为与EJB的回滚行为是一致的)。 但是你可以声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚。

    71720

    关于Java持久化相关的资源汇集:Java Persistence API

    通常来说,这是一件好事,配置安全性、远程处理和事务的粒度应该比持久化数据的粒度粗很多。JPA着重关注持久化数据,以及与EJB的其他部分和Java EE规范集成起来照管其他企业关注点。...问题:在EJB3中,更新实体bean的单个字段/列会导致更新该DB行中的所有字段/列,还是仅更新该DB行中更改的列? 回答:该行为取决于实现。OpenJPA将只更新被修改字段对应的列。...问题:EJB3.0如何替换EJB2.0中的ejbLoad()、ejbStore()之类的回调方法? 回答:JPA规范提供了一些可以随意(单个)实现的 回调方法。...回答:JPA规范仅解决给定EntityManager相关对象的事务工作集的行为。它称之为“持久化上下文”。从某些方面来讲,这是一个缓存,但通常是为了保持事务一致性,而不是为了性能的原因。...问题:我们正在构建一个大型应用程序,其中有350个对象坚持JPA规范。当我们使用Kodo 4.1持久化这些对象时,它的SELECT查询最终将每个查询的大多数表连接起来,这使得Kodo相当慢。

    2.5K30

    JavaEE - JPA(2):EJB中的事务管理

    前言 对于任何一个需要持久化数据的应用而言,事务划分(Transaction Demarcation)的规划都是非常重要的一环。...但是,如果程序在执行的过程中出现了开发人员可以觉察的异常,比如某些值不符合逻辑,那么就可以通过调用EJBContext对象(这个对象一般通过依赖注入的方式来得到)上的setRollbackOnly()方法来标注这个事务需要被回滚...所谓标注,表示调用这个方法并不会立即导致事务的回滚,而是在将来某个合适的时候再来由容器来执行回滚操作,比如在方法结束的时候,容器会来检查是否需要回滚。...不像CMT那样通常以业务方法的开始和结束作为事务的起点和终点。如果只开始了一个事务,而忘记关闭它,那么会导致异常的发生,同时该事务也会被容器回滚。 而且,BMT类型的事务无法使用从外部进入的事务。...setTransactionTimeout(int seconds) - 规定一个执行时限,如果事务在规定的时间内还没有完成,就会导致事务的回滚。

    93110

    应用对持久数据的管理 | 从开发角度看应用架构7

    随着数据在应用程序和数据库之间由于写入操作而移动,它可能会导致对象模型和关系模型之间的差异。 这种差异称为 阻抗失协(impedance mismatch)。...:访问数据表的实例。 三、实体 一个entity是一个可持久化的、轻量级的域对象。 entity class映射到关系数据库中的表。 entity class的每个实例都有一个主键字段。...在EJB中创建实体管理器 为持久单元创建一个EntityManagerFactory对象,并且该对象用于获取EntityManager的一个实例 @Statelesspublic class ItemService...如果任何一个操作在事务中失败,那么整个事务将在事务开始之前回滚到其原始状态。如果所有操作都能够执行,那么交易将被提交并且不需要回滚。在使用持久性时,事务确保数据库的更改不会由于操作失败而部分完成。...JTA不是从实体管理器中引用EntityTransaction,而是使用UserTransaction类,它允许您独立于资源或资源启动,提交或回滚事务。

    2.7K40

    Spring 事务管理

    持久性(Durability): 事务正确提交后,其结果将永久保存在数据库中。 Java 事务 1. Java 事务的产生 程序操作数据库的需要。...容器事务:主要指的是 J2EE 应用服务器提供的事务管理,局限于 EJB 应用使用。 ---- 二、Spring 事务核心接口 ? Spring 事务管理器 1....事务超时: 事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完毕,那么就会自动回滚,而不是一直等待其结束。 4. 设计事务时注意点: 为了使应用程序很好地运行,事务不能运行太长的时间。...因为事务可能涉及对后端数据库的锁定,所以长时间的事务会不必要的占用数据库资源。 5. 事务回滚: 默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚。 6....自定义回滚策略: 声明事务在遇到的特定的检查型异常时像遇到运行期异常那样回滚; 声明事务遇到特定的异常不回滚,即使这些异常是运行期异常。 Spring 事务状态 1.

    84340

    Spring声明式事务、编程式事务一文打尽

    你可以在任何类中使用Spring框架声明式事务,而不是像EJB一样只能指定某些类。 Spring框架提供了声明式回滚规则,这是和EJB等同的特性。编程式、声明式的回滚规则都提供了。...所以,尽管你可以在TransactionStatus对象中调用setRollbackOnly()方法去回滚当前的事务,大都数情况下你可以指定一个规则,即可以自定义异常必须导致事务回滚。...尽管EJB容器默认行为是在事务发生系统异常(通常是运行时异常)时自动回滚,EJB CMT并不会在出现应用异常时自动回滚。但是Spring声明式事务的默认行为是允许自定义异常变更回滚策略的。...在默认配置中,Spring框架事务基础机构代码标记事务回滚只会在运行时异常、非检查异常时回滚。RuntimeException(Error实例默认会导致事务回滚)。...然后,通过使用TransactionDefinition和TransactionStatus对象,你可以初始化事务、回滚、提交。

    1.1K00

    Java EE应用服务器的事务管理

    Durability 持久性是指一旦事务成功提交,它所写入的任何数据都不会丢失,即使出现硬件故障或数据库崩溃。改变系统持久状态的唯一方法是提交一个事务。...数据库一般都会使用WAL(write-ahead log)技术,在向持久化存储写入未提交的变更之前,先向日志中写入相应的事务日志记录,并确保事务日志记录在事务提交之前被持久化。...因此,快照隔离比可串行化的保证要弱。 分布式事务 随着计算机网络的发展,分布式计算变得越来越普遍。这导致了分布式事务处理的需求,即在多个独立的数据库或资源管理器上执行的事务。...可以使用 setRollbackOnly() 调用告诉Transaction对象仅允许回滚。...事务传播根据目标对象 POA 中的策略自动进行。 Direct/Explicit 模式,事务使用 TransactionFactory 创建,并使用 Control 对象进行提交或回滚。

    35610

    高级教程-springData-JPA第一天【悟空教程】

    JPA 通过 JDK 5.0 注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 2.3 JPA 的优势 1....高级特性 JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。...实体类作为普通 java 对象,只有在调用 EntityManager 将其持久化后才会变成持久化对象。EntityManager 对象在一组实体类与底层数据源之间进行 O/R 映射的管理。...我们可以通过调用 EntityManager 的方法完成获取事务,以及持久化数据库的操作 方法说明: getTransaction : 获取事务对象 persist : 保存操作 merge : 更新操作...JPQL 全称 Java Persistence Query Language 基于首次在 EJB2.0 中引入的 EJB 查询语言(EJB QL),Java 持久化查询语言(JPQL)是一种可移植的查询语言

    4.3K30

    经典笔试篇-EJB及Spring篇

    EJB 容器管理着EJB 的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作;三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean 类。...对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。...对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。...171、EJB 的事务是如何实现的?何时进行回滚;【中等难度】 答:是通过使用容器或Bean 自身管理事务的;当产生一个系统异常时容器就自动回滚事务。 172、EJB 容器提供的服务?...【中等难度】 答:框架:hibernate、spring、struts; Hibernate 主要用于数据持久化; Spring 的控制反转能起到解耦合的作用; Struts 主要用于流程控制。

    1.4K20

    Java面试之EJB & Spring

    EJB 容器管理着EJB 的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作;三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean 类。...对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。...对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。...10、EJB 的事务是如何实现的?何时进行回滚;【中等难度】 答:是通过使用容器或Bean 自身管理事务的;当产生一个系统异常时容器就自动回滚事务。 11、EJB 容器提供的服务?...【中等难度】 答:框架:hibernate、spring、struts; Hibernate 主要用于数据持久化; Spring 的控制反转能起到解耦合的作用; Struts 主要用于流程控制。

    49330

    【Hibernate教程】环境的搭建和配置教程

    2、编写与数据库表对应的POJO类,并创建对应的持久化对象映射文件xxx.hbm.xml. 3、编写Hibernate所需要的数据库配置文件,即Hibernate.cfg.xml。...5、调用方式有三种,将对象持久化到数据库。...Session可以理解为对Connection对象的一个包装。Session对象中提供了对数据库的crud操作。Session是一个线程不安全的对象。生命周期非常短暂,一般和事务一一对应。...包括了事务的开启,事务的提交,事务的回滚。 4、Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语句或者SQL语句两种表达方式。...三、名称解释 1、POJO(Plain Ordinary Java Object):简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。

    33330

    Spring详解--一篇文章让你弄懂spring事物管理

    ④、持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。...,如上图所示,Spring并不直接管理事务,通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器,也就是将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现...因为事务可能涉及对后端数据库的锁定,所以长时间的事务会不必要的占用数据库资源。事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完毕,那么就会自动回滚,而不是一直等待其结束。...五、回滚规则   事务五边形的最后一个方面是一组规则,这些规则定义了哪些异常会导致事务回滚而哪些不会。...默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚(这一行为与EJB的回滚行为是一致的) 。但是你可以声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚。

    50840
    领券