数据库连接池

连接池是数据库连接的缓存,每当应用程序需要连接数据库时向连接池申请数据库连接,连接池负责具体数据库连接的创建和销毁。连接池中的数据库连接会缓存一段时间,后续的连接请求首先使用缓存中的数据库连接,如果缓存中有空闲的连接则直接使用,无空闲连接时就去新创建。这样可以提高因数据库连接创建而额外消耗的资源,从而提高整体性能。

.NET连接Oracle

.NET连接Oracle数据库的库主要有3种:

.NET自带的 .NET Framework Data Provider for Oracle

Devart提供的dotConnect for Oracle

Oracle提供的 Oracle Data Provider for .NET / ODP.NET

目前xAsset系统使用的是第3种,由Oracle提供的ODP.NET。ODP.NET提供了一套实现了ADO.NET相关接口的类,并提供了使用Oracle数据库一些高级功能的接口,比如RAC,XML DB,批量插入等。相对于.NET自带的库性能上也提高不少。

ODP.NET现在是Oracle ODAC(Oracle Data Access Component)的一部分。使用前需要先安装ODAC组件,Oracle提供了xcopy的方式和可执行程序的方式供下载安装。具体安装方法见xAsset系统发布说明或官方文档。

ODP.NET的数据库连接字符串格式主要有以下几种:

使用TNS

该方式需要配置TNS,一般需要提供用户id和密码(集成认证方式可以省略用户id和密码)。具体的字符串格式如下:

Data Source=TORCL;User Id=myUsername;Password=myPassword;

不依赖tnsnames.ora的ODP.NET方式

该方式不需要配置TNS,以把配置在TNS里的连接字符串直接放到Data Source节点中的方式实现。连接字符串中直接提供了服务器地址,端口,实例等信息,具体格式如下:

Data Source=(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=MyHost) (PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));

User Id=myUsername;Password=myPassword;

使用EZ Connect的方式

使用EZ Connect方式也不需要进行特殊配置,但需要数据库服务中的sqlnet.ora启用该方式,添加NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)启用,具体连接字符串格式如下:

Data [email protected]//instancename;

ODP.NET的连接池及相关功能

ODP.NET提供了连接池的功能。当然我们可以选择使用或不使用,是否启用连接池功能由数据库连接字符串决定。连接参数提供了Pooling这个参数,如果值为true则启用连接池,否则不启用,不提供该参数时默认是启用连接池的。

数据库连接参数中除了上面提到的标准参数Data Source,User Id,Password外,与连接池相关的参数主要有几个:Connection Lifetime, Connection Timeout, Decr Pool Size, Incr Pool Size, Max Pool Size, Min Pool Size, Pooling, Validate Connection。

当启用连接池时,取得一个数据库连接的过程大致如下:

l  如果连接池不存在(比如应用程序刚启动第一次访问数据库),则ODP.NET创建连接池并按参数“Min Pool Size”设置的值(默认1)初始化数据库连接。这个值指定了连接池中的最小连接数量,无论如何连接池中至少有该值设定的数据库连接存在。直到连接池销毁。

l  如果连接池存在,则检查是否有可用连接。

u  如果有可用连接,连接就从池中取出返回给应用程序。

n  如果启用了“Validate Connection”,则连接池会去数据库服务器验证当然连接是否有效。

u  如果没有可用连接,连接池会检查当前池中的连接数是否已达到指定的上限“Max Pool Size”(默认100)。

n  如果已经达到最大上限,则请求会等待一段“Connection Timeout”(默认15秒)指定的时间,检查是否这段时间内有连接返回到池中。

如果有连接返回到池中,则直接取该连接返回给请求的应用程序。

如果指定时间内仍没有连接可用,则抛出“Connection request timed out”异常。

n  如果还没达到上限,则连接池会主动创建“Incr Pool Size”(默认5)指定的值的连接,并返回其中一个给请求的应用程序。

当应用程序从数据库取得数据并调用Close()/Dispose()时,连接池检查连接的生命同期是否超过了“Connection Lifetime”(默认0,不检查)。

如果连接的生命周期超过了定义的值,则该连接会被真正关闭。这个关闭,指应用程序所在连接池到数据库服务器的物理连接关闭。

连接只有返回到池中时才会做该检查,如果在使用中不会检查。

当然如果连接真正关闭后池中的连接数量会小于“Min Pool Size”指定的值时,连接也不会关闭。

连接池每隔3分钟会关闭池中没有使用的连接,每次关闭的数量由“Decr Pool Size”设定的值(默认1)指定。

原文:http://www.cnblogs.com/jmax/p/4238676.html

