最近负责的数据交换平台性能测试,发现数据库连接有缓慢增长的现象,通过调试发现是oracle的sys_uuid()方法导致的,感觉非常奇怪,只好先将sys_uuid()改成java里的uuid生成方法,详细说明如下:
软件环境:
java jdk1.4.2/Red Hat 3.4.6-2
oracle 9i/Red Hat 3.4.6-2
oracle驱动采用的是ojdbc14.jar
通过如下方法查询oracle 的 session 连接占用:
select count(1)
from v$session v
where v.USERNAME = 'EDIENTJOIN'
and v.MACHINE = 'web'
and v.OSUSER = 'mqm'
java程序的原来的调用方法是:
String insertSql = "INSERT INTO EDI_ALARM_RESPONSE(ALARM_RESPONSE_ID,ALARM_REQUEST_DETAIL_ID,ALARM_TYPE,QUANTITY,CREATE_TIME) VALUES "
+ "(SYS_GUID(),?,?,?,SYSDATE)";
后续改成:
String insertSql = "INSERT INTO EDI_ALARM_RESPONSE(ALARM_RESPONSE_ID,ALARM_REQUEST_DETAIL_ID,ALARM_TYPE,QUANTITY,CREATE_TIME) VALUES "
+ "(?,?,?,?,SYSDATE)";
第一个参数采用如下方式取值:
String uuid = UUIDKeyGenerator.getInstance().generateKey();//公司框架子封装的方法,貌似新版的jdk里提供类似的方法