It is found that the Oracle writing thread is suspended. The scenario is to read data from MySQL and then write data to Oracle.
1. Locate the thread
Because multiple Java processes are running on the same machine, the corresponding PID is the process connecting to MySQL.
[Admin@arch036075.sqa.cm4 logs] $ SS-p | grep "10.232.31.67"
Estab 0 0 10.232.36.75: 41790 10.232.31.67: mysql users :( ("Java", 1978,184 ))
Estab 0 0 10.232.36.75: 41789 10.232.31.67: mysql users :( ("Java", 1978,179 ))
The red part is the PID of the thread.
2. jstack
"Stage Task: mysql-to-dbsync" daemon prio=10 tid=0x00002aaac8699000 nid=0x7e33 runnable [0x0000000043cfb000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at oracle.net.ns.Packet.receive(Unknown Source) at oracle.net.ns.NSProtocol.sendReset(Unknown Source) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1112) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1075) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:480) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423) - locked <0x00002aaab4575880> (a oracle.jdbc.driver.T4CPreparedStatement) - locked <0x00002aaab4cda408> (a oracle.jdbc.driver.T4CConnection)
Oracle write exception found-locked <0x00002aaab4575880> (A Oracle. JDBC. Driver. t4cpreparedstatement)
-Locked <0x00002aaab4cda408> (A Oracle. JDBC. Driver. t4cconnection)
3. Ask the DBA about the corresponding Oracle database, saying that a table in the write database is locked, unlocked, and the Jingwei system is restarted.
4 some people have said that it may be an Oracle bug. Setting the connection timeout can solve the problem. This method is also used to solve the application that encountered this problem for the first time (this is the second time) and restart the application, it was found that the table was locked.