启动报错提示无法锁定文件,数据库连接druid

关于数据库连接池Druid使用说明,数据库连接druid

根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池。

Druid:druid-1.0.29

数据库 Mysql.5.6.17

替换目标:替换掉C3P0,用druid来替换

替换原因:

1、性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0
。hikariCP的高性能得益于最大限度的避免锁竞争。

2、druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。

3、综合性能,扩展性等方面,可考虑使用druid或者hikariCP连接池,比较方便对jdbc接口进行监控跟踪等。

4、可开启prepareStatement缓存,对性能会有大概20%的提升。

psCache是connection私有的,所以不存在线程竞争的问题,开启pscache不会存在竞争的性能损耗。

psCache的key为prepare执行的sql和catalog等,value对应的为prepareStatement对象。开启缓存主要是减少了解析sql的开销。

5、3p0历史悠久,代码及其复杂,不利于维护。并且存在deadlock的潜在风险。

6、Druid可以打印SQL,慢查询方面的日志

Druid 参数

配置参数 缺省值 游戏服设置的值 参数说明
initialSize 0 4 初始化连接数量
minIdle 0 4 最小空闲连接数
maxActive 8 8 最大并发连接数
maxWait -1L 60000 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,
缺省启用公平锁,并发效率会有所下降,
如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
timeBetweenEvictionRunsMillis 60000 60000 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
Destroy线程会检测连接的间隔时间
minEvictableIdleTimeMillis 1800000 1800000 配置一个连接在池中最小生存的时间,单位是毫秒
validationQuery null select 1 用来检测连接是否有效的sql,要求是一个查询语句
testOnBorrow FALSE FALSE 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn FALSE FALSE 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testWhileIdle TRUE TRUE 建议配置为true,不影响性能,并且保证安全性。 申请连接的时候检测,如果
空闲时间大于 timeBetweenEvictionRunsMillis, 执行validationQuery检测连接是否有效。
poolPreparedStatements FALSE TRUE false 是否缓存preparedStatement,也就是PSCache。
PSCache对支持游标的数据库性能提升巨大,比如说oracle。
在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
5.5及以上版本有PSCache,建议开启。
maxPoolPreparedStatementPerConnectionSize 10 100 要启用PSCache,必须配置大于0,当大于0时,
poolPreparedStatements自动触发修改为true。
单个connnection独享一个statement cache,也就是说maxOpenPreparedStatements是针对单个connection链接的

运行原理:

数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。
同时连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后仍然没有使用,则被物理性的关闭掉。有些数据库连接的时候有超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然,为了保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能。

如果要进行SQL监控,可以加入以下代码:

Log4j2Filter log4j2 = new Log4j2Filter(); 
log4j2.setResultSetLogEnabled(false); 
log4j2.setStatementSqlPrettyFormat(false); 
log4j2.setStatementExecutableSqlLogEnable(true); 

log4j2.setDataSourceLogEnabled(false); 
log4j2.setConnectionLogEnabled(false); 
log4j2.setStatementLogEnabled(false); 
log4j2.setResultSetLogEnabled(false); 
ret.setProxyFilters(Arrays.asList(log4j2)); 

闲置检测,创建连接,废弃连接清理由这三线程管理

Daemon Thread [Abandoned connection cleanup thread] 
Daemon Thread [Druid-ConnectionPool-Create-1184124073] 
Daemon Thread [Druid-ConnectionPool-Destroy-1184124073] 

总结

以上就是本文关于数据库连接池Druid使用说明的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:MySQL
prepare原理详解等及其他相关专题,有什么问题可以随时留言,小编会及时回复大家的。

根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池。…

> Jun 6 18:21:19 eccdemo sm-notify[3707]: Unable to notify bogon,
giving up> Jun 6 18:39:18 eccdemo rpc.statd[3705]: No canonical
hostname found for 192.168.0.200> Jun 6 18:39:18 eccdemo
rpc.statd[3705]: STAT_FAIL to eccdemo for SM_MON of
192.168.0.200> Jun 6 18:39:18 eccdemo kernel: lockd: cannot monitor
192.168.0.200> Jun 6 18:39:33 eccdemo rpc.statd[3705]: No canonical
hostname found for 192.168.0.200> Jun 6 18:39:33 eccdemo
rpc.statd[3705]: STAT_FAIL to eccdemo for SM_MON of
192.168.0.200> Jun 6 18:39:33 eccdemo kernel: lo> ckd: cannot
monitor 192.168.0.200

配置一台文件服务器需要考虑些什么?

Single Instance

Operating System

Mount options for Binaries Mount options for Oracle Datafiles
Sun Solaris *
(8, 9, 10)

rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,proto=tcp,suid

rw,bg,hard,rsize=32768,wsize=32768,vers=3,[forcedirectio or llock],nointr,proto=tcp,suid
AIX (5L) **

rw,bg,hard,rsize=32768,wsize=32768,vers=3,intr,timeo=600,proto=tcp

rw,bg,hard,rsize=32768,wsize=32768,vers=3,cio,intr,timeo=600,proto=tcp

HPUX 11.23 **** rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,proto=tcp,suid rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,proto=tcp, suid, forcedirectio
Windows Not Supported Not Supported
Linux x86
#
rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp,actimeo=0*
Linux x86-64 # rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp,actimeo=0*
Linux – Itanium rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp

* actime=0 or noac can be used

