zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle的坑

2023-09-27 14:23:10 时间

Oracle JDBC使用Linux时,老是报错SQLException("Io exception: Connection reset").

为了登录Oracle Server时的安全考虑,Oracle JDBC drivers 会调用Java SecureRandom生成随机数。SecureRandom依赖os底层的/dev/random,/dev/random是Linux内核提供的安全随机数生成设备;

Linux跑在有缺陷的硬件(比如,虚拟机),运气不好时,/dev/random生成随机数会非常慢。这样导致了登录进程会halt,最终导致Connection Reset。

解决方案

方案一,修改应用的JVM参数,使用/dev/urandom。好处,解决了随机数生成慢、阻塞调用的问题;缺点是,/dev/urandom降低了安全性。
-Djava.security.egd=file:/dev/../dev/urandom
方案二,安装部署 haveged-1.9.1 增加随机数产量。

BTW,logstash启动时也依赖/dev/random,这也是logstash在虚拟机中启动非常缓慢的原因。

2. ORA-00942

表,确实存在,但JDBC报错"表或视图不存在"

Oracle 大小写敏感,在创建和查询时,对表名、列名会自动转为大写,这样导致找不到表。

语句中对表名、列名加双引号。

create table "table_name"

select * from "table_name"

欢迎加入橙鹰数据(据说是杭州一个很牛x很低调的大数据公司)