Tuesday May 06, 2014

How to delete a JDBC Store?

If you see the message "Skipping unexpected null message encountered on store boot", you will need to recreate your JDBC store, because it got corrupted.

You will see a message like this in the weblogic server log:
<Warning> <Messaging> <BEA-282013> <Skipping unexpected null message encountered on store boot, [ sequence=4862 queue=12 name=MyModule!MyQueue state=0 deliveryCount=2 ]>

Steps to fix the issue:
1. Make sure managed server is not running

2.  Delete the corrupted JDBC store because messages are corrupted.

See Managing JDBC Store Tables

http://docs.oracle.com/cd/E23943_01/web.1111/e13701/store.htm#i1143431

e.g.:
If you have provided the prefix MY when you created your JDBC store, your table is named MYWLStore, otherwise, it is just named WLStore

To drop the table, you can use the option below or simply drop it using a database tool:

$ echo "drop MYWLStore;" > drop.ddl
$ cd <YourDomain>/bin
$. ./setDomainEnv.sh
  **Notice the . before ./
$ java utils.Schema jdbc:weblogic:oracle:DEMO weblogic.jdbc.oci.Driver -u user1 -p foobar \
  -verbose drop.ddl

3. Start managed server. The store table will be recreated when managed server is started

Enjoy!

Monday Oct 14, 2013

Troubleshooting java.sql.SQLRecoverableException: IO Error: Invalid Packet Lenght

Some time ago, one of my customers had the following intermittent issue in WebLogic Server:

java.sql.SQLRecoverableException: IO Error: Invalid Packet Lenght
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:875)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at jdbc.JDBCTester.main(JDBCTester.java:31)
Caused by: oracle.net.ns.NetException: Invalid Packet Lenght
at oracle.net.ns.Packet.processHeader(Packet.java:372)
at oracle.net.ns.Packet.receive(Packet.java:304)
at oracle.net.ns.DataPacket.receive(DataPacket.java:104)

I tried enabling jdbc debugs but no clues on what was happening.

I decided to see if this was happening outside of WLS.

My customer tested using sqlplus but the issue was not occurring.

Then, I decided to check if the issue occurred with any Java application connected to the database.

My customer run my test program about 1000 times and then voila!, the issue was reproduced outside of WebLogic Server.

It turned out that there were network issues with this box that were fixed by customer's network team.

You can use these types of testers under similar issues you might experience to try to isolate the component/layer where the issue occurs.

Enjoy!

Here is my JDBC tester.


**************************************
JDBC Tester
**********************************************

i. Save the code below as TestJDBC.java
The successful case will print
finished DB testing

/********************************************/
package jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
import javax.sql.DataSource;
class TestJDBC {
public static void main(String[] args) {
try {
String url = "jdbc:oracle:thin:@//localhost:1521/orcl";
Connection conn = DriverManager.getConnection(url, "javauser", "javauser");
PreparedStatement ps = null;
ResultSet rs = null;
String sid;
String sSQL = "select count(1) from dual";
try {
ps = conn.prepareStatement(sSQL);
rs = ps.executeQuery();

  
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (Exception rse) {
}
try {
ps.close();
} catch (Exception sse) {
}
try {
conn.close();
} catch (Exception cse) {
}
System.out.println("finished DB testing");
}

  
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
}
}
/********************************************/
ii. mkdir jdbc
iii. mv TestJDBC.java jdbc
iv. cp WL_HOME/server/lib/ojdbc6.jar  jdbc
vi. Modify jdbc/TestJDBC.java according to your settings
                     String url = "jdbc:oracle:thin:@//localhost:1521/orcl";

Connection conn = DriverManager.getConnection(url, "javauser", "javauser");
vii. execute:
. ./setDomainEnv.sh (this file is locate at <domain>/bin folder. Notice the . before ./)
viii. CLASSPATH="${CLASSPATH}:.:/jdbc"
ix. export CLASSPATH
x. cd jdbc
xi. javac TestJDBC.java
xii. cd ..
xiii. java jdbc.TestJDBC

About


My name is Luz Mestre. I work as Principal Technical Support Engineer at Oracle Support. I'll post here the most interesting challenges I have in my daily work. The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

Search

Categories
Archives
« March 2015
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    
       
Today