net oracle连接池配置,Oracle ODP.NET连接池相关推荐

  1. 电脑显示系统无法自动配置网络连接服务器,win10系统本地连接IP配置出现故障无法连接网络如何解决-win10 网络...

    连接网络的时候,出现故障无法上网.经诊断后,Win10系统弹出提示"本地连接没有有效的IP配置".这则说明网络连接故障是因为本地连接没有有效的IP配置.不同的网络环境下,有些网络故 ...

  2. 连接池配置oracle aix,一次AIX系统swap使用过高的故障解决过程

    今天早上回到办公室没多久就接到了新炬过来的电话,说我们的数据库服务器swap使用已经过了告警基准线,让我去看看应用是否还运行正常.于是赶紧登陆服务器查了一下swap的活动情况: [cramer@zhz ...

  3. 配置oracle网络连接命令,配置oracle网络环境

    向数据库注册实例的方法有静态注册和动态注册两种.对于静态注册来说,我们可以将一列硬编码在listener.ora文件中.动态注册意味着实例在启动时要定位侦听器并注册到侦听器中. 动态注册是向侦听器注册 ...

  4. websphere配置oracle数据源,Websphere - 配置Oracle数据源

    Websphere 6.0下Oracle数据源配置 一.配置Oracle数据库 打开Oracle Enterprise Manager Console,右键点击数据库FLOW-〉查看/编辑详细资料-〉 ...

  5. 系统dsn oracle,linux平台配置oracle odbc dsn的方法.docx

    linux平台配置oracle odbc dsn的方法.docx LINUX平台配置ORACLEODBCDSN的方法1DSN配置方法ORACLE11编辑配置文件一.OSRHEL5X86(ORACLED ...

  6. oracle运行环境配置,oracle 环境配置开机自启动

    环境:centos 6.5 + oracle 11g 自启动之前问题 虚拟机里的oracle环境,每次重启完系统,用plsql developer连接,先是报错: 无TNS监听程序 解决方法是切换到系 ...

  7. oracle rac war配置,Oracle RAC安装配置流程

    系统部分 1.建立用户 2.设定IP 3.每个节点的IP解析 4.SSH的配置 为用户等效性配置SSH(在所有节点上执行) 在安装Oracle RAC 10g期间,OUI需要把文件复制到集群中的其他主 ...

  8. oracle 数据库基础配置,Oracle数据库网络服务配置基础、SQL编程详解-Oracle

    Oracle数据库是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.Oracle数据库的主要内容包括:表空间.用户权限.四种约束等基础概念,DDL ...

  9. oracle开启ssl配置,oracle SSL 配置

    百度CDN 网站SSL 配置 百度CDN SSL配置步骤 一般从SSL提供商购买到的证书是CRT二进制格式的. 1. 将 CRT 导入到IIS中, 然后从IIS中导出为PFX格式 2. 下载opens ...

最新文章

  1. 解题报告:luogu P2341 受欢迎的牛(Tarjan算法,强连通分量判定,缩点,模板)
  2. ubuntu nohup php,Ubuntu安装PhpStorm并设置快速启动phpstorm
  3. 抽象方法可以有方法体_抽象类和模板方法设计模式
  4. (计算机组成原理)第一章计算机系统概述-第四节:计算机的性能指标
  5. MSP430学习笔记2---两个LED同时亮灭和顺闪
  6. TensorFlow官方文档术语表
  7. 基于LD3320的非特定人语音识别方案
  8. python函数 模块先加载到内存后执行_Python从内存中使用编译后的模块
  9. R可能让您惊喜的10件事
  10. 新建Office文件丨默认模板文件
  11. 数据结构中数据元素与数据项的区别
  12. linux 极路由救砖,极路由刷机教程 极路由救砖方法图文详解
  13. ocelot和nginx比较_针对 Ocelot 网关的性能测试
  14. [cv]郑哲东 Deep-ReID——Learn pedestrian representations from
  15. mac mini u盘安装系统_用u盘安装win7系统安装步骤
  16. 腾讯的核心竞争力是什么!
  17. 数学之路(3)-数据分析(4)
  18. 利用Python访问Mysql数据库
  19. GPU CUDA Python笔记
  20. 有道云笔记中markdown插入本地图片(绝对路径)后无法显示图片问题

热门文章

  1. Apollo配置中心-手把手教你搭建Apollo配置中心运行环境
  2. 【STM32】看门狗模块
  3. C++时间库 chrono
  4. Python flask实战订餐系统微信小程序-19后台管理员模块数据库创建
  5. C++的异常机制导致的crash问题
  6. XlistView多条目加载简单实现2
  7. Access+VBA: ADODB数据库访问(一)
  8. Sicily1176
  9. assimp编译及使用(1)
  10. nil和NULL 的区别