oracle连接数如何自动自动释放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle连接数如何自动自动释放相关的知识,希望对你有一定的参考价值。

参考技术A Oracle会根据连接的session来判断,是否释放。 参考技术B 你可以设置profile idle_time 来限定 空闲session的登录时间本回答被提问者和网友采纳 参考技术C oracle 资源管理器设置idle_time

数据库连接池

数据库连接池

Connection 创建该连接耗资源

 

用来提高性能

 

在连接池创建的时候就创建好一些连接放在里面,放在池里面,每次有请求上来,直接从数据连接池里面直接去获取连接

最大连接数

最小连接数

最大空闲连接数

最小空闲连接数

等待超时

 

C3p0  会自动释放连接数

Dbcp  不会自动释放连接

 

连接池创建的时候,创建一定数据的连接放到连接池里面,每次请求直接从连接池里面获取,如果连接池的数量还没有达到最大的连接数,如果连接池中没有可用的连接,创建一个新的连接,如果连接池中的数量已经达到了最大连接,该请求处于等待状态,等待连接被换回来 当数据库连接池中的空闲连接大于最小连接数且空闲时间超过了设置的时间则系统会回收掉最小连接数以外的连接 

C3p0 连接

<!-- c3p0连接池 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
<!-- 使用c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driverClassName}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
   <!--   连接池中最小的连接数据  连接池中一定要保证有5个连接  默认是3个-->
    <property name="minPoolSize" value="5"/>
   <!--   连接池中最大的连接数  默认是15个-->
    <property name="maxPoolSize" value="20"/>
  <!--    最大的空闲时间  单位是秒 0表示永不过期  这里的空闲时间指的是连接被放回连接池之后处于空闲状态的时间,只能释放最小连接池中数量以上的连接-->
    <property name="maxIdleTime" value="100"/>
    <!--  初始化连接数量  默认情况是3 初始化的数量是minPoolSize到maxPoolSize的范围-->
    <property name="initialPoolSize" value="6"/>
</bean> 

 

Dbcp连接池

<!-- dbcp连接池 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.1.1</version>
        </dependency>
<!-- 使用dbcp连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <!--连接池创建的时候 初始化 6个连接 默认是0个  -->
    <property name="initialSize" value="6"/>
    <!--连接池中最大的连接数  默认是8个  如果是负数表示没有限制 -->
    <property name="maxTotal" value="20"/>
   <!--最大的空闲数量 负数表示永不过期  默认是8个-->
    <property name="maxIdle" value="15"/>
    <!--最小的空闲数量 负数表示永不过期  默认是0个-->
    <property name="minIdle" value="8"/>
    <!--等待时间,当没有连接可用的时候处于等待的时间,超出时间抛出异常   默认情况等待无穷,负数也表示无穷-->
    <property name="maxWaitMillis" value="10000"/>
</bean>

 druid连接池配置

 

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>1.1.2</version>
</dependency>

 

 

 

 

 

<!-- 阿里 druid数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="driverClassName" value="${driverClassName}" />
        <property name="filters" value="${filters}" />
        <!-- 最大并发连接数 -->
        <property name="maxActive" value="${maxActive}" />
        <!-- 初始化连接数量 -->
        <property name="initialSize" value="${initialSize}" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${maxWait}" />
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="${minIdle}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
        <property name="validationQuery" value="${validationQuery}" />
        <property name="testWhileIdle" value="${testWhileIdle}" />
        <property name="testOnBorrow" value="${testOnBorrow}" />
        <property name="testOnReturn" value="${testOnReturn}" />
        <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" />
        <!-- 打开removeAbandoned功能 -->
        <property name="removeAbandoned" value="${removeAbandoned}" />
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="${logAbandoned}" />
    </bean>

 

 

 

 

web.xml

<filter>
        <filter-name>DruidWebStatFilter</filter-name>
        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
        <init-param>
            <param-name>exclusions</param-name>
            <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>DruidWebStatFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>

 

 https://github.com/alibaba/druid/wiki/首页     具体查看网站

 

以上是关于oracle连接数如何自动自动释放的主要内容,如果未能解决你的问题,请参考以下文章

请教oracle如何限制这个用户的连接数

如何查看oracle当前连接数,会话数

linux.oracle释放链接数

Oracle连接数过多释放机制

oracle如何查询当前连接用户的详细信息

连接中断后如何自动重新连接Oracle连接池?