Hello.
I'm using DBF JDBC Driver on Oracle Weblogic Server 10. I configured DataSource to work with dbf III files. ( URL : jdbc:dbf:////oracle/OUT?charSet=cp866;versionNumber=03; Driver class name : com.hxtt.sql.dbf.DBFDriver)
I��m calling this DataSource via BPEL Database adapter from my Oracle composite SOA Application. It works fine, with existing dbf files, also it can create new dbf file.
But I��ve faced with problem:
I need to create dbf file, insert some data and then delete file.
When I make it first time all works fine. On the second time it throws exception:
��Failed to create table /oracle/OUT/REF_RuClsObjAdDvOutOOS/OKATO.dbf because it's open..��
But this file don't even exists on execution time.
He is complete exceptions:
"Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'CreateDBFOutOOS' failed due to: Pure SQL Exception. Pure SQL Execute of CREATE CATALOG IF NOT EXISTS REF_RuClsObjAdDvOutOOS; CREATE TABLE IF NOT EXISTS REF_RuClsObjAdDvOutOOS.OKATO ( "TER" CHARACTER(2), "KOD1" CHARACTER(3), "KOD2" CHARACTER(3), "KOD3" CHARACTER(3), "RAZDEL" CHARACTER(1), "NAME1" CHARACTER(250), "CENTRUM" CHARACTER(80), "NOMDESCR" CHARACTER(250), "NOMAKT" NUMERIC(3), "STATUS" NUMERIC(1), "DATEUTV" DATE, "DATEVVED" DATE ); failed. Caused by java.sql.SQLException: Failed to create table /oracle/OUT/REF_RuClsObjAdDvOutOOS/OKATO.dbf because it's open.. The Pure SQL option is for border use cases only and provides simple yet minimal functionality. Possibly try the "Perform an operation on a table" option instead. ConnectionFactory property platformClassName was set to org.eclipse.persistence.platform.database.oracle.Oracle10Platform but the database you are connecting to is HXTT DBF. Please validate your platformClassName setting. This mismatch can cause the adapter to trigger runtime exceptions or execute SQL that is invalid for the database you are connected to. This exception is considered retriable, likely due to a communication failure. To classify it as non-retriable instead add property nonRetriableErrorCodes with value "4097" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.��
I've tried to add delayedClose=15;lockTimeout=2000 parameters to JBDC URL, but it doesn't solve problem. Can you help me ?
|
>I need to create dbf file, insert some data and then delete file.
You should use DROP TABLE OKATO sql to delete that file.
|
Yes, i`ve tried, but always get this error:
Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'DropDBF' failed due to: Pure SQL Exception. Pure SQL Execute of DROP TABLE IF EXISTS REF_RuClsObjAdDvOutOOS.OKATO failed. Caused by java.sql.SQLException: Failed to acquire table OKATO: java.lang.InterruptedException: Timeout Interrupted Exception: beyond 2000 msecs. at com.hxtt.concurrent.aj.new(Unknown Source) at com.hxtt.concurrent.a2.if(Unknown Source) at com.hxtt.concurrent.al.W(Unknown Source) at com.hxtt.concurrent.ab.a(Unknown Source) at com.hxtt.sql.dbf.i.int(Unknown Source) at com.hxtt.sql.dbf.d.a(Unknown Source) at com.hxtt.sql.dbf.x.a(Unknown Source) ........
I`ve also tried to execute unlock/commit statement before dropping table, and change lockTimeout connection property. It not helps.
|
It seems one connection want to delete that table but another old connection is holding it. Try delayedClose=0 can release it at once when it's idle. BTW, please download the latest package.
|
I use DBF JDBC 4.1 Package for JDK1.7.X and JDK1.8.X (2014-09-08 07:17).
Setting delayedClose to 0 did not help. I have no other ideas.
|
In my test, it's normal. So that maybe it's a write right issue?
You can try
CREATE CATALOG IF NOT EXISTS REF_RuClsObjAdDvOutOOS_test; CREATE TABLE IF NOT EXISTS REF_RuClsObjAdDvOutOOS_test.OKATO ( "TER" CHARACTER(2), "KOD1" CHARACTER(3), "KOD2" CHARACTER(3), "KOD3" CHARACTER(3), "RAZDEL" CHARACTER(1), "NAME1" CHARACTER(250), "CENTRUM" CHARACTER(80), "NOMDESCR" CHARACTER(250), "NOMAKT" NUMERIC(3), "STATUS" NUMERIC(1), "DATEUTV" DATE, "DATEVVED" DATE );
to see whether it can create that directory REF_RuClsObjAdDvOutOOS_test and the relative table file.
|