`
InnocentBoy
  • 浏览: 21670 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring 声明式事务管理与oracle的inactive会话。

阅读更多
在开发环境中oracle(系统用户下)总是有30个左右的inaction连接,但是这些连接都没有执sql语句,就是在oracle客户端中查看这些会话,都是该会话没有执行任何SQL语句。探讨一下这些连接是不是由于程序中没有关闭连接造成的。我用的是spring的声明式事务管理,
<jee:jndi-lookup jndi-name="jdbc/abcdexxx" id="dataSource"
		lookup-on-startup="true">
	</jee:jndi-lookup>
	<!-- Transaction manager for a single JDBC DataSource -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 管理事务操作 -->
	<aop:config>
		<aop:pointcut id="servicePointcut"
			expression="execution(* abcdexxx.service.*.*(..))" />
		<aop:pointcut id="servicePointcut2"
			expression="execution(* abcdexxx.service.*.*.*(..))" />
		<aop:pointcut id="workflowJDBCStore"
			expression="execution(* abcdexxx.common.workflow.jdbc.*.*(..))" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="servicePointcut" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="servicePointcut2" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="workflowJDBCStore" />
	</aop:config>
	<!-- 事务控制 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="insert*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="remove*" propagation="REQUIRED" />
			<tx:method name="get*" read-only="true" />
		</tx:attributes>
	</tx:advice><bean id="jdbcTemplate"
		class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<bean id="dao" abstract="true">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>

	<!-- 配置本地LobHandle(Oracle) -->
	<bean id="nativeJdbcExtractor"
		class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"
		lazy-init="true" />
	<bean id="oracleLobHandler"
		class="org.springframework.jdbc.support.lob.OracleLobHandler"
		lazy-init="true">
		<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor" />
	</bean>
,dao用的是JdbcTemplate。
分享到:
评论
2 楼 pouyang 2009-12-21  
我现在也有这个疑问,

spring 控制事务到 Service
但是我调试到进Service中的方法中去
这个时候用 plsql查看事务,却没有事务存在

很是疑问
1 楼 InnocentBoy 2009-03-27  
如果是没有关闭的连接,应该有执行的sql语句的吧!可是这些语句都是没有sql语句的。想来想去是不是还有一种原因就是不是因为我们开发人员debug的时候没有等程序走完,就停止了服务器的原因。

相关推荐

    根据oracle数据库sid及serial#查找操作系统sid号

    在Oracle数据库管理中,了解如何通过特定的会话标识(SID)以及序列号(Serial#)来查询与该会话关联的操作系统进程ID(PID)是一项重要的技能。这对于诊断性能问题、追踪异常行为或进行故障排除时特别有用。下面将...

    oraclev$sessionv$session_wait用途详解

    在Oracle数据库管理与优化的过程中,`v$session`与`v$session_wait`视图扮演着至关重要的角色,它们提供了关于当前活动会话及其等待事件的详细信息,这对于诊断性能问题、理解数据库行为以及进行有效的资源管理至关...

    常用oracle动态性能视图

    V$SESSION 视图是 Oracle 提供的核心性能监视视图之一,它记录了所有与数据库实例建立连接的会话(session)信息,包括用户会话和后台进程,如 DBWR(数据库写进程)、LGWR(日志写进程)和归档进程等。通过 V$...

    oracle重做日志文件管理.pptx

    Oracle重做日志文件管理 Oracle重做日志文件管理是Oracle数据库管理的重要组成部分。重做日志文件记录了数据库的所有操作,以便在出现故障时恢复数据库。 重做日志文件的作用 重做日志文件的主要作用是记录数据库...

    ORACLE数据库的日志文件分析.pdf

    日志文件是ORACLE数据库的核心组件之一,用于记录数据库的所有操作,包括事务、数据修改、回滚等。日志文件分析是ORACLE数据库管理员的基本技能之一,通过对日志文件的分析,可以快速定位数据库出现的问题,提高...

    ORACLE分区

    ### Oracle分区的类型与应用实例 Oracle提供了多种类型的分区策略,每种策略都有其特定的应用场景: #### 1. 范围分区(Range Partitioning) 范围分区是基于表中某一列的值的范围来分割数据。适用于具有自然排序...

    Oracle中死事务的检查语句

    在Oracle数据库管理中,事务是数据库操作的基本单元,它确保了一组操作的原子性和一致性。当一个事务因为异常或其他原因无法完成,它就会变成死事务。死事务可能会占用数据库资源,影响系统的性能和稳定性。本篇文章...

    oracle归档日志笔记

    ### Oracle归档日志知识点详解 ...以上内容详细介绍了Oracle数据库中在线重做日志的基础概念、特点、管理方法以及日志切换与检查点的相关操作。了解这些知识对于维护Oracle数据库的稳定性和安全性至关重要。

    Oracle体系结构详解

    ### Oracle体系结构详解 Oracle体系结构是理解Oracle数据库工作原理的关键。...通过以上介绍可以看出,Oracle的体系结构非常复杂且功能强大,深入了解这些核心概念对于管理和优化Oracle数据库至关重要。

    怎样快速查出Oracle 数据库中的锁等待

    此外,简单地终止"inactive"状态的会话并不能从根本上解决问题,还可能误杀正常的等待会话。 #### 优化方案 针对上述问题,可以通过建立临时表的方式来优化锁等待的查询过程。具体步骤如下: 1. **创建临时表**:...

    oracle 常用命令

    在日常的数据库管理与开发工作中,Oracle数据库因其稳定性和高效性而被广泛使用。本文将基于给定的学习笔记内容,深入解析Oracle的一些基础且实用的命令,帮助读者更好地理解和掌握这些技能。 #### 1. 查看会话信息...

    GPRS会话管理信令流程

    GPRS(General Packet Radio Service)会话管理信令流程是移动通信系统中,GPRS移动站(MS)连接到外部数据网络的关键步骤。这个过程主要涉及PDP(Packet Data Protocol)上下文的控制与处理,使得MS能够进行数据...

    如何快速的杀掉Oracle的Session

    在Oracle数据库管理中,有时需要快速地结束特定的Session,以应对各种情况,例如系统性能下降、长时间运行的事务或应用程序错误。本文将探讨如何高效地“杀掉”Oracle的Session,以及这种方法背后的原因和注意事项。...

    oracle_v$session_v$session_wait用途详解

    Oracle 数据库提供了大量的动态性能视图(Dynamic Performance Views),其中 `V$SESSION` 和 `V$SESSION_WAIT` 是两个非常重要的视图,它们能够帮助数据库管理员深入了解当前会话的状态以及等待事件的信息。...

    oracle表分区详解

    Oracle数据库中的表分区是一种高级组织技术,它通过将表的大数据集划分为较小的、更易于管理的部分(即分区),从而提高查询性能和可管理性。表分区可以按照不同的策略进行划分,如范围分区、列表分区等。 #### 二...

    快速杀死oracle的session

    在Oracle数据库管理中,有时会遇到需要迅速终止某个或某些Session的情况。这通常发生在系统响应缓慢、需要紧急关闭特定进程时,或者是在执行`shutdown immediate`命令但发现由于某些Session的存在导致无法正常关闭...

    centos 静默安装oracle 111G

    综上所述,CentOS 静默安装Oracle 11g主要包括环境准备与配置、下载安装介质、准备静默安装脚本和响应文件以及监控安装进度与问题排查等几个关键步骤。遵循上述流程可以较为顺利地完成Oracle数据库的安装。

    oracle基础教程(超详细)

    ### Oracle基础教程知识点详解 ...以上内容涵盖了Oracle数据库的基础操作以及表的管理,适合Oracle初学者快速入门和实践。通过这些知识点的学习,你可以对Oracle有一个全面的认识,并能实际应用到工作中。

    Spring AOP 拦截器 Advisor

    在 Spring 中,AOP 主要用于日志记录、事务管理、安全性检查等跨功能需求。拦截器是 AOP 的一种实现方式,它在方法调用前、后或异常发生时执行自定义逻辑。 Advisor 在 Spring AOP 中扮演了中介的角色。它包含两...

Global site tag (gtag.js) - Google Analytics