Will Oracle 9i OCI driver work with an Oracle 10g server? - perl

I'm in charge of a Perl application that uses DBD::Oracle compiled against a 9.2.0.8 OCI client. This is on a sun4u box, albeit with 32-bit binaries. DBD::Oracle is linked against 32-bit OCI libs. We're currently running against a 9i server.
Our DBA team is planning to upgrade the server to 10g, namely 10.2.0.4. I'm faced with two options:
Continue using 9i drivers against the new 10g server.
OR, upgrade our client from 9.2.0.8 to 10.2.0.4 to match the server's version.
For various operational reasons, I'd prefer to go with (1) above. However, I am not sure whether a 9i OCI client can work with a 10g Oracle server. Can this be done?

Yes, it should work. Although, as you might already know, you won't have access to 10g client specific features...

I believe an Oracle 9i driver will work with both 10g and 11g (I know for a fact the Java ones do).
However, your best bet would be to set up a test server/VM with Oracle 10g on it, and test it.

Related

How can I tell SQLDeveloper which version of JDBC to use?

I need to connect to an Oracle 9i server from my machine using SQLDeveloper. I already have a functioning version of SQLDeveloper 18.2 + Oracle Client 12 for more modern databases, but for this connection I want a separate older version of SQLDeveloper.
I've installed SQLDeveloper 3.2.20.09 in a separate folder on my machine and can launch it, but it defaults to finding the ojdbc6.jar file from Oracle Client 12. if I go to Help > About and select properties, the jdbc.library says jdbc.library /C:/app/client/product/12.1.0/client_1/jdbc/lib/ojdbc6.jar
and if I try to connect I get the error ORA-01460: unimplemented or unreasonable conversion requested
I tried putting the path to the SQL Developer 3.2 install first in the PATH variable, but no difference. Is there a way to tell SQL Developer which jdbc driver to use for Oracle ? (maybe in sqldeveloper.conf)
The official answer is:
use the jar (driver) we ship with the product OR
use a Thick Client, and we'll pull the jdbc driver from an Instant Client or Oracle HOME on your machine
The 2nd option will work so long as you don't try to go back back or forward in time to the point that the software will recognize/support the driver.
In other words, you can't tell SQL Developer 18.x to use a 9i Home, we have a hard dependency to require at least a 11gR2 client (I believe, it could actually be a 12c based client which is required).
You'd be better off getting your data out of that ancier 9i Database and into a modern 12 or 19c Oracle instance.
but it defaults to finding the ojdbc6.jar file from Oracle Client 12.
Sounds like you've managed to get a thick connection defined, go into preferences and disabled on the advanced page any reference to OCI or Thick, then it will use the jdbc driver shipped with SQLDev.

How to create connection on SQL Developer?

