Can't connect o Oracle Database

Hi, could anybody advise me on the issue that I got when trying to connect to Oracle? The error message that I got: Exception in thread "main" java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.
library.path

I'm using the instantClient. After I set the library path to include the ocijdbc, I got another error: Exception in thread "main" java.lang.UnsatisfiedLinkError: t2cGetCharSet

My codes is as follows:
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
con = DriverManager.getConnection("jdbc:oracle:oci:@DATABASENAME", USERNAME, PASSWORD);

Is there anything wrong with my codes? Please advise, thanks.
rospccAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Mick BarryJava DeveloperCommented:
looks like the drivers shared lib is not available, perhaps not installed correctly.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
schwertnerCommented:
What is the version of Oracle?
Is it 10g?
If yes ask the DBA to ensure static registration of the service by the Listener.

his is a working example:

***********************************************************
* Reading from scot/tiger table
**********************************************************

import java.sql.*;

import oracle.jdbc.pool.OracleDataSource;

class first {
public static void main (String args []) throws SQLException {
// Create DataSource and connect to the local database
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@//oralin3:1521/phr7b");
ods.setUser("scott");
ods.setPassword("tiger");
Connection conn = ods.getConnection();
// Query the employee names
Statement stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("SELECT ename FROM emp ORDER BY ename");
// Print the name out
while (rset.next ())
System.out.println (rset.getString (1));
//close the result set, statement, and the connection
rset.close();
stmt.close();
conn.close();
}
}
0
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

johnsoneSenior Oracle DBACommented:
schwertner, based on the error, I don't think we are getting as far as the listener.

Here are relavent snippets of code from a working example that I have that does use instant client.

import java.sql.*;

    private Connection dbCon = null;
    private String host;
    private String user;
    private String pass;

      // Load the driver
      try {
          //Class.forName("oracle.jdbc.OracleDriver").newInstance();
          DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
      } catch (Exception e) {
          throw e;
      }

      // Connect to the database
      try {
          dbCon = DriverManager.getConnection("jdbc:oracle:oci:"  + user + "/" + pass + "@" + host);
                  
      } catch(SQLException e) {
          throw e;
      }
0
schwertnerCommented:
johnsone,
every 10g installation needs immediatelly changes in the
listener.ora file. Investigation on every connection problem
begins from Listener services.
It is not a panacea, but helps in 30% of the cases.
0
johnsoneSenior Oracle DBACommented:
Based on the message being loading a unsatisfied symbol in Java, I don't see how it could be anything to do with the listener.  The code has not even started if it cannot resolve all the symbols.
0
schwertnerCommented:
OK
0
Mayank SAssociate Director - Product EngineeringCommented:
>> Class.forName(driver);
>> DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

The call to registerDriver is redundant and not required.

I would also recommend trying out with the thin driver. BTW maybe that you have multiple versions of Java and so the PATH/ CLASSPATH is messed up, which is why it is unable to load the library.
0
Mayank SAssociate Director - Product EngineeringCommented:
Any library which has to be loaded should be contained in "java.library.path". Try printing:

System.out.println ( System.getProperty ( "java.library.path" ) ) ;

and see if it contains the directory containing that library.
0
rospccAuthor Commented:
Mayankeagle, is there any disadvantage in using thin driver?
0
rospccAuthor Commented:
The path of the oci driver actually appear when I executed: System.out.println ( System.getProperty ( "java.library.path" ) ) ;
0
Mick BarryJava DeveloperCommented:
no downside I'm aware of in using the thin driver

> The path of the oci driver actually appear when I executed: System.out.println ( System.getProperty ( "java.library.path" ) ) ;

was that the directory that contains the oci native lib?
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.