本文出自 “忧忧郁郁”
博客,请务必保留此出处

SQL startup ORA-10997: another
startup/shutdown operation of this instance inprogress ORA-09968: unable
to lock file Linux-x86_64 Error: 37: No locks availabl…

文件服务器是什么?

RAC  

In the table below

  • Binaries is the shared mount points where the Oracle Home and
    CRS_HOME is installed.

  • Datafiles includes Online Logs, Controlfile and Datafiles

  • nfsvers and vers are identical on those OS platforms that has
    nfsvers.  The ver option is an alternative to the nfsvers option. It
    is included for compatibility with other operating systems

  • Please note that the mount options on each of the following cells
    are applicable only to those type of files listed in the column
    heading.

  • For RMAN backup sets, image copies, and Data Pump dump files, the
    “NOAC” mount option should not be specified – that is because RMAN
    and Data Pump do not check this option and specifying this can
    adversely affect performance.

Operating System

Mount options for    Binaries ##

Mount options for Oracle Datafiles Mount options for CRS Voting Disk and OCR
Sun Solaris *

rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,noac,

vers=3,suid

rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,noac,
forcedirectio, vers=3,suid
rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,vers=3,
noac,forcedirectio
AIX (5L) **

rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,

vers=3,timeo=600

cio,rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,noac,
vers=3,timeo=600

cio,rw,bg,hard,intr,rsize=32768,
wsize=32768,tcp,noac,
vers=3,timeo=600

HPUX 11.23 ***  — rw,bg,vers=3,proto=tcp,noac,
hard,nointr,timeo=600,
rsize=32768,wsize=32768,suid
rw,bg,vers=3,proto=tcp,noac,
forcedirectio,hard,nointr,timeo=600,
rsize=32768,wsize=32768,suid
rw,bg,vers=3,proto=tcp,noac,
forcedirectio,hard,nointr,timeo=600
,rsize=32768,wsize=32768,suid
Windows Not Supported Not Supported Not Supported
Linux x86
#
****

rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp, vers=3,
timeo=600, actimeo=0

rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,actimeo=0,
vers=3,timeo=600

rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,noac,actimeo=0,
vers=3,timeo=600

Linux x86-64 #
****
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,vers=3,
timeo=600, actimeo=0
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,actimeo=0,
vers=3,timeo=600
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,noac,vers=3,
timeo=600,actimeo=0
Linux – Itanium rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,vers=3,
timeo=600, actimeo=0
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,actimeo=0,
vers=3,timeo=600
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,noac,vers=3,
timeo=600,actimeo=0

* NFS mount option “forcedirectio” is required on Solaris platforms
when mounting the OCR/CRS files when using Oracle 10.1.0.4 or 10.2.0.2
or later (Oracle unpublished bug 4466428)
** AIX is only supported with NAS on AIX 5.3 TL04 and higher with
Oracle 10.2.0.1 and later (NetApp)
*** NAS devices are only supported with HPUX 11.23 or higher
ONLY
**** As per BUG 11812928, the ‘intr’ & ‘nointr’ are deprecated in
OEL 5.6 kernels and up including Oracle Linux 6. It is harmless to still
include it, but the “NFS: ignoring mount option: nointr” will appears.
This message can be ingnored.

# These mount options are for Linux kernels 2.6 and above for older
kernels please check Note 279393.1

Due to Unpublished bug 5856342, it is necessary to use the following
init.ora parameter when using NAS with all versions of RAC on Linux (x86
& X86-64 platforms) until 10.2.0.4. This bug is fixed and included in
10.2.0.4 patchset.
filesystemio_options = DIRECTIO

你希望如何轻松的管理你的文件?很不幸许多越来越强大的文件服务器操作系统对于非IT的人员来说操作起来并不容易。不过,市场上有可以轻松驾驭的服务器操作系统。一旦发生灾难该如何恢复你的文件?将你的文件放在一台计算机上等同于将你所有的鸡蛋都放在同一个篮子里,这是风险很大的。该如何保障安全呢?任何类型的网络上的任何资源都存在被入侵的风险。这份指南能回答所有这些问题,它主要是针对家庭用户,因此有必要在存储空间,管理能力,恢复能力和安全简化上作出一些牺牲,因为家庭用户通常无法负担高额的成本,也不需要专业级别的文件服务器解决方案。

message文件报错信息:192.168.0.200为netapp存储地址)

也就是说文件服务器是满足所有这些需求的一个选择。你可以将你所有的照片集中在闪存上,下次在见到亲家的时候把闪存交给他—但是这意味着每次你希望和亲家共享更多照片的时候每次都必须这么做—谁知道你是否能拿回你的闪存呢?你也可以将刻好的DVD-R交给你的同事,–但是或许一个4GB容量的DVD-R是根本不够的,电子邮件需要像蜗牛一样花费数天。如果你在旅途当中,你可以携带便携式外置硬盘,又占空间,又可能被盗或者丢失。文件服务器是一种解决所有这些问题的简单易行的解决方案。家用文件服务器不需要企业级硬件,价格是家庭用户可以承受的。而且文件服务器还是由节能组件制造的,不会导致高额的电费账单。

SQL> startup> ORA-10997: another startup/shutdown operation of
this instance inprogress> ORA-09968: unable to lock file>
Linux-x86_64 Error: 37: No locks available> Additional information:
64

使用文件服务器能做些什么?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图