i installed SQL Developer on my MacBook
when i tried to run the sql code it says must create new connection
it required username/password
so how can i solve this
before i was using oracle database XE 12 on windows 10
but now i am using macOS and i see i cant use this software anymore (oracle database XE 12)
so i tried to install SQL Developer
Oracle SQL Developer is a tool that lets you connect to an (Oracle) database. But - you have to have the database as well (apparently, there's none on your Mac).
Express Edition database you previously used on Windows 10 was (probably) 11g (not 12; it doesn't exist), but it woks on Windows an Linux - not macOS.
Moreover, none of the modern Oracle databases can be installed on Mac; the last one was, I think, 10g (but - as it is out of support, you can't even download it any more).
Therefore, you could install a virtual machine on Mac, put Windows OS onto it, download and install 11gXE along with SQL Developer and use it.
But, why bother? Install VirtualBox and then download one of Pre-Built Developer VMs (for Oracle VM VirtualBox).

How can I access two Oracle databases with different versions (8i and 9) using perl?

I'm currently accessing an Oracle database version 9i (9.2.0.8.0) using perl modules DBI (1.613) and DBD::Oracle (1.26). The current scope of the project now requires that I access a version 8i (8.1.7.4.0 ) Oracle database and, according to the DBD::Oracle project, I can only access this second database with a DBD::Oracle version 1.20 or below.
I know I could possibly use the DBD version 1.20 to access both databases, but I was wondering if its possible to have installed the two versions of the DBD module and use the acceptable version for each database (less prone to errors).
I don't believe that the server version has any bearing on the DBD::Oracle version you can use, only the version of the client libraries that you install. The 9.2, 10.1, and 10.2 versions of the Oracle client libraries support connecting to Oracle server 8.1.7.4, and the latest version of DBD::Oracle remains compatible with all client libraries from 9.2 up, so I don't think that you will actually have any problem at all. However, if you install the version 11 client, you will lose the ability to connect to server versions below 9.2.0.
Install the different versions of DBI/DBD::Oracle into two different places, see INSTALL_BASE/--install_base. Access them seperately by setting PERL5LIB appropriately.
local::lib helps you automate this whole affair.
If you want to access the two database versions from the same program run you can do as follows:
install both versions in your system using local::lib
run a DBD::Proxy server with #LIB configured to load one version of DBD::Oracle
run your script with #LIB configured to load the other version of DBD::Oracle
in your script connect to one database using DBD::Oracle as usual and to the other one through the proxy.

Oracle 11g and Oracle 10g Install together?

I have installed Oracle 10g and now want to install 11g also...How can I do it?.. I know that ORACLE_HOME environment variable need to be configured for each "oracle"..
Can you describe me steps how to do this?
Thank you very much in previous.
Thank you It helped me so much...
The most important is that I should have chosen %ORACLE_HOME% like %ORACLE_BASE%...
Just %ORACLE_BASE% should be the same...And it works.
There's ususally not a lot of reasons why Oracle databases of different versions cannot run on the same machine, be it Windows or Linux/Unix. Reasons can be if you run Clustering software, which may not be of a lower version than any database version involved. Similar with Oracle Grid or Cloud. Other than that, I can't really think of reasons, but there may be excpetions, linked to specific OS. Usage of ORACLE_HOME's is how Oracle manages different databases and versions. The Oracle Homes should be different for each database, the Oracle Base should be the same, the central inventory must be shared, and the ownership (of Oracle Homes) may be shared or separated. Sharing Oracle Home is an option for advanced users only.

Oracle Driver Installation

I am having Oracle 10g installed on my laptop and have downloaded ojdbc14.jar driver for the same. The problem is, my operating system is Windows 7, and I'm not having option to create a Data Source for Oracle since I m not having oracles driver installed. I m having option to create a Data Source for SQL server 6, but I want to get connected to Oracle. Please Help.
By 'Data Sources', I'm guessing that you mean Data Sources (ODBC), under Control Panel > Administrative Tools. Is this correct?
I've set up ODBC Data Sources that connect to Oracle databases before, but to do that I've needed the Oracle client to be installed. However, if you're having the full database installed on your laptop (as your question suggests), you won't need the client - that's only used to connect to databases running on other machines. I believe the full database contains everything in the client, so you should be able to set up an ODBC Data Source pointing to the database on your laptop once the database has been installed.
The ojdbc14.jar just contains the JDBC classes to talk to an Oracle database, and only programs written in Java (and other languages that run on the JVM such as Scala, Groovy or Clojure) can use it. This jar on its own not enough to be able to set up an ODBC data source.
Oracle currently has 1 version that is certified for windows 7. That version is 11.2. They have indicated that they plan to certify 10.2.0.5 if this happens there will likely be a patch that will be needed.
This is probably why the Data Source does not work, either ODBC or OLEDB.
Another possibility is that you have installed the 32bit version of Oracle and your OS is 64bit then you would need to use the 32bit Data Source administrative tools.
I have figured out the solution for my problem. All that I needed to do is put ojdbc14.jar file in my class path and then I was able to use it. Though by doing so, I needed to make some change in the code. I was no more able to use Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") instead I needed to use Class.forName("oracle.jdbc.OracleDriver") also instead of using my data source as "jdbc:odbc:somename" I needed to use jdbc:oracle:thin:#localhost:1521:xe.