在oracle字符串出现次数下druid出现的各种问题,求助

druid简单教程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
druid简单教程
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩19页未读,继续阅读
你可能喜欢在Oracle下druid出现的各种问题,求助_百度知道
在Oracle下druid出现的各种问题,求助
提问者采纳
它们将对 Oracle VM Manager 的发现服务器过程不可见,可以很轻松地将可用服务器加入默认“unassigned”服务器池。否则,利用该特性。这些服务器必须已分配有 Oracle VM Manager 所在网络上的 IP 地址,然后可以在 Oracle VM Manager 中对其进行管理。Oracle VM Manager 有一个发现服务器特性主机系统作为资源发现配置 Oracle VM 的第一步是发现运行 Oracle VM Manager 的服务器所在同一网络上的现有主机系统
其他类似问题
为您推荐:
oracle的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁druid连接池配置
-------------
新增文件夹...
新增文件夹
(多个标签用逗号分隔)
阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好,Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给DataSource对象。 &基于纯Java代码使用:
package&demo.
import&java.io.InputS
import&java.sql.C
import&java.sql.SQLE
import&java.util.P
import&javax.sql.DataS
import&com.alibaba.druid.pool.DruidDataSourceF
public&class&DBUtil&{
private&static&DataSource&ds&=&
InputStream&in&=&DBUtil.class.getClassLoader()
&&&&&&&&&&&&&&&.getResourceAsStream("ds.properties");
&&&&&&&&&&&&Properties&props&=&new&Properties();
props.load(in);
ds&=&DruidDataSourceFactory.createDataSource(props);
}catch(Exception&ex){
ex.printStackTrace();
public&static&Connection&openConnection()&throws&SQLException{
return&ds.getConnection();
} &ds.properties内容: 
driverClassName&=&oracle.jdbc.driver.OracleDriver
url&=&jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username&=&******
password&=&******
initialSize&=&5
maxActive&=&10
minIdle&=&3
maxWait&=&60000
removeAbandoned&=&true
removeAbandonedTimeout&=&180
timeBetweenEvictionRunsMillis&=&60000
minEvictableIdleTimeMillis&=&300000
validationQuery&=&SELECT&1&FROM&DUAL
testWhileIdle&=&true&
testOnBorrow&=&false
testOnReturn&=&false
poolPreparedStatements&=&true
maxPoolPreparedStatementPerConnectionSize&=&50
filters&=&stat  基于Spring的配置: 
&bean&id="druidDataSource"&class="com.alibaba.druid.pool.DruidDataSource"
init-method="init"&destroy-method="close"&
&!--&数据库基本信息配置&--&
&property&name="driverClassName"&value="${oracle.driver}"&/&
&property&name="url"&value="${oracle.url}"&/&
&property&name="username"&value="${oracle.username}"&/&
&property&name="password"&value="${oracle.password}"&/&
&!--&初始化连接数量&--&
&property&name="initialSize"&value="${druid.initialSize}"&/&
&!--&最大并发连接数&--&
&property&name="maxActive"&value="${druid.maxActive}"&/&
&!--&最大空闲连接数&--&
&property&name="maxIdle"&value="${druid.maxIdle}"&/&
&!--&最小空闲连接数&--&
&property&name="minIdle"&value="${druid.minIdle}"&/&
&!--&配置获取连接等待超时的时间&--&
&property&name="maxWait"&value="${druid.maxWait}"&/&
&!--&超过时间限制是否回收&--&
&property&name="removeAbandoned"&value="${druid.removeAbandoned}"&/&
&!--&超过时间限制多长;&--&
&property&name="removeAbandonedTimeout"&value="${druid.removeAbandonedTimeout}"&/&
&!--&配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒&--&
&property&name="timeBetweenEvictionRunsMillis"&value="${druid.timeBetweenEvictionRunsMillis}"&/&
&!--&配置一个连接在池中最小生存的时间,单位是毫秒&--&
&property&name="minEvictableIdleTimeMillis"&value="${druid.minEvictableIdleTimeMillis}"&/&
&!--&用来检测连接是否有效的sql,要求是一个查询语句--&
&property&name="validationQuery"&value="${druid.validationQuery}"&/&
&!--&申请连接的时候检测&--&
&property&name="testWhileIdle"&value="${druid.testWhileIdle}"&/&
&!--&申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能&--&
&property&name="testOnBorrow"&value="${druid.testOnBorrow}"&/&
&!--&归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能&&--&
&property&name="testOnReturn"&value="${druid.testOnReturn}"&/&
&!--&打开PSCache,并且指定每个连接上PSCache的大小&--&
&property&name="poolPreparedStatements"&value="${druid.poolPreparedStatements}"&/&
&property&name="maxPoolPreparedStatementPerConnectionSize"&value="${druid.maxPoolPreparedStatementPerConnectionSize}"&/&
&!--属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:&&
监控统计用的filter:stat
日志用的filter:log4j
防御SQL注入的filter:wall&--&
&property&name="filters"&value="${druid.filters}"&/&
&/bean&  启用Web监控统计功能需要在Web应用的web.xml中加入以下内容: 
&&&&&&&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-mapping&
&&&&&&filter-name&DruidWebStatFilter&/filter-name&
&&&&&&url-pattern&/*&/url-pattern&
&/filter-mapping&
&&&&&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& &访问监控页面:http://ip:port/projectName/druid/index.html
相关资讯  — 
相关文档  — 
发布时间1: 10:21:08
同类热门经验
50091次浏览
35246次浏览
30909次浏览
28145次浏览
27559次浏览
27420次浏览
OPEN-OPEN, all rights reserved.15416人阅读
java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐印入了大家的眼帘。接下来本教程就说一下druid的简单使用。
&首先从&下载最新的jar包。如果想使用最新的源码编译,可以从&下载源码,然后使用maven命令行,或者导入到eclipse中进行编译。
和dbcp类似,druid的配置项如下
缺省值
配置这个属性的意义在于,如果存在多个数据源,监控的时候
可以通过名字来区分开来。如果没有配置,将会生成一个名字,
格式是:&DataSource-& + System.identityHashCode(this)
连接数据库的url,不同数据库不一样。例如:
mysql : jdbc:mysql://10.20.153.104:3306/druid2&
oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
连接数据库的用户名
连接数据库的密码。如果你不希望密码直接写在配置文件中,
可以使用ConfigFilter。详细看这里:
driverClassName
根据url自动识别
这一项可配可不配,如果不配置druid会根据url自动识别dbType,
然后选择相应的driverClassName
initialSize
初始化时建立物理连接的个数。初始化发生在显示调用init方法,
或者第一次getConnection时
最大连接池数量
已经不再使用,配置了也没效果
最小连接池数量
获取连接时最大等待时间,单位毫秒。配置了maxWait之后,
缺省启用公平锁,并发效率会有所下降,
如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedStatements
是否缓存preparedStatement,也就是PSCache。
PSCache对支持游标的数据库性能提升巨大,比如说oracle。
在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录,
该应该是支持PSCache。
maxOpenPreparedStatements
要启用PSCache,必须配置大于0,当大于0时,
poolPreparedStatements自动触发修改为true。
在Druid中,不会存在Oracle下PSCache占用内存过多的问题,
可以把这个数值配置大一些,比如说100
validationQuery
用来检测连接是否有效的sql,要求是一个查询语句。
如果validationQuery为null,testOnBorrow、testOnReturn、
testWhileIdle都不会其作用。
testOnBorrow
申请连接时执行validationQuery检测连接是否有效,
做了这个配置会降低性能。
testOnReturn
归还连接时执行validationQuery检测连接是否有效,
做了这个配置会降低性能
testWhileIdle
建议配置为true,不影响性能,并且保证安全性。
申请连接的时候检测,如果空闲时间大于
timeBetweenEvictionRunsMillis,
执行validationQuery检测连接是否有效。
timeBetweenEvictionRunsMillis
有两个含义:
1) Destroy线程会检测连接的间隔时间
&2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
numTestsPerEvictionRun
不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis
connectionInitSqls
物理连接初始化的时候执行的sql
exceptionSorter
根据dbType自动识别
当数据库抛出一些不可恢复的异常时,抛弃连接
属性类型是字符串,通过别名的方式配置扩展插件,
常用的插件有:
监控统计用的filter:stat&
日志用的filter:log4j
&防御sql注入的filter:wall
proxyFilters
类型是List&com.alibaba.druid.filter.Filter&,
如果同时配置了filters和proxyFilters,
是组合关系,并非替换关系
表1.1 配置属性
根据常用的配置属性,首先给出一个如下的配置文件,放置于src目录下。
配置文件1.1&
配置项中指定了各个参数后,在连接池内部是这么使用这些参数的。数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。
同时连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。有些数据库连接的时候有超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然,为了保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能。
2 代码编写
2.1 使用spring
首先给出spring配置文件
配置文件2.1
其中第一个bean中给出的配置文件/WEB-INF/classes/dbconfig.properties就是第1节中给出的配置文件。我这里还特地给出dbcp的spring配置项,目的就是将两者进行对比,方便大家进行迁移。这里没有使用JdbcTemplate,所以jdbc那个bean没有使用到。下面给出com.whyun.druid.model.TableOperator类的代码。
代码片段2.1
注意:在使用的时候,通过获取完Connection对象,在使用完之后,要将其close掉,这样其实是将用完的连接放入到连接池中,如果你不close的话,会造成连接泄露。
然后我们写一个servlet来测试他.
代码片段2.2
这里没有用到struts2或者springmvc,虽然大部分开发者用的是这两种框架。
2.2 不使用spring
类似于dbcp,druid也提供了原生态的支持。这里仅仅列出来了如何获取一个DataSource对象,实际使用中要将获取DataSource的过程封装到一个单体模式类中。先看下面这段代码:
代码片段2.3 手动读取配置文件初始化连接池
第37行中调用了类com.alibaba.druid.pool.DruidDataSourceFactory中createDataSource方法来初始化一个连接池。对比dbcp的使用方法,两者很相似。
下面给出一个多线程的测试程序。运行后可以比较druid和dbcp的性能差别。
代码片段2.4 连接池多线程测试程序
3.1 web监控
druid提供了sql语句查询时间等信息的监控功能。为了让数据库查询一直运行,下面特地写了一个ajax进行轮询。同时,还要保证在web.xml中配置如下信息
配置文件3.1 在web.xml中添加druid监控
同时将ajax代码提供如下
[javascript]&
代码片段3.1 ajax轮询
这时打开http://localhost/druid-web/druid/ 地址,会看到监控界面,点击其中的sql标签。
图3.1 监控界面查看sql查询时间
注意:在写配置文件1.1时,要保证filter配置项中含有stat属性,否则这个地方看不到sql语句的监控数据。
表格中各项含义如下
ExecuteCount
当前已执行次数
当前已执行时间
当前最大执行时间
当前运行的事务数量
当前执行出错的数目
当前更新或者删除操作中已经影响的行数
当前sql操作中已经读取的行数
当前sql正在运行的数目
Concurrent
当前sql最大并发执行数&
ExecHisto&
当前sql做execute操作的时间分布数组
分为0-1,1-10,10-100,100-1000,,个时间分布区域,单位为
ExecRsHisto&
当前sql做execute操作和resultSet
打开至关闭的时间总和分布数组
FetchRowHisto
当前sql查询时间分布数组
UpdateHisto&
当前sql更新、删除时间分布数组
表3.1 监控字段含义
老版本的druid的jar包中不支持通过web界面进行远程监控,从0.2.14开始可以通过配置jmx地址来获取远程运行druid的服务器的监控信息。具体配置方法如下:
配置文件3.2 远程监控web
这里连接的配置参数中多了一个jmxUrl,里面配置一个jmx连接地址,如果配置了这个init-param后,那么当前web监控界面监控的就不是本机的druid的使用情况,而是jmxUrl中指定的ip的远程机器的druid使用情况。jmx连接中也可以指定用户名、密码,在上面的servlet中添加两个init-param,其param-name分别为jmxUsername和jmxPassword,分别对应连接jmx的用户名和密码。对于jmx在服务器端的配置,可以参考3.2节中的介绍。
3.2 jconsole监控
同时druid提供了jconsole监控的功能,因为界面做的不是很好,所以官方中没有对其的相关介绍。如果是纯java程序的话,可以简单的使用jconsole,也可以使用3.1中提到的通过配置init-param来访问远程druid。下面依然使用的是刚才用的web项目来模拟druid所在的远程机器。
现在假设有两台机器,一台是运行druid的A机器,一台是要查看druid运行信息的B机器。
首先在这台远程机器A的catalina.bat(或者catalina.sh)中加入java的启动选项,放置于if &%OS%& == &Windows_NT& setlocal这句之后。
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=&9004& -Dcom.sun.management.jmxremote.authenticate=&false& -Dcom.sun.management.jmxremote.ssl=&false&
保存完之后,启动startup.bat(或者startup.sh)来运行tomcat(上面设置java启动项的配置,按理来说在eclipse中也能适用,但是笔者在其下没有试验成功)。然后在要查看监控信息的某台电脑B的命令行中运行如下命令
jconsole -pluginpath E:\kuaipan\workspace6\druid-web\WebRoot\WEB-INF\lib\druid-0.2.11.jar
这里的最后一个参数就是你的druid的jar包的路径。
图3.2 jconsole连接界面
在远程进程的输入框里面输入ip:端口号,然后点击连接(上面的配置中没有指定用户名、密码,所以这里不用填写)。打开的界面如下:
图3.3 jconsole 连接成功界面
可以看到和web监控界面类似的数据了。推荐直接使用web界面配置jmx地址方式来访问远程机器的druid使用情况,因为这种方式查看到的数据信息更全面些。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:110437次
积分:1334
积分:1334
排名:第19615名
原创:16篇
转载:77篇
(1)(1)(1)(3)(7)(2)(3)(12)(1)(6)(21)(30)(1)(1)(1)(2)

我要回帖

更多关于 oracle字符串出现次数 的文章

 

随机推荐