我在我的服务器上安装需要Oracle数据库的应用程序。 数据库托pipe在另一台专用服务器上。
应用程序正在使用JDBC连接到数据库。
我已经testing了与sqlplus的连接,结果是没有tnsnames.ora:
export TNS_ADMIN=/opt/oracle/network/admin export ORACLE_SID=MYDB sqlplus user@MYDB
没问题。
没有tnsnames.ora我也可以连接到DB:
sqlplus user/pwd@server:1521/MYDB
工作正常。
但是,当我通过jdbc java驱动程序连接,连接是以下例外:
-------- Oracle JDBC Connection Testing ------ Oracle JDBC Driver Registered! Connection Failed! Check output console java.sql.SQLRecoverableException: No more data to read from socket at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:456) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:397) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:437) at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:954) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639) at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at OracleJDBC.main(OracleJDBC.java:29)
通过停用firewalld服务,JDBC连接就可以了。
在firewalld中,我创build了下面的“oracle”服务(在/ etc / firewalld / services中):
[root@frtls3dxr2017-i 1]# ll /etc/firewalld/services/oracle.xml -rw-r----- 1 root root 196 Jun 15 10:00 /etc/firewalld/services/oracle.xml [root@frtls3dxr2017-i 1]# ll /etc/firewalld/services/oracle.xml -rw-r----- 1 root root 196 Jun 15 10:00 /etc/firewalld/services/oracle.xml [root@frtls3dxr2017-i 1]# firewall-cmd --list-services tomee_fcsremote http 3dnotification tomee_3dcomment tomee_fedsearch dhcpv6-client tomee_3dspaceinternal tomee_3ddashboard tomee_3dpassport tomee_3dspace ssh https oracle tomee_fcscentral [root@frtls3dxr2017-i 1]# cat /etc/firewalld/services/oracle.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>oracle port for jdbc</short> <description>oracle Firewall rules</description> <port protocol="tcp" port="1521"/> </service>
我是否需要在服务xml文件中添加更多端口以允许连接到数据库(传出stream量)?
这不是防火墙问题。
问题是rngd服务没有使用/ dev / urandom。 我不得不修改服务单元文件来添加-r / dev / urandom:
ExecStart = / sbin / rngd -f -r / dev / urandom
它也可以通过更改java.security securerandom.source键来解决:
securerandom.source =文件是:/ dev / urandom的