Compatability of oracle 8i/9i to thin driver
Hi,
I am new to JDBC. will you please tell me whether Oracle 8i / 9i is compatable to use JDBC thin driver.
If so, what is the SID name i need to give. Let's say i have installed oracle 9i on my machine. and set the class path to "classes12.jar". where i need to create SID name. what SID name i need to give there.
If i am using JDBC 2nd driver :
con = DriverManager.getConnection ("jdbc:oracle:oci8:@orcl", "scott", "tiger");
what i need to give at "oci8" and "orcl".... or these are required to be give as it is..?
though it's a simple question please answer my question.
jdbc:oracle:thin:@youmachinename:1521:myDbSID
here after @ mention your database url , 1521 is default port number and after port number mention your SID
Similar Messages
-
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 -
Hi,
I'm using the build-in Oracle 8.1.6 thin driver that comes with
weblogic.jar of WebLogic 6.0 SP2. It doesn't store CLOBs. Here I have
to use the class weblogic.jdbc.common.OracleClob. Why?
WebLogic 5.1 SP 9 + Oracle 8.1.6 thin driver (external) does. Here I
use the class oracle.sql.CLOB.
Must I use a OCI driver?
Thanks,
JuergenI'd also recommend to switch to 8.1.7 thin driver. It's more stable.
Regards,
Slava Imeshev
"NhaBep" <[email protected]> wrote in message
news:3b71bbcf$[email protected]..
>
You can use thin driver to persist CLOB. One thing you must be sure to setautocommit
to false. Hope this help.
[email protected] (Juergen) wrote:
Hi,
I'm using the build-in Oracle 8.1.6 thin driver that comes with
weblogic.jar of WebLogic 6.0 SP2. It doesn't store CLOBs. Here I have
to use the class weblogic.jdbc.common.OracleClob. Why?
WebLogic 5.1 SP 9 + Oracle 8.1.6 thin driver (external) does. Here I
use the class oracle.sql.CLOB.
Must I use a OCI driver?
Thanks,
Juergen -
Oracle 8.1.7 Thin Driver Resultsets
A simple question I hope.
We are using the Oracle 8.1.7 thin driver to connect Weblogic 6.0sp2 to an Oracle
8 db. My question is regarding how the resultset is passed to the server. Is
there cacheing? If so, is the cache recycled..i.e. for a 1000 row set are rows
fed to the server 100 at a time? Or is the entire resultset passed at once.
A general description of this transation or pointers to documentation would be
greatly appreciated. Thanks for your consideration,
JasonJason Carter wrote:
A simple question I hope.
We are using the Oracle 8.1.7 thin driver to connect Weblogic 6.0sp2 to an Oracle
8 db. My question is regarding how the resultset is passed to the server. Is
there cacheing? If so, is the cache recycled..i.e. for a 1000 row set are rows
fed to the server 100 at a time? Or is the entire resultset passed at once.
A general description of this transation or pointers to documentation would be
greatly appreciated. Thanks for your consideration,
JasonHi. This is entirely an oracle DBMS and driver question. From what I can glean from
oracle documentation, there is a settable driver property which sets how many rows
the driver gets in one request. This implies the DBMS and driver will cooperate to
get a given result set in chunks.
Joe -
WebLogic 5.1.0 & Oracle 8.1.7 thin driver for jdk 1.3.1
We're currently using Oracle 8.1.6, and need to upgrade to 8.1.7.
Platform: Solaris 2.6
WebLogic: 5.1 Service Pack 9
JDK : 1.3.1
Regarding the thin drivers, my understanding is that w/ 8.1.7, we can use either
8.1.7 OR 9.0.1 thin drivers. Has anyone seen issues using either thin driver
w/ Oracle 8.1.7 and WebLogic?
Thanks in advance!
-Chad BakerRegarding the thin drivers, my understanding is that w/ 8.1.7, we can use either
8.1.7 OR 9.0.1 thin drivers. Has anyone seen issues using either thin driver
w/ Oracle 8.1.7 and WebLogic?Chad,
We've used both thin drivers successfully under WebLogic 5.1, and
have been using the 9.0.1 thin driver under Weblogic 6.1 without any
problems. We moved to the 9.0.1 driver because it's the first driver
version to implement
PreparedStatement.setTimestamp(Timestamp,Calendar).
Recently, we started looking at using JMS and may need to use
distributed
transactions, and we're concerned about transaction support in the
thin
driver. Various WebLogic docs, like
http://e-docs.bea.com/wls/docs61///notes/issues.html#1048698, mention
that 8.1.7 has XA threading issues that cause problems in distributed
transactions. In one place, they mention that they may have a
workaround, but it's unclear what the status of that is. And it looks
like they definitely haven't gotten to testing
the 9.0.1 driver. If you're interested in distributed transactions,
you might want to investigate that first.
Jim -
How can I do "2PC" WLS6.0 + oracle 8.1.6 (thin driver )
Access oracle db by sys user and execute initjvm.sql and initxa.sql.
And then grant "select" priviledge on dba_pending_transactions to users that you
want to use to make dbpool.
"jongho cha" <[email protected]> wrote:
>
Hi gurus ^^
I'm trying to do two phase commit with wls6.0 and oracle 8.1.6.
and I used oracle thin driver ( supports jdbc2.0 )
part from my config.xml --
<JDBCTxDataSource EnableTwoPhaseCommit="true"
JNDIName="testTXDataSource" Name="testTXDataSource"
PoolName="testPool" Targets="myserver"/>
<JDBCConnectionPool CapacityIncrement="2"
DriverName="oracle.jdbc.xa.client.OracleXADataSource"
InitialCapacity="1"
LoginDelaySeconds="0"
MaxCapacity="10"
Name="testPool" Properties="user=uskeic;password=dba;url=jdbc:oracle:thin:@remote_oracle_db_ip:1521:dbname;dataSourceName=testPool"
ShrinkPeriodMinutes="15" ShrinkingEnabled="false"
Targets="myserver" TestConnectionsOnReserve="true"
TestTableName="dual" URL="jdbc:oracle:thin:@remote_oracle_db_ip:1521:dbname"/>
is it right configuration ?
basically , it looks like there's no problem when the WLS starts.
but if I get Conncetion from txDatasource and createStatement from the
connection
, I got some Exception
it tells like ..
java.sql.SQLException: ORA-06550: column 1, row14:PLS-00201: 'JAVA_XA.XA_START'
specifier must be defined
ORA-06550: column 1, row8:PL/SQL: Statement ignored
and blah blah blah...
my code starts here ,,
Connection con = null ;
XAConnection xaCon = null ;
Statement stmt = null ;
UserTransaction tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
tx.begin();
Context jndiContext = JNDIService.getInitialContext();
XADataSource xaDataSource = (XADataSource)jndiContext.lookup( txDataSourceName
xaCon = xaDataSource .getXAConnection();
con = xaCon.getConnection(); // OK so far
stmt = con.createStatement() ; // Error HERE !!!
// ..... and do another DB works for testing 2PC
tx.commit();
you know, it's not a complete code . actually , it's like a psuedo code
but the way of getting connection and create statement follows my entire
code.
Can any one help me ? ^^;
Thanks in advance . -
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. -
Oracle proxy authetication and thin driver
Hello,
I am using 10g, and bea 81 sp3, I am trying to setup proxy authetication. All the references I find for proxy authetication are using OCI driver. Is proxy authetication supported using oracle 10g thin driver (ojdbc14.jar)? Can anyone tell me, what drivers are support proxy authetication under oracle 10g?
Also application servers like bea will not give you oracledata source if you use bea to setup oracle connection pool, is there a easy work around that?
appreciate,
ShaileshReplace this line:
DriverManager.registerDriver(new racle.jdbc.OracleDriver());with this one:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); -
Problem with oracle 9i personal and thin driver
hi all,
this is the code i test the connection of thin driver and oracle 9i personal database.
but i got the error below, could someone tell me where i did wrong.
thank you...
import java.sql.*;
import java.math.*;
import java.io.*;
import java.awt.*;
import oracle.jdbc.driver.*;
class JdbcTest
public static void main(String arg[])
try
// load oracle driver
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
//connect to the local database
Connection connection = DriverManager.getConnection
("jdbc:oracle:thin:@myhost:1521:ORCL","scott","tiger");
Statement statement = connection.createStatement();
ResultSet resultset = statement.executeQuery("SELECT ename FROM emp");
//print the name out
while(resultset.next())
System.out.println(resultset.getString(1));
//close the resultset, statement, and connection
resultset.close();
statement.close();
connection.close();
catch(SQLException sqle)
System.err.println(sqle);
} C:\CODE-JDBC\ORACLE\TEST-CONNECT>java JdbcTest
java.sql.SQLException: Io exception: The Network Adapter could not establish the connectionReplace this line:
DriverManager.registerDriver(new racle.jdbc.OracleDriver());with this one:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); -
Able to make dirty read using Oracle 9i and JDBC thin driver v 9.2.0
I've searched this forum and did not see anything to directly answer my question.
I checked the Oracle JDBC Frequently Asked Questions...
ditto (perhaps due to the fact that it was last updated: 22 June 2001).
So here is my question, and thank you in advance for any insight (apologies if I have missed finding an already answered question):
Section 19-15 of:
"JDBC Developerâs Guide and Reference"
(which is for Oracle 9i database)
downloadable from:
http://download-east.oracle.com/docs/cd/B10501_01/java.920/a96654.pdf
is entitled:
"Transaction Isolation Levels and Access Modes"
The section seems to indicate that
if JDBC connection A is setup with:
setAutoCommit(false)
setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED)
and then used to perform an update on a row (no commit(), rollback(), or close() yet) ...
then JDBC connection B (setup in the same way) will be prevented from
making a dirty read of that same row.
While this behavior (row-level locking) occurs correctly when using MS SQL Server 2000,
it is not occuring correctly with Oracle 9i and the Oracle Thin JDBC driver version 9.2.0.
The test case I have shows that with Oracle, connection B is able to make a dirty read
successfully in this case.
Am I doing something wrong here ?
Again, MS SQL Server correctly blocks connection B from making the Read until Connection A
has been either committed, rolled back, or closed, at which time connection B is able to
complete the read because the row is now unlocked.
Is there a switch I must throw here ?
Again, any help is greatly appreciated.Thanks for the response.
I understand what you are saying...
that readers don't block writers in Oracle (the same is true in SQL Server 2000).
However, I don't see how my test case is working correctly with Oracle (the exact same code acting as I'm thinking it should with SQL Server, but I still think it is acting incorrectly with Oracle).
I have transaction A do this:
update <table> set <column2>=<value> where <column1>='1'
then I use Thread.sleep() to make that program hang around for a few minutes.
Meanwhile I sneak off and start another program which begins transaction B. I have transaction B do this:
select * from <table> where <column1>='1'
and the read works immediately (no blocking... just as you have said) however, transaction A is still sleeping, it has not called commit() or rollback() yet.
So what if transaction A were to call rollback(), the value read by transaction B would be incorrect wouldn't it ?
Both A and B use setAutoCommit(false) to start their transactions, and then call setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED).
Isn't that supposed to guarantee that a reader can only read what is committed ?
And if a row is in "flux"... in the process of having one or more values changed, then the database cannot say what the value will be ?
I can almost see what you are saying.
In letting the reader have what it wants without making it wait, I suppose it could be said that Oracle is holding true to the "only let committed data be read"
So if that's it, then what if I want the blocking ?
I want an entire row to be locked until whoever it in the middle of updating, adding, or removing it has finished.
Do you know if that can be done with Oracle ? And how ?
Thanks again for helping me. -
Oracle 8.1.6 Thin Driver with Multiple Result Sets
We're using Oracle 8.1.6 on NT using the latest driver release.
Java 1.2.2
We're experiencing problems with resultSet.next when we have multiple result sets open. What appears to be happening when you've read the last result set entry do a .next() call which should result in a false value we actually get java.sql.SQLException: ORA-01002: fetch out of sequence.
This seems to us that the driver is trying to go beyond the end of the result set.
We've checked JDBC standards (and examples on this site) and the code we've got is compliant. We've also found that the code produces the correct results under Oracle 7.3.4 and 8.0.4.
I can also say that there is no other activity on the db, so there are no issues such as roll back segments coming into play.
Any solutions, help, advice etc would be gratefully appreciated!
nullPhil,
By "multiple result sets open", do you mean you are using REF Cursors, or do you have multiple statements opened, each with its own ResultSet? If you could post an example showing what the problem is, that would be very helpful.
You don't happen to have 'for update' clause in your SQL statement, do you?
Thanks -
Connect to oracle 8i using jdbc thin driver
Hi developers....
I am a new for java. jdk1.5.1,oracle 8i these are installed in my system.those are working well.Now i want to connect oracle database using Thindriver.I have no idea to write a code.Any one give an example for me.
My system name:developer
java :jdk1.5.1
oracle :8i
Thank u
with reguards
sure....:)http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/index.html
http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.html -
Hi, We are using Weblogic 6.1. We are currently using JDBC Oracle Thin Driver (ClassName
: oracle.jdbc.driver.OracleDriver) that is built into Weblogic 6.1 (weblogic.jar).
Our database is Oracle 8.1.7.4. We want to upgrade to Oracle 9i (Oracle version
9.2.0.4). I would like to know the compatibility of this built-in Driver for Weblogic
6.1 with Oracle 9i (9.2.0.4) and can I continue to use the same JDBC driver. Also
we have plans to upgrade our Weblogics to 8.1 version. Can we continue to use
the same Oracle Thin driver that comes as part of WLS 8.1, for Oracle 9.2.0.4.
I need this reply ASAP. I appreciate any help in this regard.
Thanks, Venkatesan.Thank you very much for your reply.
Joe Weinstein <[email protected]> wrote:
Hi. The driver we shipped will still work with the later DBMS, but there
have been many improvements and fixes to Oracle's dirver since then,
so I highly recommend that you download Oracle's latest appropriate
thin driver, and make sure it gets into the -classpath argument that
the weblogic startup script creates for the server.
Every release of weblogic will tend to include the latest oracle
thin driver available at the time, so the 8.1 will contain a newer one
than
the 6.1.
Joe
Venkatesan wrote:
Hi, We are using Weblogic 6.1. We are currently using JDBC Oracle ThinDriver (ClassName
: oracle.jdbc.driver.OracleDriver) that is built into Weblogic 6.1(weblogic.jar).
Our database is Oracle 8.1.7.4. We want to upgrade to Oracle 9i (Oracleversion
9.2.0.4). I would like to know the compatibility of this built-in Driverfor Weblogic
6.1 with Oracle 9i (9.2.0.4) and can I continue to use the same JDBCdriver. Also
we have plans to upgrade our Weblogics to 8.1 version. Can we continueto use
the same Oracle Thin driver that comes as part of WLS 8.1, for Oracle9.2.0.4.
I need this reply ASAP. I appreciate any help in this regard.
Thanks, Venkatesan. -
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 -
Steps to load Oracle JDBC Thin driver onto Tomcat
I have Oracle JDBC working with thin driver on my local Tomcat container and now need to put it on a server but forgot how I set it up and want to make sure I do it correctly when I put it on the server.
Please advise if this is correct?
1- Load the thin driver (ojdbc14.jar ) in Tomcat 4.1.27 Container into the common/lib directory
2- Set the classpath on the Windows server to allow me to use the ojdbc14.jar driver?
If so then I need to do this using Windows DOS where I add the thin driver to my Classpath?
Set CLASSPATH=%CLASSPATH%;C:\TomcatHome\common\lib\servlet-api.jar;C:\TomcatHome\common\lib\ojdbc14.jar
Or do I NOT need to set the classpath and just restart the Tomcat container??Thanks,
I loaded the ojdbc14.jar file in common/lib and restarted the container and I can now connect to Oracle.
What you mean by not needing ojdbc14 for compilation and it would be better to use a build tool[b] to do what?
Maybe you are looking for
-
IPhone photos not showing up on Mac
I have an iPhone 6 plus running iOS 8.1.1. I have iCloud Photos beta turned on. When I connect the iPhone to my mac (mavericks, yosemite show same result) (or another mac, haven't tried a PC) it shows only 373 photos & videos when I have 2000. I cann
-
Storing data in arrays and using Stirng methods
Hi There! Could any one help me in developing a kind of "PhoneBook" in java? Coding for the following program is required in java(jdk1.2). The problem is to program a PhoneBook in the following way when the program executes A list of following option
-
Hi All, I have a event DISPLAY of the BOR Object ZTESTBOR. The Event DISPLAY has a parameter 'Matnr' of type mara-matnr. Now i want to start a work flow when the event is triggered. So i have done the binidng in the worl flow. How can i pass a value
-
CREATE VIEW with PreparedStatement
Hi guys, I'm trying to run a CREATE VIEW statement, which I have been doing up till now just using a regular Statement, and using the executeUpdate() method. It's been working fine for a while, and now i've hit a bit of a problem. I can't include a W
-
New nVidia 6.70 drivers
Recently i got nVidia nForce 6.53 drivers on my computer installed, they are working well. I would like to install the latest nForce 6.70 from nVidia and i am not sure how to do it. Do i have to uninstall the old ones first ? Thanks in advance.