JDBC & Oracle
I have a Java program writes user data into a table in an Oracle database, using JDBC as the API.
Before writing, it will check for the duplication in primary key data field. Therefore, if the user enters an existing data for that field, it won't write anything to the database.
It closes the connection regardless the write process succeeded for failed.
I tested the program a few times and found that it could connect to the database and write data to the table as well.
The problem now is, if I delete data rows from the Oracle SQL+ console using SQL statements, the deletions are not "detected" by the Java program, i.e. it still "considers" the deleted data as existing in the database.
Does this problem has anything to do with connection pooling? Or the Java program "caches" the data retrieved earlier locally?
The problem now is, if I delete data rows from the
Oracle SQL+ console using SQL statements, the
deletions are not "detected" by the Java program, i.e.
it still "considers" the deleted data as existing in
the database.If you delete from the SQL console, you must 'commit' the data or the Java program will never see the deletes.
If you have already issued (executed) the select in the Java program, Oracle will not refresh your current ResultSet, so you will not see the deletes in that instance.
There are also different cursor types that could also make this symptom better or worse depending on your current cursor state and the total number of users / programs updating the rows.
Most of this is related to table locking...
The sequence of events where you will see the deletes in the Java program will be:
1) Execute Java program;
2) Execute deletes through SQL*PLUS and commit the changes;
3) Execute a select in the Java program;
4) The rows will be gone.
Just as importantly, what are you hoping to do, or are you just testing to see how it works?
Similar Messages
-
Trying to Install RMS application 13.2.2 and I get past the pre-installation checks and when I get to the Data Source details and enter the data source details with the check box checked to validate the schema/Test Data Source I get the following error:
Error Connecting to database URL jdbc:oracle:oci:@rmsdbtst as user rms13 java.lang.Exception:UnsatisfiedLinkError encountered when using the Oracle driver. Please check that the library path is set up properly or switch to the JDBC thin client oracle/jdbc/driver/T2CConnection.getLibraryVersioNumber()
Checks performed:
RMS Application code location and directory contents:
[oracle@test-rms-app application]$ pwd
/binary_files/STAGING_DIR/rms/application
[oracle@test-rms-app application]$ ls -ltr
total 144
-rw-r--r-- 1 oracle oinstall 272 Dec 7 2010 version.properties
-rw-r--r-- 1 oracle oinstall 405 Jan 16 2011 expected-object-counts.properties
-rw-r--r-- 1 oracle oinstall 892 May 13 2011 ant.install.properties.sample
-rw-r--r-- 1 oracle oinstall 64004 Jun 6 2011 build.xml
drwxr-xr-x 9 oracle oinstall 4096 Jun 16 2011 rms13
drwxr-xr-x 3 oracle oinstall 4096 Jun 16 2011 installer-resources
drwxr-xr-x 3 oracle oinstall 4096 Jun 16 2011 antinstall
drwxr-xr-x 2 oracle oinstall 4096 Jun 16 2011 ant-ext
drwxr-xr-x 5 oracle oinstall 4096 Jun 16 2011 ant
-rw-r--r-- 1 oracle oinstall 11324 Dec 18 09:18 antinstall-config.xml.ORIG
-rwxr-xr-x 1 oracle oinstall 4249 Dec 18 10:01 install.sh
drwxr-xr-x 4 oracle oinstall 4096 Dec 18 10:06 common
-rw-r--r-- 1 oracle oinstall 16244 Dec 19 10:37 antinstall-config.xml
-rw-r--r-- 1 oracle oinstall 689 Dec 19 10:37 ant.install.log
[oracle@test-rms-app application]$
Application installation:
[oracle@test-rms-app application]$ ./install.sh
THIS IS the driver directory
Verified $ORACLE_SID.
Verified SQL*Plus exists.
Verified write permissions.
Verified formsweb.cfg read permissions.
Verified Registry.dat read permissions.
Verified Java version 1.4.2.x or greater. Java version - 1.6.0
Verified Tk2Motif.rgb settings.
Verified frmcmp_batch.sh status.
WARNING: Oracle Enterprise Linux not detected. Some components may not install properly.
Verified $DISPLAY - 172.16.129.82:0.0.
This installer will ask for your "My Oracle Support" credentials.
Preparing installer. This may take a few moments.
Your internet connection type is: NONE
Integrating My Oracle Support into the product installer workflow...
[move] Moving 1 file to /binary_files/STAGING_DIR/rms/application
Installer preparation complete.
MW_HOME=/u01/app/oracle/Middleware/NewMiddleware1034
ORACLE_HOME=/u01/app/oracle/Middleware/NewMiddleware1034/as_1
ORACLE_INSTANCE=/u01/app/oracle/Middleware/NewMiddleware1034/asinst_1
DOMAIN_HOME=/u01/app/oracle/Middleware/NewMiddleware1034/user_projects/domains/rmsClassDomain
WLS_INSTANCE=WLS_FORMS
ORACLE_SID=rmsdbtst
JAVA_HOME=/u01/app/oracle/jrockit-jdk1.6.0_45-R28.2.7-4.1.0
Launching installer...
To make sure I have connectivity from the app server to the database (on a database server) here are the steps followed:
[oracle@test-rms-app application]$ tnsping rmsdbtst
TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 19-DEC-2013 10:41:40
Copyright (c) 1997, 2008, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = test-rms-db.vonmaur.vmc)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = rmsdbtst)))
OK (0 msec)
[oracle@test-rms-app application]$
[oracle@test-rms-app application]$ sqlplus rms13@rmsdbtst
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Dec 19 10:46:18 2013
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@test-rms-app application]$
[oracle@test-rms-app application]$ ping test-rms-db
PING test-rms-db.vonmaur.vmc (192.168.1.140) 56(84) bytes of data.
64 bytes from test-rms-db.vonmaur.vmc (192.168.1.140): icmp_seq=1 ttl=64 time=0.599 ms
64 bytes from test-rms-db.vonmaur.vmc (192.168.1.140): icmp_seq=2 ttl=64 time=0.168 ms
64 bytes from test-rms-db.vonmaur.vmc (192.168.1.140): icmp_seq=3 ttl=64 time=0.132 ms
64 bytes from test-rms-db.vonmaur.vmc (192.168.1.140): icmp_seq=4 ttl=64 time=0.158 ms
64 bytes from test-rms-db.vonmaur.vmc (192.168.1.140): icmp_seq=5 ttl=64 time=0.135 ms
--- test-rms-db.vonmaur.vmc ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.132/0.238/0.599/0.181 ms
[oracle@test-rms-app application]$
[oracle@test-rms-app application]$ uname -a
Linux test-rms-app.vonmaur.vmc 2.6.18-128.el5 #1 SMP Wed Jan 21 08:45:05 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
[oracle@test-rms-app application]$
[oracle@test-rms-app application]$ cat /etc/*-release
Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
[oracle@test-rms-app application]$
The database is created and all the batch file scripts have been successfully deployed. Now working on the application server. The Weblogic server is installed and 11g forms and reports are installed successfully.
Any help would be helpful.
Thanks,
Ram.Please check MOS Notes:
FAQ: RWMS 13.2 Installation and Configuration (Doc ID 1307639.1) -
How to specify JDBC Oracle url using deployment tool - Entity Bean
Hello I'am new to EJB.
When creating a entity bean-managed persistence and you need to specify the jdbc url with user name
and password to establish a connection object, how does one specify that in the deployment
tool?
Heres an example of what has in the J2EE tutorial has in AccountEJB to get an connection object
private String dbName = "java:comp/env/jdbc/AccountDB";
private void makeConnection() throws NamingException, SQLException {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
con = ds.getConnection();
Now if my oracle jdbc url is to be jdbc:oracle:thin:@Abe:1521:dev
ie My host is Abe, port number 1521 and database name of dev and username/password will be system/manager.
what would my dbName be at the top?
Would my JNDI lookup of a DataSource resource "java:comp/env/jdbc/AccountDB" become "java:comp/env/jdbc/dev" for starters?
In the Resource Factories Reference Code I've add a reference of
Coded Name: jdbc/dev
Type: javax.sql.DataSource
Authentication: Container
and down the bottom of the I've put JNDI Name: MyAccount
according to the AccountClient code of:
Context initial = new InitialContext();
Object objref = initial.lookup("MyAccount");
and put User Name of "system" and Password of "manager"
I'am sure in the source code I have to put
Class.forName("oracle.jdbc.driver.OracleDriver")
else you would get that no sutitable driver error, maybe you don't have to if ejb server is smart enough?
What I'am confuse about is where to specify the jdbc url of "jdbc:oracle:thin:@Abe:1521:dev" ??
Know it won't work because of this vital part. Do you have to put that somewhere else in the deployment tool or properties file, or some other tool??
Please help
Thanks
Abraham KhalilWhen running the client after successful deployment with jdbc, I'am getting
javax.naming.CommunicationException: java.rmi.MarshalException: CORBA MARSHAL 1398079699 Maybe; nested exception is:
org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : minor code: 1398079699 completed: Maybe
org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : minor code: 1398079699 completed: Maybe
at com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:923)
at com.sun.corba.ee.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:281)
at com.sun.corba.ee.internal.corba.TCUtility.unmarshalIn(TCUtility.java:274)
at com.sun.corba.ee.internal.corba.AnyImpl.read_value(AnyImpl.java:554)
at com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:605)
at com.sun.corba.ee.internal.iiop.CDRInputStream.read_any(CDRInputStream.java:252)
at com.sun.corba.ee.internal.javax.rmi.CORBA.Util.readAny(Util.java:203)
at javax.rmi.CORBA.Util.readAny(Unknown Source)
at org.omg.stub.com.sun.enterprise.naming._SerialContextProvider_Stub.lookup(Unknown Source)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:133)
at javax.naming.InitialContext.lookup(Unknown Source)
at AccountClient.main(AccountClient.java:21)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:151)
at javax.naming.InitialContext.lookup(Unknown Source)
at AccountClient.main(AccountClient.java:21)
One thing I don't like about EJB is that everything is transparent which is good! But its much
harder to debug! :( Tried to see if I can figure it out. Hope someone has seen this problem before? -
Error when using jdbc:oracle:kprb:
Hi folks!
I'm having a hard time trying to solve this one, here's the situation:
I've developed a java stored procedure and ulpoaded to the database using loadjava, which gave me no problems.
Then i've set permissions for the procedure:
BEGIN
dbms_java.grant_permission(
grantee => 'XMLADMIN',
permission_type => 'SYS:java.io.FilePermission',
permission_name => '/home/xmlgate/inbound/*',
permission_action => 'read');
dbms_java.grant_permission(
grantee => 'XMLADMIN',
permission_type => 'SYS:java.io.FilePermission',
permission_name => '/home/xmlgate/outbound',
permission_action => 'write');
dbms_java.grant_permission(
grantee => 'XMLADMIN',
permission_type => 'SYS:java.lang.RuntimePermission',
permission_name => 'setFactory',
permission_action => '');
dbms_java.grant_permission(
grantee => 'XMLADMIN',
permission_type => 'SYS:oracle.aurora.security.JServerPermission',
permission_name => 'Debug',
permission_action => '');
dbms_java.grant_permission(
grantee => 'XMLADMIN',
permission_type => 'SYS:oracle.aurora.security.JServerPermission',
permission_name => 'LoadClassInPackage.oracle.sql.*',
permission_action => '');
dbms_java.grant_permission(
grantee => 'XMLADMIN',
permission_type => 'SYS:oracle.aurora.security.JServerPermission',
permission_name => 'LoadClassInPackage.oracle.jdbc.*',
permission_action => '');
COMMIT;
END;
But when i run the code inside the databse it always gives java.lang.NullPointerException.
Here's the main class:
package packupload;
import java.sql.*;
import java.util.*;
import oracle.jdbc.driver.*;
public class connection {
// Return a JDBC Connection appropriately either outside or inside Oracle8i
public static Connection getConnection() throws SQLException {
String username = "xmladmin";
String password = "xxxxxxxx";
String thinConn = "jdbc:oracle:thin:@192.168.xxx.xxx:1521:www";
String default8iConn = "jdbc:oracle:kprb:";
Connection cn = null;
try {
// Register the JDBC Driver
Driver d = new oracle.jdbc.driver.OracleDriver();
//Connect with Native (kprb) Driver if inside Oracle8i
if (insideOracle8i())
cn = DriverManager.getConnection(default8iConn);
else
cn = DriverManager.getConnection(thinConn,username,password);
cn.setAutoCommit(false);
return cn;
} catch (Exception e) { throw new SQLException("Error Loading JDBC Driver" + insideOracle8i());
public static boolean insideOracle8i() {
// If oracle.server.version is non-null, we're running in the database
String ver = System.getProperty("oracle.server.version");
return (ver != null && !ver.equals(""));
Any help would be greatly aprecciated.
Pedro SilvaHi..
I did it but here i am wondering becoz my RFC connection SAPSLDAPI works fine
But at transaction SLDCHECK..it throws an error like
Calling function LCR_LIST_BUSINESS_SYSTEMS
Retrieving data from the SLD server...
Function call returned exception code 4
=> Check whether the SLD is running!
Summary: Connection to SLD does not work
=> Check SLD function and configurations
But the SLD URL pops up and opens wih put any error.in a same fashion,it happens in SXMB_ADM--> integration engine config.it says connections to SLD doesnot work
any idea to verify
Thanks
Gopal -
Installing JDBC, Oracle, PI 7
I am configuring a JDBC adapter (sender) in SAP PI 7, against a Oracle 10g database. My configuration is like this:
JDBC Driver: oracle.jdbc.driver.OracleDriver
Connection: jdbc:oracle:thin:@144.84.236.22:1531:ha1u
When starting the interface I get this error in the communication channel monitoring:
Error during database connection to the database URL 'jdbc:oracle:thin:@144.84.236.22:1531:ha1u' using the JDBC driver 'oracle.jdbc.driver.OracleDriver': 'com.sap.aii.adapter.jdbc.sql.DriverManagerException: Cannot estrablish connection to URL 'jdbc:oracle:thin:@144.84.236.22:1531:ha1u': ClassNotFoundException: oracle.jdbc.driver.OracleDriver'
Based on this I thought that the oracle drivers were not loaded. So I sent an email to the SAP PI admin. They did not know about this issue, and said that when they were attempting to install the driver they got the message "No upgrade needed". I have given them the "How to Install and Configure External Drivers for JDBC & JMS" document, but they have still no luck in correcting this issue.
This is real critical for me, so any input would greatly help. Is there anything wrong with my configuration? Is there anything I can tell my admins, that might help them fix the problem?We followed the description in this how to guide:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f04ce027-934d-2a10-5a8f-fa0b1ed4d88f
The only trick was to remember to select "Update deployed SDAs/SCAs that have any version" in step 1. This was the step that caused problem for our admins.
For compatability issues regarding JDBC drivers see SAP Note 831162.
We installed the ojdbc14.jar which so far has worked well against Oracle 10g. -
JDBC, Oracle: access denied
I can load Oracle driver
Class.forName("oracle.jdbc.driver.OracleDriver");
But in this string:
String url = "jdbc:oracle:thin:@195.52.61.6:1521:ORCL";
java.sql.Connection con = java.sql.DriverManager.getConnection(url, "SCOTT", "TIGER");
happens exception:
java.security.AccessControlException: access denied (java.net.SocketPermission 195.52.61.6:1521 connect,resolve)
I have found in this forum many same messages. Can anybody explain problem?Are you using an applet?
-
Problem in connectString = "jdbc:oracle:oci8@";
i get error in following lines.
=========================================
connectString = "jdbc:oracle:oci8@";
connection = DriverManager.getConnectionconnectString,"ORDMEDIADEMO",
"ORDMEDIADEMO");
===========================================
what should be there in connection string??? after @ , anything is to be specified??
I wrote my computer name(win2000server)...(p4.headquarter.local) .but it diden/t work.......plz help me.
thanksLook in the JDBC documentation.
What is your service name?
You can use a string like:
@(description=(address=(host=your_machine.your_domain.com)(protocol=tcp)(port=1521))(connect_data=(service_name=your_service.your_service_domain.com)))
Or you can use one of the definitions in your tnsnames.ora file @my_sid
Larry -
Hi all
When I try to make connection through this string jdbc:oracle:thin:@localhost:1521:orcl , It failed to connect to the database.
I am trying to connect to database through obiee 11.1.1.5 by jdbc connectivity.
Please tell me its solution.....
Thanks
Rizwan AliHi,
The TNSNAME.ora that the OBIEE11g uses is insede the folder <OBIEE11g_HOME>\Middleware_Home\Oracle_BI1\network\admin
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = IP address)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
Refer
http://123obi.com/2011/03/error-the-connection-has-failed-in-obiee-11g/
http://gerardnico.com/wiki/database/oracle/connect_descriptor
FYI: OTN Message:
1. If you just need one TNS alias, then copy the database connection descriptor from database tnsnames.ora file to the tnsnames.ora file under the BIEE directory:
[middleware home]/[oracle home]/Oracle_BI1/network/admin
2. You may also copy the entire tnsnames.ora file
3. Another alternative is to set the TNS_ADMIN environment varaible which would point to the directory where a tnsnames.ora file is located. This would need to be set as a System Environment variable in Windows or in the command shell if starting from a command-line. For Unix/Linux, it would need to configured in the user profile that owns the software or set explicitly in the shell if starting from the command-line. See Note 111942.1 Setting TNS_ADMIN Environment Variable for more information on adding this environment variable.
Thanks
Deva -
JDBC-ORACLE CONNECTIVITY ISSUE WITYH OCI8 DRIVER using oracle 11g client..
JDBC-ORACLE CONNECTIVITY ISSUE WITYH OCI8 DRIVER using oracle 11g client..
I am getting below error when i m trying to access oracle db using oracle 11g client. It works with earlier oracle client versions. how do i resolve this. is there any issue with version of ojdbc6.jar that i am using??? I cant use thin driver since its an old application for which i dont have source files.
Apr 6, 2013 1:00:59 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:262)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at PettyCash.SysDate.getSysSubSys(SysDate.java:232)
at org.apache.jsp.PettyCash.index_jsp._jspService(org.apache.jsp.PettyCash.index_jsp:186)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Code is as follow for reference
import oracle.jdbc.driver.*;
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
conn = DriverManager.getConnection ("jdbc:oracle:oci8:@" + database,db_user, db_pass);
eNVIRONMENT VARIABLES set are as follows:
classpath
C:\Program Files\apache-tomcat-5.5.12\common\lib\servlet-api.jar;C:\Program Files\apache-tomcat-5.5.12\webapps\ROOT\WEB-INF\lib\classes12.jar;C:\Program Files\apache-tomcat-5.5.12\webapps\ROOT\WEB-INF\lib\ojdbc6.jar;
JAVA_HOME
C:\Program Files\Java\jdk1.5.0_04
PATH
C:\Program Files\Java\jdk1.5.0_04\bin
ORACLE_HOME
D:\Oracle11\product\11.2.0\client_1\BINApr 8, 2013 5:24:06 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.abc.index_jsp._jspService(org.apache.jsp.abc.index_jsp:280)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595) -
Connection reset using JDBC Oracle thin Driver (towards 10g DB)
Hi we have a home-grown application and a Oracle 10g (10.2.0.1) database.
We created a scheduled servlet that gets a JDBC connection from a persistent connected cache (an OracleDataSource object registered using OracleConnectionCacheManager). The servlet runs every 15 minutes and runs the query "SELECT SYSTIME FROM DUAL" on 10g Database as XYZ user. The datapool was created yday on web-app and all queries ran successfully for about 5 hours after which it reported a connection reset error.
I can then conclude that we cannot keep the server session alive for the JDBC client by running frequent SQL queries.
We didnt get any messages on the DB server side that indicate the release of the session
Ultimately, we are struggling with reset connections from our applications that are
using the JDBC thin oracle driver; after a couple of hours of idle
connections, we receive the below error from the JDBC driver:
Jul 5, 2007 10:59:53 AM oracle.jdbc.driver.DatabaseError throwSqlException
WARNING: DatabaseError.throwSqlException(e): Unable to find ORA number from
exception Jul 5, 2007 10:59:53 AM oracle.jdbc.driver.DatabaseError
findMessage
WARNING: DatabaseError.findMessage(errNum, obj): returned Io exception:
Connection reset Jul 5, 2007 10:59:53 AM
oracle.jdbc.driver.PhysicalConnection getWarnings
INFO: PhysicalConnection.getWarnings()
Any suggestions please ?
VkThe code itself is fine; the problem is with one of:
1) the connection URL
2) intermediate networking
3) the database itself
1) your connection URL is "jdbc:oracle:thin:@127.0.0.1:1521:orcl"
- is Oracle really running on the default port, 1521
- is the installation SID really "orcl"
2) lots of possibilities, but only a couple are likely
- is TCP/IP configured and running on your host
- is there a persoanl firewall rpduct running? perhaps it's blocking the connection
3) Is Oracle running?
Is the listener running? -
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." -
OS authentication in Oracle 10g via jdbc:oracle:oci
I'm very much a newbie to Java / JDBC and I am trying, but failing, to connect with the database using OS authentication via jdbc, and hoping someone may help.
My questions are:
1. Is OS authentication supported for jdbc:oracle:oci with Oracle 10g ? I couldn't find a general statement of whether it works or not.
(NB.The only information I managed to find, on another forum, is that it should be supported but there is a bug and so it does not work, but the author did not post all of his/her platform details, so the bug may only affect his/her situation. )
2. If it is supported and works, could some one suggest what is wrong with my syntax . I could not find an example in any Oracle 10g/JDBC documentation.
The details are as follows: -
Database : - Oracle 10g Enterprise Edition 10.2.0.2.0 running on Solaris.
Development platform : - NetBeans 6.1, JDK 1.6.
Runtime environment: - JRE1.6 on Windows XP professional.
OPS$ authentication : - the OPS$ accounts have been set-up and we use these successfully for PL/SQL and SQL Plus access.
JDBC : - I can connect to the database with both jdbc:oracle:thin ( linking in ojdbc14.jar) and jdbc:oracle:oci by using username and password, so I know my JDBC library linkage is OK, eg. this works fine :
final String url = new String("jdbc:oracle:oci:" + uname + "/" + pword + "@" + environment);
where environment is the SID
I have trawled the Oracle documentation which tells me that OS authentication is not supported for Oracle 10g for the jdbc:oracle:thin driver, so I have tried to connect with jdbc:oracle:oci driver using the following code :
final String url = new String("jdbc:oracle:oci:/@" + environment);
final Driver driver = new oracle.jdbc.OracleDriver();
DriverManager.registerDriver(driver);
final Properties props = new Properties();
conn = DriverManager.getConnection(url);
but this gives the following error :
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Other info: - The tnsnames.ora file contains nothing but there are entries in the ldap.ora and sqlnet.ora files.
My questions are:
1. Is OS authentication supported for jdbc:oracle:oci with Oracle 10g ? I couldn't find a general statement of whether it works or not.
(NB.The only information I managed to find, on another forum, is that it should be supported but there is a bug and so it does not work, but the author did not post all of his/her platform details, so the bug may only affect his/her situation. )
2. If it is supported and works, could some one suggest what is wrong with my syntax . I could not find an example in any Oracle 10g/JDBC documentation.If you specify the SID/service_name in the url, you are attempting to connect via SQL*NET and REMOTE_OS_AUTHENT must be set to true in the database. If you are connecting from the same host the database runs on, then just leave the SID off and make sure the ORACLE_SID environment variable is set.
You can reproduce the same error you get in java with
sqlplus /@SID
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Nov 7 12:14:08 2008
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
ERROR:
ORA-01017: invalid username/password; logon deniedSample Code:
import oracle.jdbc.pool.OracleDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class conn {
public static void main(String[] args) throws SQLException {
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:oci:/@");
Connection conn = ods.getConnection();
conn.close();
} -
Jdbc:oracle:thin:@ service name too long
I am going to use jdbc:oracle:thin:@ as my connection.
but my service name is too long....
is that any ways to include the long service name?
Thanks!user652882,
Pardon me for asking, but how do you know your service name is too long?
Good Luck,
Avi. -
Hi all,
where can I download an JDBC-Oracle-Driver except of Oracle itsself?
Tnx
MarkoYou could use the thin[i] driver.
Or, if you find a provider other than Oracle... you can... but, exactly, why do you want to do that??? -
Hello All genius plz,
I make a user in Oracle and add a table in it then i want to connect it with my java application what can i do Which driver i select Form DSN .And if any one send me sample code so i will be very thankful to u on [email protected]
1 think i clear here that i already try lot of techinique like adding classes12.zip folder in my lib directory and also extracting and then add it. Setting classpath and try lot of DSN driver but nothing is work please help me on that.
Regards
Uzair Baig
(Always belive in logic)Hello All genius plz,Ah! Finally someone understands! :)
Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@127..0.1:1521:uzair","system","manager");
Is that correct. and which driver i select form DSN
1)Oracle ODBC driver OR 2)Microsoft ODBC driver for OracleThe connection string you are using will allow you to connect to your Oracle database using the Oracle thin (type 4) driver. The type 4 driver does not require any ODBC DSN. The type 4 driver does not use ODBC. The type 4 driver allows you to connect to your Oracle database from any machine that has the type 4 driver in it's CLASSPATH, there is no need for the Oracle client or any Oracle network setup on the client (TNS).
The connection string looks OK to me, except the IP address which appears to be missing a zero (0).
Make sure 1521 is the port that Oracle is listening for connections. The port number is user defined and is sometimes changed to allow for multiple listeners or for security reasons. -
I'm trying to connect the oracle database
similiar with the problem posted by our friend, apchar_boiir
i was wandering, doesn't the jdbc driver exist once we install the jds1.4?
is so, how am i gonna connect to the oracle database?
let's say my company pass me the ip and host
and i'm suppose to develop an application which has to connect to their database
the code is like this:
Connection conn = null;
try
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:10.0.11.2:1512:test",
"user",
"password");
catch(Exception e){}
is there any problem with my code?
please help...I'd already download the driver, "ojdbc14-Oracle9i 9.2.0.1.jar"
Now i try to test for the connection
Therefore, i move the driver to C:\ and I create a oracle.java in the same directory
The source code is like this:
import java.sql.*;
import java.io.*;
public class oracle {
public static void main(String args[]) throws SQLException{
String dbDriver = "oracle.jdbc.driver.OracleDriver";
String dbURL = "jdbc:oracle:thin:@10.0.11.2:1521:test";
String dbUser = "icem_trainer";
String dbPassword = "icem_trainer";
Connection conn = null;
Statement stmt = null;
try {
Class.forName(dbDriver).newInstance();
conn = DriverManager.getConnection(dbURL, dbUser, dbPassword);
stmt = conn.createStatement();
catch(Exception e) { }
if (conn!=null)
System.out.println("Yess!!!");
else
System.out.println("No!!!");
anyway, the output seems like i couldn't connect to the oracle database
I tested it using the similiar method for MySQL,
I use the MySQL-Java-Connector.jar as the driver, and it works
please help
Maybe you are looking for
-
how can i get option to approve or reject an emial in outlook in mac such that once i click on approve, the email is sent and if i click on reject it goes to sender (within our workgroup), i used to have it in windows
-
Very urgent : please help !!!! Blowfish problem
Greetings people, I have devised an application which reads the value from file and encrypts it (using Blowfish)......The file is then read and decrypted accordingly.............. Problem : I seem to be able to encrypt and further decrypt file(s) whi
-
Systemd (and Lennart)
Just to clarify, as some people are apparently unclear about these topics and why they are routinely closed and marked for deletion. Discussion about systemd is perfectly acceptable; assuming that it is rational, technical and relevant to Arch. What
-
Is it possible to "recompress" a compressed file?
Hi, all. A couple of years ago I made a project in iDVD and archived it to a .img file thinking I'd never have to see it again. Well, lo and behold I've been asked for a copy of that project. The problem is the .img file is 5.08 GB, too large for a s
-
Formatting output using FileWriter
Hi Experts, Just a quick question, I have a FileWriter which grabs some text from a JTextPane and then outputs it to a pre-defined textfile, all works well until I open the textfile, instead of the nice formatted text I get from JTextPane, it all spa