Thin Driver throws SQLException instead of BatchUpdateExeption!
Hi,
I am using classes12.zip.
While executing a batch update, one of the values in the prepared statement
is invalid, so executeUpdate() fails. But, instead of throwing a
java.sql.BatchUpdateException, the driver throws a java.sql.SQLException.
This is a big problem for me since I handle BatchUpdateException to
find out the erroneous value and so on.
Please let me know if anybody else faced this problem, and what the solution is.
TIA,
Prasad
At the time our issue was resolved, the bug was not published. And, I was told, there was no information in metalink about the isue. I am not sure whether they published some thing in the last few weeks.
This is what resolved our issue.
Step 1: alter system set java_jit_enabled=FALSE;
Step 2: Try your test case. If it is the same issue as ours, your test case will be successful. If it succeeds, Go to step 3. If it does not succeed, it is a different issue.
Step 3: alter system set java_jit_enabled=TRUE;
Step 4: Run your test case. If it is the same issue, it is expected to fail. Go to Step 5 in case of failure.
Step 5: Delete all rows from table java$mc$
Step 6: Restart the database
Step 7: Run your test case. It is expected to be successful.
Similar Messages
-
Oracle server side jdbc thin driver throws ORA-01017
We upgraded our database to 11.2.0.1 from 9.2.0.6.
When we try to connect to an external database from Oracle JVM using server side jdbc thin driver, it throws invalid user id/password error.
The below test code simulates the issue and is not working on the upgraded instance. The same code is working in fine in other 11.2.0.1 instances. It worked fine before upgrade. In all cases, we are connecting to the same target database instance which is also in 11.2.0.1. It fails only on this database.
SEC_CASE_SENSITIVE_LOGON is set to false.
Any inputs will be highly appreciated.
Code:_
create or replace and compile java source named TestConn as
import java.sql.SQLException;
import oracle.jdbc.OracleDriver;
import oracle.jdbc.OracleConnection;
import java.sql.DriverManager;
public class TestConn {
public static String runTest() {
String msg = "Start";
OracleConnection tempOC = null;
try {
String pUrl = "jdbc:oracle:thin:@dev:1521:dev";
String pUser = "tst_user";
String pPwd = "dummy";
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
tempOC = (OracleConnection)DriverManager.getConnection(pUrl, pUser, pPwd);
msg = "Success";
} catch (SQLException sqle) {
System.out.println(sqle.toString());
sqle.printStackTrace();
msg = "Failure";
return msg;
CREATE OR REPLACE FUNCTION test_conn RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'TestConn.runTest() return java.lang.String';
set serverout on
declare
c varchar2(4000);
begin
dbms_java.set_output(5000);
c:=test_conn();
dbms_output.put_line(c);
end;
/ Error Message_
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:359)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java)
at java.sql.DriverManager.getConnection(DriverManager.java)
at java.sql.DriverManager.getConnection(DriverManager.java)
at TestConn.runTest(TESTCONN:22) Edited by: sskumar on Mar 6, 2011 1:12 PMAt the time our issue was resolved, the bug was not published. And, I was told, there was no information in metalink about the isue. I am not sure whether they published some thing in the last few weeks.
This is what resolved our issue.
Step 1: alter system set java_jit_enabled=FALSE;
Step 2: Try your test case. If it is the same issue as ours, your test case will be successful. If it succeeds, Go to step 3. If it does not succeed, it is a different issue.
Step 3: alter system set java_jit_enabled=TRUE;
Step 4: Run your test case. If it is the same issue, it is expected to fail. Go to Step 5 in case of failure.
Step 5: Delete all rows from table java$mc$
Step 6: Restart the database
Step 7: Run your test case. It is expected to be successful. -
JDBC thin driver 8.0.5 giving SQLException: No more data to read from socket
H/W : sun4u sparc SUNW,Ultra-Enterprise
OS : SunOS 5.6 Generic_105181-16
JDBC driver : 8.0.5.0.0 (Production Release)
Oracle Server : 8.0.5
I am getting the following error "SOMETIMES". I am using a connection pool to connect to the server using the thin driver. Can anyone tell me why is this happening and how can I fix it.
Thanks,
-Ramesh
SQL Statement: SELECT * FROM blah blah ...
SQLState: null
Message: No more data to read from socket
Vendor: 0
JDBC close connection failed.
java.sql.SQLException: No more data to read from socket
URL=jdbc racle:thin:@<host>:1521:<sid> user=<user_name>
nullHello,
When I change PLSExtProc to XE, I get a different exception:
java.sql.SQLException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:911)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1120)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:962)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1242)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3446)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3491)
at oracle.Main.main(Main.java:30)
SQLException: ORA-00942: table or view does not exist
thanks,
- Breno -
Petstore throws populateServlet error with Oracle thin driver
When i point connection pool to Oracle database, i get the following error. The
data is populated in the database, looks like when petstore is enumerating db
tables and make sure all tables exist, this error is happening. Some how, database
metadata coming as NULL. Has anybody tried petstore with Oracle JDBC driver?
thanks,
PopulateServlet Error:
java.lang.NullPointerException java.lang.NullPointerException at com.sun.j2ee.blueprints.tools.populate.web.PopulateServlet.checkTables(PopulateServlet.java:276)
at com.sun.j2ee.blueprints.tools.populate.web.PopulateServlet.doGet(PopulateServlet.java:127)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2456)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2039)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)I believe that you do not have weblogicaux.jar in your classpath.
-Selvan
Laurie Cohen wrote:
Im using Solaris 2.7 with WLS 5.1.0 and Commerce Server 2.0.1 with
current service packs on both. JDK 1.2.1_04 and the Oracle thin driver
(classes111.zip which I am told is the only one supported in this
configuration). Has anyone seen this problem? Is it that the driver is
using 1.1 and I only have 1.2 installed?
devapp01% java -classpath
/usr/local/weblogic/classes:/usr/local/weblogic/license utils.t3dbping
t3://localhost:7601 username password "" oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@10.200.201.110:1521:q01c
Connecting to WebLogic with the WebLogic JDBC Driver
Exception in thread "main" java.lang.NoClassDefFoundError:
com/sun/java/util/collections/ArrayList
at weblogic.kernel.Kernel.declareProperties(Kernel.java:253)
at weblogic.kernel.Kernel.ensureInitialized(Kernel.java:107)
at weblogic.common.T3Client.<init>(T3Client.java:218)
at weblogic.common.T3Client.<init>(T3Client.java:269)
at weblogic.common.T3Client.<init>(T3Client.java:323)
at weblogic.jdbcbase.t3.Driver.connect(Driver.java:121)
at java.sql.DriverManager.getConnection(Compiled Code)
at java.sql.DriverManager.getConnection(DriverManager.java:106)
at utils.t3dbping.main(t3dbping.java:115)
Thanks,
Laurie -
Bug in thin driver? - getTableName
Using oracle.jdbc.driver.OracleDriver (class dated 5/4/00 12:01 AM) in Classes12_01.zip (dated 9/25/00 4:53 PM). The ResultSetMetaData.getTableName() method returns an empty String (is not null), although column names and values come across fine.
Any help is greatly appreciated.
MichaelI tried this under both the oci8 and thin and had successful results. Your cut/paste shows no column identifier as per the javadocs:
...from JD:
public String getTableName(int column) throws SQLException
...example from JD:
ResultSet rs = stmt.executeQuery("SELECT TABLE_NAME FROM ALL_TABLES");
ResultSetMetaData rsmd = rs.getMetaData();
String tableName = rs.getTableName(1);
null -
Memory leak in weblogic 6.0 sp2 oracle 8.1.7 thin driver
Hi,
I have a simple client that opens a database connection, selects from
a table containing five rows of data (with four columns in each row)
and then closes all connections. On running this in a loop, I get the
following error after some time:
<Nov 28, 2001 5:57:40 PM GMT+06:00> <Error> <Adapter>
<OutOfMemoryError in
Adapter
java.lang.OutOfMemoryError
<<no stack trace available>>
>
<Nov 28, 2001 5:57:40 PM GMT+06:00> <Error> <Kernel> <ExecuteRequest
failed
java.lang.OutOfMemoryError
I am running with a heap size of 64 Mb. The java command that runs
the client is:
java -ms64m -mx64m -cp .:/opt/bea/wlserver6.0/lib/weblogic.jar
-Djava.naming.f
actory.initial=weblogic.jndi.WLInitialContextFactory
-Djava.naming.provider.url=
t3://garlic:7001 -verbose:gc Test
The following is the client code that opens the db connection and does
the select:
import java.util.*;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
public class Test {
private static final String strQuery = "SELECT * from tblPromotion";
public static void main(String argv[])
throws Exception
String ctxFactory = System.getProperty
("java.naming.factory.initial");
String providerUrl = System.getProperty
("java.naming.provider.url");
Properties jndiEnv = System.getProperties ();
System.out.println ("ctxFactory : " + ctxFactory);
System.out.println ("ProviderURL : " + providerUrl);
Context ctx = new InitialContext (jndiEnv);
for (int i=0; i <1000000; i++)
System.out.println("Running query for the "+i+" time");
Connection con = null;
Statement stmnt = null;
ResultSet rs = null;
try
DataSource ds = (DataSource) ctx.lookup
(System.getProperty("eaMDataStore", "jdbc/eaMarket"));
con = ds.getConnection ();
stmnt = con.createStatement();
rs = stmnt.executeQuery(strQuery);
while (rs.next ())
//System.out.print(".");
//System.out.println(".");
ds = null;
catch (java.sql.SQLException sqle)
System.out.println("SQL Exception : "+sqle.getMessage());
finally
try {
rs.close ();
rs = null;
//System.out.println("closed result set");
} catch (Exception e) {
System.out.println("Exception closing result set");
try {
stmnt.close ();
stmnt = null;
//System.out.println("closed statement");
} catch (Exception e) {
System.out.println("Exception closing result set");
try {
con.close();
con = null;
//System.out.println("closed connection");
} catch (Exception e) {
System.out.println("Exception closing connection");
I am using the Oracle 8.1.7 thin driver. Please let me know if this
memory leak is a known issue or if its something I am doing.
thanks,
rudyRepost in JDBC section ... very serious issue but it may be due to Oracle or
to WL ... does it happen if you test inside WL itself?
How many iterations does it take to blow? How long? Does changing to a
different driver (maybe Cloudscape) have the same result?
Peace,
Cameron Purdy
Tangosol Inc.
<< Tangosol Server: How Weblogic applications are customized >>
<< Download now from http://www.tangosol.com/download.jsp >>
"R.C." <[email protected]> wrote in message
news:[email protected]...
Hi,
I have a simple client that opens a database connection, selects from
a table containing five rows of data (with four columns in each row)
and then closes all connections. On running this in a loop, I get the
following error after some time:
<Nov 28, 2001 5:57:40 PM GMT+06:00> <Error> <Adapter>
<OutOfMemoryError in
Adapter
java.lang.OutOfMemoryError
<<no stack trace available>>
>
<Nov 28, 2001 5:57:40 PM GMT+06:00> <Error> <Kernel> <ExecuteRequest
failed
java.lang.OutOfMemoryError
I am running with a heap size of 64 Mb. The java command that runs
the client is:
java -ms64m -mx64m -cp .:/opt/bea/wlserver6.0/lib/weblogic.jar
-Djava.naming.f
actory.initial=weblogic.jndi.WLInitialContextFactory
-Djava.naming.provider.url=
t3://garlic:7001 -verbose:gc Test
The following is the client code that opens the db connection and does
the select:
import java.util.*;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
public class Test {
private static final String strQuery = "SELECT * from tblPromotion";
public static void main(String argv[])
throws Exception
String ctxFactory = System.getProperty
("java.naming.factory.initial");
String providerUrl = System.getProperty
("java.naming.provider.url");
Properties jndiEnv = System.getProperties ();
System.out.println ("ctxFactory : " + ctxFactory);
System.out.println ("ProviderURL : " + providerUrl);
Context ctx = new InitialContext (jndiEnv);
for (int i=0; i <1000000; i++)
System.out.println("Running query for the "+i+" time");
Connection con = null;
Statement stmnt = null;
ResultSet rs = null;
try
DataSource ds = (DataSource) ctx.lookup
(System.getProperty("eaMDataStore", "jdbc/eaMarket"));
con = ds.getConnection ();
stmnt = con.createStatement();
rs = stmnt.executeQuery(strQuery);
while (rs.next ())
//System.out.print(".");
//System.out.println(".");
ds = null;
catch (java.sql.SQLException sqle)
System.out.println("SQL Exception : "+sqle.getMessage());
finally
try {
rs.close ();
rs = null;
//System.out.println("closed result set");
} catch (Exception e) {
System.out.println("Exception closing result set");
try {
stmnt.close ();
stmnt = null;
//System.out.println("closed statement");
} catch (Exception e) {
System.out.println("Exception closing result set");
try {
con.close();
con = null;
//System.out.println("closed connection");
} catch (Exception e) {
System.out.println("Exception closing connection");
I am using the Oracle 8.1.7 thin driver. Please let me know if this
memory leak is a known issue or if its something I am doing.
thanks,
rudy -
JDBC Development team quote:
You can download the JDK 1.2 version of the 8.1.6 Thin driver from this site. It is 100% Pure Java and will run on Linux.
As you replied, I downloaded 8.1.6 Thin driver(classes12.zip) and nls_charset12.zip. Then, as instructed in readme file of 8.1.6, I modified CLASSPATH and add LD_LIBRARY_PATH.
I wrote a test program, and it compiled without errors. But when I excuted it, I got the error message below:
java.sql.SQLException: Io exception: Connection refused(DESCRIPTION=(TMP=)(VSNNU
M=135286784)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
Is there any other installation procedures I missed?
Below is the test program I used:
import java.sql.*;
import oracle.jdbc.driver.*;
public class Test
public static void main (String args [])throws SQLException
//DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
catch(ClassNotFoundException e){
System.out.println("Cannot load the Driver");
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@host:port:sid","id", "password");
Statement stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("select sysdate from dual");
while (rset.next ())
System.out.println (rset.getString (1));
I'd appreciate if you give me some insight.
nullIt seems like the database listener is not setup properly. Please double check the listener is up and it's listening to the port you specified.
Thanks. -
Bug in Oracle JDBC thin driver (parameter order)
[ I'd preferably send this to some Oracle support email but I
can't find any on both www.oracle.com and www.technet.com. ]
The following program illustrates bug I found in JDBC Oracle thin
driver.
* Synopsis:
The parameters of prepared statement (I tested SELECT's and
UPDATE's) are bound in the reverse order.
If one do:
PreparedStatement p = connection.prepareStatement(
"SELECT field FROM table WHERE first = ? and second = ?");
and then bind parameter 1 to "a" and parameter to "b":
p.setString(1, "a");
p.setString(2, "b");
then executing p yields the same results as executing
SELECT field FROM table WHERE first = "b" and second = "a"
although it should be equivalent to
SELECT field FROM table WHERE first = "a" and second = "b"
The bug is present only in "thin" Oracle JDBC driver. Changing
driver to "oci8" solves the problem.
* Version and platform info:
I detected the bug using Oracle 8.0.5 server for Linux.
According to $ORACLE_HOME/jdbc/README.doc that is
Oracle JDBC Drivers release 8.0.5.0.0 (Production Release)
* The program below:
The program below illustrates the bug by creating dummy two
column table, inserting the row into it and then selecting
the contents using prepared statement. Those operations
are performed on both good (oci8) and bad (thin) connections,
the results can be compared.
You may need to change SID, listener port and account data
in getConnecton calls.
Sample program output:
$ javac ShowBug.java; java ShowBug
Output for both connections should be the same
--------------- thin Driver ---------------
[ Non parametrized query: ]
aaa
[ The same - parametrized (should give one row): ]
[ The same - with buggy reversed order (should give no answers):
aaa
--------------- oci8 driver ---------------
[ Non parametrized query: ]
aaa
[ The same - parametrized (should give one row): ]
aaa
[ The same - with buggy reversed order (should give no answers):
--------------- The end ---------------
* The program itself
import java.sql.*;
class ShowBug
public static void main (String args [])
throws SQLException
// Load the Oracle JDBC driver
DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
System.out.println("Output for both connections should be the
same");
Connection buggyConnection
= DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:ORACLE",
"scott", "tiger");
process("thin Driver", buggyConnection);
Connection goodConnection
= DriverManager.getConnection ("jdbc:oracle:oci8:",
"scott", "tiger");
process("oci8 driver", goodConnection);
System.out.println("--------------- The end ---------------");
public static void process(String title, Connection conn)
throws SQLException
System.out.println("--------------- " + title + "
Statement stmt = conn.createStatement ();
stmt.execute(
"CREATE TABLE bug (id VARCHAR(10), val VARCHAR(10))");
stmt.executeUpdate(
"INSERT INTO bug VALUES('aaa', 'bbb')");
System.out.println("[ Non parametrized query: ]");
ResultSet rset = stmt.executeQuery(
"select id from bug where id = 'aaa' and val = 'bbb'");
while (rset.next ())
System.out.println (rset.getString (1));
System.out.println("[ The same - parametrized (should give one
row): ]");
PreparedStatement prep = conn.prepareStatement(
"select id from bug where id = ? and val = ?");
prep.setString(1, "aaa");
prep.setString(2, "bbb");
rset = prep.executeQuery();
while (rset.next ())
System.out.println (rset.getString (1));
System.out.println("[ The same - with buggy reversed order
(should give no answers): ]");
prep = conn.prepareStatement(
"select id from bug where id = ? and val = ?");
prep.setString(1, "bbb");
prep.setString(2, "aaa");
rset = prep.executeQuery();
while (rset.next ())
System.out.println (rset.getString (1));
stmt.execute("DROP TABLE bug");
nullHorea
In the ejb-jar.xml, in the method a cursor is closed, set <trans-attribute>
to "Never".
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name></ejb-name>
<method-name></method-name>
</method>
<trans-attribute>Never</trans-attribute>
</container-transaction>
</assembly-descriptor>
Deepak
Horea Raducan wrote:
Is there a known bug in Oracle JDBC thin driver version 8.1.6 that would
prevent it from closing the open cursors ?
Thank you,
Horea -
Jdbc oracle jdbc-thin driver subname
I am working on Windows 2000 environment, using oracle8i 8.1.7 JDBC-Thin driver for use with JDK 1.2.x. The oralce8i 8.1.7 database is on another linux box. I can access the linux box through its ip address, but not by its hostname since it's not accessiable by the dns server. In my code, in the JDBCUrl, I used ip address instead of the hostname, e.g. "jdbc:oracle:thin:@10.0.113.108:1521:ora1". But I got the error like: "java.sql.SQLException: Io exception: The Network Adapter could not establish the connection". If I add a entry in my working machine's hosts file to map the hostname, I can fix the problem. But I don't know if this is the solution, or there is other better solutions.
Thanks
nullUsing a hosts file entry is a common solution for problem where the dns lookup does not contain an entry for a RDBMS server platform.
The real solution is to resolve this issue :
"where the dns lookup does not contain an entry for a RDBMS server platform." -
I am using CLOBS with the Oracle thin driver and am experiencing horrible performance. We need datavalues more than a VARCHAR2 and have used CLOB but the method Oracle uses to get the data in and out is super slow.
MS SQL Server JDBC with text is awesome and fast. But Oracle is slow and very cumbersome.
HelpWe are using 9.0.2.
So what you are saying is although the column is CLOB
in Oracle 10 g we can use a normal result set
rset.getString( 1 ) no special oracle stuff just the
e Oracle thin driver for 10g?
Also this will retrieve a String greater than 4000
bytes?Exactly. Not only you can retieve a clob as string, you can also insert clob
as a string too. Here is the code I referred in last post in case you do not
have access to oracle ten network:
* @author Savitha
* @version 1.0
* Development Environment : Oracle JDeveloper 10g
* Name of the Application : ClobManipulationIn10g.java
* Creation/Modification History :
* Savitha 17-Mar-2004 Created.
package oracle.otnsamples.jdbc;
// Java SQL classes
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
// Oracle JDBC driver class
import oracle.jdbc.OracleDriver;
// Java IO classes
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
//Java Util classes
import java.util.Properties;
* This class demonstrates the Oracle JDBC 10g enhanced features for inserting
* and retrieving CLOB data from the database. Using the new features, large
* data of more than 32765 bytes can be inserted into the database using the
* existing PreparedStatement.setString() and PreparedStatement.getString()
* methods.
public class ClobManipulationIn10g {
/* Database Connection object */
private Connection conn = null;
/* Variables to hold database details */
private String url = null;
private String user = null;
private String password = null;
// Create a property object to hold the username, password and
// the new property SetBigStringTryClob.
private Properties props = new Properties();
/* String to hold file name */
private String fileName = null;
* Default Constructor to instantiate and get a handle to class methods
* and variables.
public ClobManipulationIn10g(String fileName) {
this.fileName = fileName;
* Main runnable class.
public static void main(String[] args) throws SQLException {
// Instantiate the main class.
ClobManipulationIn10g clobManipulationIn10g =
new ClobManipulationIn10g(args[0]);
// Load the Oracle JDBC driver class.
DriverManager.registerDriver(new OracleDriver());
// Load the database details into the variables.
String dbUrl = "jdbc:oracle:thin:@<database host machine>:<port>:<SID>";
clobManipulationIn10g.url = dbUrl;
// Replace the username where the table 'clob_tab' was created.
clobManipulationIn10g.user = "scott";
// Replace the password of the username.
clobManipulationIn10g.password = "tiger";
// Populate the property object to hold the username, password and
// the new property 'SetBigStringTryClob' which is set to true. Setting
// this property allows inserting of large data using the existing
// setString() method, to a CLOB column in the database.
clobManipulationIn10g.props.put("user", clobManipulationIn10g.user );
clobManipulationIn10g.props.put("password", clobManipulationIn10g.password);
clobManipulationIn10g.props.put("SetBigStringTryClob", "true");
// Check if the table 'CLOB_TAB' is present in the database.
clobManipulationIn10g.checkTables();
// Call the methods to insert and select CLOB from the database.
clobManipulationIn10g.insertClob();
clobManipulationIn10g.selectClob();
* This method will insert the data into a CLOB column in the database.
* Oracle JDBC 10g has enhanced the existing PreparedStatement.setString()
* method for setting the data more than 32765 bytes. So, using setString(),
* it is now easy to insert CLOB data into the database directly.
private void insertClob() throws SQLException {
// Create a PreparedStatement object.
PreparedStatement pstmt = null;
try {
// Create the database connection, if it is closed.
if ((conn==null)||conn.isClosed()){
// Connect to the database.
conn = DriverManager.getConnection( this.url, this.props );
// Create SQL query to insert data into the CLOB column in the database.
String sql = "INSERT INTO clob_tab VALUES(?)";
// Read a big file(larger than 32765 bytes)
String str = this.readFile();
// Create the OraclePreparedStatement object
pstmt = conn.prepareStatement(sql);
// Use the same setString() method which is enhanced to insert
// the CLOB data. The string data is automatically transformed into a
// clob and inserted into the database column. Make sure that the
// Connection property - 'SetBigStringTryClob' is set to true for
// the insert to happen.
pstmt.setString(1,str);
// Execute the PreparedStatement
pstmt.executeUpdate();
} catch (SQLException sqlex) {
// Catch Exceptions and display messages accordingly.
System.out.println("SQLException while connecting and inserting into " +
"the database table: " + sqlex.toString());
} catch (Exception ex) {
System.out.println("Exception while connecting and inserting into the" +
" database table: " + ex.toString());
} finally {
// Close the Statement and the connection objects.
if (pstmt!=null) pstmt.close();
if (conn!=null) conn.close();
* This method reads the CLOB data from the database by using getString()
* method.
private void selectClob() throws SQLException {
// Create a PreparedStatement object
PreparedStatement pstmt = null;
// Create a ResultSet to hold the records retrieved.
ResultSet rset = null;
try {
// Create the database connection, if it is closed.
if ((conn==null)||conn.isClosed()){
// Connect to the database.
conn = DriverManager.getConnection( this.url, this.props );
// Create SQL query statement to retrieve records having CLOB data from
// the database.
String sqlCall = "SELECT clob_col FROM clob_tab";
pstmt= conn.prepareStatement(sqlCall);
// Execute the PrepareStatement
rset = pstmt.executeQuery();
String clobVal = null;
// Get the CLOB value from the resultset
while (rset.next()) {
clobVal = rset.getString(1);
System.out.println("CLOB length: "+clobVal.length());
} catch (SQLException sqlex) {
// Catch Exceptions and display messages accordingly.
System.out.println("SQLException while connecting and querying the " +
"database table: " + sqlex.toString());
} catch (Exception ex) {
System.out.println("Exception while connecting and querying the " +
"database table: " + ex.toString());
} finally {
// Close the resultset, statement and the connection objects.
if (rset !=null) rset.close();
if (pstmt!=null) pstmt.close();
if (conn!=null) conn.close();
* Method to check if the table ('CLOB_TAB') exists in the database; if not
* then it is created.
* Table Name: CLOB_TAB
* Column Name Type
* col_col CLOB
private void checkTables() {
Statement stmt = null;
ResultSet rset = null;
try {
// Create the database connection, if it is closed.
if ((conn==null)||conn.isClosed()){
// Connect to the database.
conn = DriverManager.getConnection( this.url, this.props );
// Create Statement object
stmt = conn.createStatement();
// Check if the table is present
rset = stmt.executeQuery(" SELECT table_name FROM user_tables "+
" WHERE table_name = 'CLOB_TAB' ");
// If the table is not present, then create the table.
if (!rset.next()) {
// Table does not exist, create it
stmt.executeUpdate(" CREATE TABLE clob_tab(clob_col CLOB)");
} catch (SQLException sqlEx) {
System.out.println("Could not create table clob_tab : "
+sqlEx.toString());
} finally {
try {
if( rset != null ) rset.close();
if( stmt != null ) stmt.close();
if (conn!=null) conn.close();
} catch(SQLException ex) {
System.out.println("Could not close objects in checkTables method : "
+ex.toString());
* This method reads the specified text file and, returns the content
* as a string.
private String readFile()
throws FileNotFoundException, IOException{
// Read the file whose content has to be passed as String
BufferedReader br = new BufferedReader(new FileReader(fileName));
String nextLine = "";
StringBuffer sb = new StringBuffer();
while ((nextLine = br.readLine()) != null) {
sb.append(nextLine);
// Convert the content into to a string
String clobData = sb.toString();
// Return the data.
return clobData;
} -
Problem while Connecting with oracle thin driver
I have been trying for the past two days for connecting oracle 8.1.1.6 using thin driver. I set the classpath also. It throws me the following exception.
Exception in thread "main" java.sql.SQLException: Io exception: The Network Adap
ter could not establish the connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:323)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:260)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:365)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:517)
at java.sql.DriverManager.getConnection(DriverManager.java:177)
at Employee.main(Employee.java:23)
I am trying to acheive the connection using the following piece of code
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@THIRU:1521:ORCL",
"scott", "tiger");
The problem lies in that piece of code only,
In the TNSNAMES.ora the entries are as follows.
THIRU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Thiru)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = thiru)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
How to solve this one. Can anybody tell me how to provide the proper url.
thanks in advanceYou were very close.
"Thiru" as opposed to "THIRU" should be the name of the machine running the database, but that would imply that the DNS lookups are case sensitive, and we know that's not the case.
My guess, because the network adapter itself is reporting an error, is that "Thiru" evaluates to an IP address that isn't correct, that is, it's trying to make a connection to a specific address and getting nothing back in return.
Anyway, I think your program(s) are just fine, and your network is misconfigured. Incidently, it is always a good idea in cases like this to use the full name of the machine, for example...
...getConnection( "jdbc:oracle:thin:@thiru.maran1977.com:1521:ORCL"...
and in the database configuration itself...
(ADDRESS = (PROTOCOL = TCP)(HOST = thiru.maran1977.com)(PORT = 1521))
You may also use the IP address if you wish. -
Using Oracle thin driver with Weblogic 6.1
hi all,
i am trying to create a ConnectionPool using WLS6.1 and Oracle 8.0.5.
Since i cannot use the weblogic driver (due to the old version of oracle that
i have)
i am trying to use instead the oracle thin driver.
i configured my pool as follows:
URL jdbc:oracle:[email protected]:1521:ORC1
Driver oracle.jdbc.Driver.OracleDriver
Propeties user=SCOTT
when i try to assing the created pool to a server (using the 'Target' link),
i always got this exception
weblogic.management.DeploymentException: Error creating connection pool - with
n
ested exception:
[weblogic.common.ResourceException: Cannot load driver class: oracle.jdbc.Driver
.OracleDriver]
at weblogic.jdbc.common.JDBCService.addDeployment(JDBCService.java:110)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:608)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:592)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:352)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBean
s(ConfigurationMBeanImpl.java:484)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:354)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy7.addDeployment(Unknown Source)
at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(Dynam
icMBeanImpl.java:1448)
at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBe
anImpl.java:858)
at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBe
anImpl.java:810)
at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(Conf
igurationMBeanImpl.java:288)
at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.j
ava:1356)
at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.j
ava:1331)
at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:
303)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy75.setTargets(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.console.info.FilteredMBeanAttribute.doSet(Filtere
dMBeanAttribute.java:89)
at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(D
oEditMBeanAction.java:116)
at weblogic.management.console.actions.internal.ActionServlet.doAction(A
ctionServlet.java:167)
at weblogic.management.console.actions.internal.ActionServlet.doPost(Act
ionServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2456)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2039)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
--------------- nested within: ------------------
weblogic.management.DistributedOperationUpdateException: Error creating connecti
on pool - with nested exception:
[weblogic.management.DeploymentException: Error creating connection pool - with
nested exception:
[weblogic.common.ResourceException: Cannot load driver class: oracle.jdbc.Driver
.OracleDriver]]
at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBean
s(ConfigurationMBeanImpl.java:494)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:354)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:44>
However, i set the CLASSPATH & PATH of my startWebLogic.cmd as follows:
set PATH=c:\orant\bin;d:\bea\wlserver6.1\bin\oci817_8;.\bin;%PATH%
set CLASSPATH=.;.\lib\weblogic_sp.jar;.\lib\weblogic.jar;.\samples\eval\cloudscape\lib\cloudscape.jar;.\config\examples\serverclasses;c:\orant\jdbc\lib\classes111.zip
AND, i have written a small program that uses JDBC (without weblogic) to query
a table
on the Oracle (using the pool's URL in the properties for getting the Connection
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORC1", "scott",
"tiger");
and that program works fine.
Can anyone tell me what is wrong?? it seems that everything is in order (with
respect to CLASSPATH, PATH etc..)
hope someone can solve my problem
thanx and regards
marcoyour url should be
jdbc:oracle:thin:@127.0.0.1:1521:ORC1
notice the ':' before the '@'.
sree
"Marco" <[email protected]> wrote in message
news:[email protected]...
Hi Sree,
You have to place the classes11.zip file in the beginning of the classpath.i did it. my CLASSPATH is now
CLASSPATH=c:\orant\jdbc\lib\classes111.zip;.;.\lib\weblogic_sp.jar;.\lib\web
logic.jar;.\samples\eval\cloudscape\lib\cloudscape.jar;.\config\examples\ser
verclasses
But now, when i assign the target, the exception is:
--------------- nested within: ------------------
weblogic.management.DistributedOperationUpdateException: Error creating
connecti
on pool - with nested exception:
[weblogic.management.DeploymentException: Error creating connection pool -
with
nested exception:
[weblogic.common.ResourceException: weblogic.common.ResourceException:
Could not create pool connection. The DBMS driver exception was:
java.sql.SQLException: Sub Protocol must be specified in connection URL
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:352)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:102)
at
weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(Con
nectionEnvFactory.java:192)
at
weblogic.jdbc.common.internal.ConnectionEnvFactory.createResource(Con
nectionEnvFactory.java:134)
at
weblogic.common.internal.ResourceAllocator.makeResources(ResourceAllo
cator.java:698)
at
weblogic.common.internal.ResourceAllocator.<init>(ResourceAllocator.j
ava:282)
at
weblogic.jdbc.common.internal.ConnectionPool.startup(ConnectionPool.j
ava:629)
at
weblogic.jdbc.common.JDBCService.addDeployment(JDBCService.java:107)
at
weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at
weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at java.lang.reflect.Method.invoke(Native Method)
at
weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:608)
at
weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
java:592)
at
weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:352)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at
weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBean
s(ConfigurationMBeanImpl.java:484)
at
weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:354)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at
weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at
weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy8.addDeployment(Unknown Source)
at weblogic.management.internal.DynamicMB>
what is SubProtocol???
my ConnectionPool is configured as follows:
Name: MyJDBC Connection Pool
URL : jdbc:oracle:[email protected]:1521:ORC1
Driver: oracle.jdbc.driver.OracleDriver
Properties: user=SCOTT
Password : tiger
can u help me???
thanx in advance and regards
marco
>
>
at
weblogic.jdbc.common.JDBCService.addDeployment(JDBCService.java:110)
at
weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at
weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at java.lang.reflect.Method.invoke(Native Method)
at
weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:608)
at
weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
java:592)
at
weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:352)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at
weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBean
s(ConfigurationMBeanImpl.java:484)
at
weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:354)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at
weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at
weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy7.addDeployment(Unknown Source)
at
weblogic.management.internal.DynamicMBeanImpl.updateDeployments(Dynam
icMBeanImpl.java:1448)
at
weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBe
anImpl.java:858)
at
weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBe
anImpl.java:810)
at
weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(Conf
igurationMBeanImpl.java:288)
at
com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.j
ava:1356)
at
com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.j
ava:1331)
at
weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:
303)
at
weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy75.setTargets(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at
weblogic.management.console.info.FilteredMBeanAttribute.doSet(Filtere
dMBeanAttribute.java:89)
at
weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(D
oEditMBeanAction.java:116)
at
weblogic.management.console.actions.internal.ActionServlet.doAction(A
ctionServlet.java:167)
at
weblogic.management.console.actions.internal.ActionServlet.doPost(Act
ionServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:265)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2456)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2039)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
--------------- nested within: ------------------
weblogic.management.DistributedOperationUpdateException: Error creating
connecti
on pool - with nested exception:
[weblogic.management.DeploymentException: Error creating connection pool
with
nested exception:
[weblogic.common.ResourceException: Cannot load driver class:
oracle.jdbc.Driver
OracleDriver]]
at
weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBean
s(ConfigurationMBeanImpl.java:494)
at
weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:354)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at
com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at
weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:44>
However, i set the CLASSPATH & PATH of my startWebLogic.cmd as follows:
set PATH=c:\orant\bin;d:\bea\wlserver6.1\bin\oci817_8;.\bin;%PATH%
set
CLASSPATH=.;.\lib\weblogic_sp.jar;.\lib\weblogic.jar;.\samples\eval\cloudsc
a
pe\lib\cloudscape.jar;.\config\examples\serverclasses;c:\orant\jdbc\lib\clas
ses111.zip
AND, i have written a small program that uses JDBC (without weblogic)
to
query
a table
on the Oracle (using the pool's URL in the properties for getting the
Connection
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORC1",
"scott",
"tiger");
and that program works fine.
Can anyone tell me what is wrong?? it seems that everything is in order
(with
respect to CLASSPATH, PATH etc..)
hope someone can solve my problem
thanx and regards
marco -
Error when changing Oracle thin driver to Bea's Oracle driver
Hi All !
I was using this code with WL9.2 and Oracle 10 until recently with an Oracle thin driver
URL: jdbc:oracle:thin:@[x.x.x.x]:1521:[SID]
Driver Class: oracle.jdbc.xa.client.OracleXADataSource
Now this was changed to
URL: jdbc:bea:oracle://[x.x.x.x]:1521
Class Driver Name: weblogic.jdbcx.oracle.OracleDataSource
(Bea's oracle driver)
but the code is not ok.
The error is Caused by: java.lang.ClassCastException: weblogic.jdbc.wrapper.CallableStatement_weblogic_jdbcx_base_BaseCallableStatementWrapper
at com.esi.packages.dataaccess.pagination.ResolvePackageCriteriaPageProvider.getRPCSQLOfPackage(ResolvePackageCriteriaPageProvider.java:1208
(this is the line where the cast of the result connection.prepareCall() is happenning).
I tried different CallableStatement objects, from Bea but no success. Any idea/working example about this?
The code follows:
org.hibernate.Session session = this.getSession();
String sqlCode = null;
OracleThinClob sqlClobCode = null;
StringBuffer sb = new StringBuffer();
java.sql.Connection connection = null;
try {
connection = session.connection();
connection.setAutoCommit(false);
try {
OracleCallableStatement proc = (OracleCallableStatement) connection.prepareCall("{ ? = call packages_pkg.clob_get_sql_psd_and_package (?,?,?,?,?) }");
proc.registerOutParameter(1, Types.CLOB);
proc.setString(2, pkgStatus);
proc.setLong(3, packageSk); // pkg sk
proc.setDate(4, new java.sql.Date(date.getTime())); //date
proc.setString(5, null);
if(null == provinceSk){
proc.setNull(6, java.sql.Types.NUMERIC); //province sk
}else{
proc.setLong(6, provinceSk); //province sk
ResultSet rs = null;
try {
proc.execute();
sqlClobCode = (OracleThinClob)proc.getClob(1);
Writer clobWriter = ((OracleThinClob)sqlClobCode).getCharacterOutputStream();
if(null != clobWriter){
try {
char[] buf = new char[32000];
buf[0] = '\0';
sqlClobCode.getChars(1, sqlClobCode.getChunkSize(), buf);
sb.append(buf);
} catch(Exception exception) {
logger.debug("Cannot read the SQL from CLOB that resolves the package");
throw exception;
sqlCode = sb.toString();
}catch(Exception e){
logger.error("Cannot retrieve the benefits types from the database.");
throw new RuntimeException("Cannot retrieve the benefits types from the database.");
}finally {
if(null != rs){
rs.close();
if(null != proc){
proc.close();
}Horatiu Stanciu wrote:
Hi All !
I was using this code with WL9.2 and Oracle 10 until recently with an Oracle thin driver
URL: jdbc:oracle:thin:@[x.x.x.x]:1521:[SID]
Driver Class: oracle.jdbc.xa.client.OracleXADataSource
Now this was changed to
URL: jdbc:bea:oracle://[x.x.x.x]:1521
Class Driver Name: weblogic.jdbcx.oracle.OracleDataSource
(Bea's oracle driver)
but the code is not ok.
The error is Caused by: java.lang.ClassCastException: weblogic.jdbc.wrapper.CallableStatement_weblogic_jdbcx_base_BaseCallableStatementWrapper
at com.esi.packages.dataaccess.pagination.ResolvePackageCriteriaPageProvider.getRPCSQLOfPackage(ResolvePackageCriteriaPageProvider.java:1208
(this is the line where the cast of the result connection.prepareCall() is happenning).The weblogic.jdbc.vendor.oracle.OracleCallableStatement
is for obtaining access to some Oracle's non-standard
methods:
void registerIndexTableOutParameter(int i, int j, int k, int l) throws java.sql.SQLException;
void registerOutParameter(int i, int j, int k, int l) throws java.sql.SQLException;
java.sql.ResultSet getCursor(int i) throws java.sql.SQLException;
java.io.InputStream getAsciiStream(int i) throws java.sql.SQLException;
java.io.InputStream getBinaryStream(int i) throws java.sql.SQLException;
java.io.InputStream getUnicodeStream(int i) throws java.sql.SQLException;
You're not calling any of those. Good. Just remove the cast. Stick to standard
JDBC if you can. Also, note the comments I added about your setAutoCommit() call.
Joe
I tried different CallableStatement objects, from Bea but no success. Any idea/working example about this?
The code follows:
org.hibernate.Session session = this.getSession();
String sqlCode = null;
OracleThinClob sqlClobCode = null;
StringBuffer sb = new StringBuffer();
java.sql.Connection connection = null;
try {
connection = session.connection();
connection.setAutoCommit(false); // DON'T DO THIS!! I SEE NO COMMIT. LET WEBLOGIC HANDLE ANY TX.
try {
OracleCallableStatement proc = connection.prepareCall("{ ? = call packages_pkg.clob_get_sql_psd_and_package (?,?,?,?,?) }");
proc.registerOutParameter(1, Types.CLOB);
proc.setString(2, pkgStatus);
proc.setLong(3, packageSk); // pkg sk
proc.setDate(4, new java.sql.Date(date.getTime())); //date
proc.setString(5, null);
if(null == provinceSk){
proc.setNull(6, java.sql.Types.NUMERIC); //province sk
}else{
proc.setLong(6, provinceSk); //province sk
ResultSet rs = null; // WHY IS THIS HERE?
try {
proc.execute();
sqlClobCode = (OracleThinClob)proc.getClob(1);
Writer clobWriter = ((OracleThinClob)sqlClobCode).getCharacterOutputStream();
if(null != clobWriter){
try {
char[] buf = new char[32000];
buf[0] = '\0';
sqlClobCode.getChars(1, sqlClobCode.getChunkSize(), buf);
sb.append(buf);
} catch(Exception exception) {
logger.debug("Cannot read the SQL from CLOB that resolves the package");
throw exception;
sqlCode = sb.toString();
}catch(Exception e){
logger.error("Cannot retrieve the benefits types from the database.");
throw new RuntimeException("Cannot retrieve the benefits types from the database.");
}finally {
if(null != rs){
rs.close();
if(null != proc){
proc.close(); -
Problem with Oracle Thin Driver
I use the Thin Oracle Driver (ojdbc14.jar) in my project and execute the code below.
import java.sql.*;
class dbAccess
public static void main(String args[]) throws SQLException
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection(
"jdbc:oracle:thin:@dbhost:1521:ORA1",
"scott",
"tiger");
// @machine:port:SID, userid, password
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select BANNER from SYS.V_$VERSION");
while (rset.next())
System.out.println(rset.getString(1)); // Print col 1
stmt.close();
}But then a exception occurs: "java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection".
Whats wrong? Do I need to install Oracle? I didn't. I just use that jar file because I read that I don't need anything else.1) I never configured that url, used the class from a example.
2) I didn't configure username / password.
3) As I said, Oracle is not installed at all. I only use the jar file.
I read:
> I want to create a Java application which runs on many 400 MHz
laptops. Do I need to install Oracle completely on all these laptops
to use Oracle database? Or can I install a "light" version, which
doesn't use much harddisk space, RAM and prozessor time? If yes, how
much harddisk space, RAM and prozessor time does it cost me?
Since you're writing a Java application, I'm assuming that you'll be
using JDBC to connect to the database. If so, you just need to
download the JDBC thin driver to the client machines-- no Oracle
software needs to be installed.What is the solution? -
JDBC thin driver connection problems using cybersafe authentication
Hi
i am trying to use jdbc thin driver to connect to oracle 8.1.7 DB using ASO and cybersafe authentication.
Question:
Does the oracle jdbc thin driver in 8.1.7.0.0 support third-party authentication features supported by Oracle Advanced Security--such
as those provided by RADIUS, Kerberos, or SecurID
i am getting the following error.
Exception in thread "main" java.sql.SQLException: invalid arguments in call
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java)
at java.sql.DriverManager.getConnection(DriverManager.java:517)
at java.sql.DriverManager.getConnection(DriverManager.java:146)
at ASOJdbc.main(ASOJdbc.java:43)
Following is the program i am trying.
public class ASOJdbc {
public static void main(String args[]) throws SQLException {
String url = "jdbc:oracle:thin:@son1129:1521:sonias";
Connection con;
String query = "select EMPNO, ENAME from EMP";
Statement stmt;
// ASO Stuff
Properties props = new Properties();
try {
props.put("oracle.net.authentication_services", "CYBERSAFE");
props.put("oracle.net.authentication_gssapi_service", "oracle/[email protected]");
props.put("oracle.net.encryption_types_client", "DES");
props.put("oracle.net.encryption_types_server", "DES");
props.put("oracle.net.crypto_seed", "4fhXXXX");
} catch (Exception e) { e.printStackTrace();
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// ASO
con = DriverManager.getConnection(url, props);
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
stmt.close();
con.close();
jdk version: jdk 1.3.1
Oracle jdbc driver information, which i obtained as per Note 94091.1
=============
Database Product Name is Oracle
Database Product Version is Oracle8i Enterprise Edition Release 8.1.7.1.1 - Production With the Partitioning option
JServer Release 8.1.7.1.1 - Production
JDBC Driver Name is Oracle JDBC driver
JDBC Driver Version is 8.1.7.0.0
JDBC Driver Major Version is 8
JDBC Driver Minor Version is 11. What JDBC Thin client Driver are you using? (version) If you don't know, open up the Manifest.
2. the JDBC/OCI driver is a thick driver. It uses the oracle client, and therefore should read the tnsnames.ora
3. You have yet to give us any ORA- errors, which would help immensely in troubleshooting.
Maybe you are looking for
-
Free goods tick mark coming automatically in PO?
Hi Gurus, While creating PO, free goods tick mark coming automatically in PO if i m entering net price.. I have checked material master as well as vendor master.Nowhere free good maintained in both. Then, why it is picking automatically in PO? Pls he
-
Issue with Custom Field updation through BAPI FM
Hi All, I am going to update some custom filelds in BUt050. So for these custom fields, I want to fill buffer memory so that I can track the changes through buffer. So I was calling FM BAPI_BUPR_CONTP_CHANGE and passing following parameters.
-
How old must someone be for an apple account
I bought my grand daughter an iPad Mini. How do I set up an account for her in her name if she is underage
-
TZ database and oracle timezone conversions
Hi There, I was wondering if oracle has any inbuilt functionality to convert; -- a given date in UTC -- to a given timezone -- considering the daylight savings -- which (was/is/will) observe(d) on the target timezone at the time of the given date? I
-
How to open photos as a list?
Hello, I've always been annoyed at iPhoto's inability to resize images – especially since Preview can. So I made a droplet to resize images for me (see end) and set it as my external editor. Unfortunately, if I try to open multiple images from iPhoto