java - Oracle OCI 驱动程序在密码过期警告时抛出/零错误

标签 java oracle oracle-call-interface

我们在 ora12c Db 中有一个 oracle 模式。它被配置为有 7 天的密码过期警告。我们已经到了这个时期。但密码尚未过期。我们使用 Oracle OCI 驱动程序通过使用 Java 作为语言的 Vertx 应用程序进行连接。每当连接到模式时,它都会发出如下警告。

java.sql.SQLWarning: ORA-28002: the password will expire within 6 days

at oracle.jdbc.driver.DatabaseError.addSqlWarning(DatabaseError.java:950) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:1008) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:536) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:54) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) ~[ojdbc7.jar:12.1.0.2.0]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:161) ~[c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:161) ~[c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147) ~[c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202) [c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) [c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) [c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) [c3p0-0.9.5.2.jar:0.9.5.2]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) [c3p0-0.9.5.2.jar:0.9.5.2]

没关系。但是后续查询获得的连接会抛出/零错误,这是一种奇怪的行为。

java.lang.ArithmeticException: / by zero
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:1387) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CPreparedStatement.<init>(T2CPreparedStatement.java:109) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CDriverExtension.allocatePreparedStatement(T2CDriverExtension.java:81) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.PhysicalConnection.prepareStatementInternal(PhysicalConnection.java:2013) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:1960) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CConnection.prepareStatement(T2CConnection.java:57) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:1866) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T2CConnection.prepareStatement(T2CConnection.java:57) ~[ojdbc7.jar:12.1.0.2.0]
at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:567) ~[c3p0-0.9.5.2.jar:0.9.5.2]
at io.vertx.ext.jdbc.impl.actions.JDBCQuery.execute(JDBCQuery.java:43) ~[vertx-jdbc-client-3.7.1.jar:3.7.1]
at io.vertx.ext.jdbc.impl.actions.JDBCQuery.execute(JDBCQuery.java:30) ~[vertx-jdbc-client-3.7.1.jar:3.7.1]
at io.vertx.ext.jdbc.impl.actions.AbstractJDBCAction.handle(AbstractJDBCAction.java:58) ~[vertx-jdbc-client-3.7.1.jar:3.7.1]
at io.vertx.ext.jdbc.impl.actions.AbstractJDBCAction.lambda$execute$0(AbstractJDBCAction.java:66) ~[vertx-jdbc-client-3.7.1.jar:3.7.1]
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:272) ~[vertx-core-3.7.1.jar:3.7.1]
at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76) ~[vertx-core-3.7.1.jar:3.7.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.34.Final.jar:4.1.34.Final]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]

有没有办法在不将驱动程序更改为 thin 的情况下解决这个问题?

最佳答案

您是否尝试过 clearWarnings()? 连接.clearWarnings(): https://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#clearWarnings()

关于java - Oracle OCI 驱动程序在密码过期警告时抛出/零错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62828305/

相关文章:

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

java - 仅当列存在时 hibernate @Column

sql - ORACLE SQL 排序依据

symfony - 返回oci错误号?

c - OCILib - 变量的可见性

java - 如何从Web服务请求获取日历对象?

database - 如何构建表以快速搜索大量列

oracle - PL/SQL Who am I 函数类似于 T-SQL 的 OBJECT_NAME(@@PROCID)

php - 抑制预期 Oracle 异常的 PHP 警告

java - java内部递归正则表达式