oracle.net.ns.NetException: NL Exception was generated

这两天修改了下数据库配置文件,结果后台出现下面错误信息,如下(主要关注红色部分)

org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (NL Exception was generated)

at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:296)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:320)
at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:216)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:140)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.<init>(SQLErrorCodeSQLExceptionTranslator.java:103)
at org.springframework.jdbc.support.JdbcAccessor.getExceptionTranslator(JdbcAccessor.java:99)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212)
at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)
        ……
at java.lang.Thread.run(Thread.java:736)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (NL Exception was generated)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:210)
at $Proxy107.getMetaData(Unknown Source)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:285)
... 12 more
Caused by: java.sql.SQLException: NL Exception was generated
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
... 17 more
Caused by: oracle.net.ns.NetException: NL Exception was generated
at oracle.net.resolver.AddrResolution.resolveAddrTree(AddrResolution.java:613)
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:410)
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:634)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:208)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)

... 25 more

其实出现这个错误,主要是数据库配置文件中url字符串写错导致的。仔细检查url字符串,问题基本就解决了。

下面附带可以运行的url字符串:

oracle.url=jdbc:oracle:thin:@(description=(address_list=(load_balance=off)(failover=on)(address=(protocol=tcp)(host=192.168.1.12)(port=1521))(address=(protocol=tcp)(host=192.168.1.15)(port=1521)))(connect_data=(service_name=orcl)(failover_mode=(type=select)(method=basic))))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你出现 `IO 错误: NL Exception was generated` 错误的原因可能是你的Oracle JDBC驱动程序版本不支持使用 `javax.net.ssl.*` 参数来配置SSL连接。从Oracle JDBC驱动程序版本 12.2c 开始,JDBC驱动程序引入了新的参数来配置 SSL 连接。 如果你使用的是较旧版本的Oracle JDBC驱动程序,可以尝试使用以下方式来启用 SSL 连接: 1. 将 Oracle 的 `javax.net.ssl.*` 参数设置为系统属性: ``` System.setProperty("javax.net.ssl.trustStore", "/path/to/truststore"); System.setProperty("javax.net.ssl.trustStorePassword", "mypassword"); ``` 2. 在JDBC URL中添加以下参数: ``` jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=myhost)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=myorcldbservicename))(SSL_VERSION=1.2)(SSL_CIPHER_SUITES=(SSL_RSA_WITH_AES_256_CBC_SHA256))) ``` 请注意,上述示例中的 `SSL_VERSION` 和 `SSL_CIPHER_SUITES` 参数可以根据你的 SSL 配置进行更改。 如果你使用的是 Oracle JDBC 驱动程序版本 12.2c 或更高版本,则可以使用以下方式来配置 SSL 连接: 1. 在JDBC URL中添加以下参数: ``` jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=myhost)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=myorcldbservicename))(SECURITY=(SSL_SERVER_CERT_DN="CN=myservername"))) ``` 请注意,上述示例中的 `SSL_SERVER_CERT_DN` 参数应该设置为SSL服务器证书的 Distinguished Name (DN)。 2. 将 SSL 证书添加到 Java 信任库中: ``` keytool -import -alias myserver -file /path/to/server/certificate.pem -keystore /path/to/truststore ``` 请注意,需要将 `/path/to/server/certificate.pem` 替换为 SSL 服务器证书的路径和文件名,将 `/path/to/truststore` 替换为 Java 信任库的路径和文件名。在执行上述命令时,需要提供 Java 信任库的密码。 以上是两种配置 SSL 连接的方式,你可以根据自己的实际情况选择其中一种方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值