RE: Maintaining simultaneous support for two Oracle versions in DBI
From: b...@wards.net Date: Sun, 4 Dec 2011 19:15:20 -0800 Subject: Re: Maintaining simultaneous support for two Oracle versions in DBI To: smi...@latfor.state.ny.us CC: dbi-users@perl.org Aren't the Oracle driver libraries backward compatible? If you link DBD to the Oracle 11 drivers, won't it still be able to connect to an Oracle 8 server? No they usually only go back one version. So 9 can connect to 8~10, 10 to 9~11 ect at least that has been the trend with the last few clients at least with OCI. They tend to change up the OCI packaging with each new version as well just to muck up us OCI coders. cheers John On Fri, Dec 2, 2011 at 10:27 AM, Scott Smith smi...@latfor.state.ny.uswrote: My workplace is transitioning from Oracle version 9 to version 11. I would like to build the DBD driver to support connecting to the Oracle 11 database. However, until all the data are migrated from the old database to the new one, I would need to maintain connectivity to the old Oracle 9 database. Since the driver and shared objects built for the new database would be incompatible, I would need to build separate objects for the Oracle 11 connection. Some of the items I can identify are: The module should be Oracle11.pm rather than Oracle.pm (called as DBI-connect(dbi:Oracle11:, ...) rather than DBI-connect(dbi:Oracle:, ...)). The shared object and bootstrap files as Oracle11.so and Oracle11.bs respectively. (Should these go in the same directory or should they be in the directory Oracle11 and does the package name in Oracle11.pm have to be changed to DBD::Oracle11 in order to find things there?) I have some idea of what I need to change in Makefile.PL in order to achieve at least part of this. What I have so far is changing references to Oracle.pm to Oracle11.pm and $opts{NAME} from DBD::Oracle to Oracle 11. Am I right about the second? Are there others I should have included? Thanks for any help, Scott Smith -- Check out my LEGO blog at http://www.brickpile.com Follow/friend me: facebook.com/billward • flickr.com/photos/billward • twitter.com/williamward
Re: Maintaining simultaneous support for two Oracle versions in DBI
On 2011-12-05 07:08:01 -0500, John Scoles wrote: From: b...@wards.net Date: Sun, 4 Dec 2011 19:15:20 -0800 Subject: Re: Maintaining simultaneous support for two Oracle versions in DBI To: smi...@latfor.state.ny.us CC: dbi-users@perl.org Aren't the Oracle driver libraries backward compatible? If you link DBD to the Oracle 11 drivers, won't it still be able to connect to an Oracle 8 server? No they usually only go back one version. So 9 can connect to 8~10, 10 to 9~11 ect at least that has been the trend with the last few clients at least with OCI. We access an Oracle 8.1 database with 10.2 clients and a 10.2 database with an 8.1 client, so that works at least for simple stuff (IIRC you have to be careful about charsets and there are some problems with LOBs, so YMMV). Accessing an 8.1 database with an 11g client definitely doesn't work. I'm not sure whether an 11g client can access a 9i database. For a transition from a 9i to an 11g database I would first try to use an 11g client and fall back to a 10g client if that doesn't work. hp -- _ | Peter J. Holzer| Auf jedem Computer sollte der Satz Ludwigs II |_|_) | Sysadmin WSR | eingeprägt stehen: Ein ewig Rätsel will ich | | | h...@wsr.ac.at | bleiben, mir und andern. __/ | http://www.hjp.at/ |-- Wolfram Heinrich in desd signature.asc Description: Digital signature
RE: Maintaining simultaneous support for two Oracle versions in DBI
I went through this about a year or so ago with another client his was 8 and 11 so a real big differace. It can be done but you have to reaname or at least alias some of the oracle files as well or else they will step on each other. That is if you are usng linux. It is a little easer with windows (I am not joking) as the oracle files are in nice compact DLLs. As well you have to reaname a good number of other files here and there in both XS and 'C' and try to get it to complie. And even before you do that I did this a while ago and still have the code online here 'http://svn.perl.org/modules/dbd-oracle/branches/DBD-Oracle8' Renamed 8 but you can still complile it against 9 client. But before you go though that I would just get the instanct client 10 which can connect to both 9 and and 11 and that should work for you. Cheers John Date: Fri, 2 Dec 2011 13:27:09 -0500 From: smi...@latfor.state.ny.us To: dbi-users@perl.org Subject: Maintaining simultaneous support for two Oracle versions in DBI My workplace is transitioning from Oracle version 9 to version 11. I would like to build the DBD driver to support connecting to the Oracle 11 database. However, until all the data are migrated from the old database to the new one, I would need to maintain connectivity to the old Oracle 9 database. Since the driver and shared objects built for the new database would be incompatible, I would need to build separate objects for the Oracle 11 connection. Some of the items I can identify are: The module should be Oracle11.pm rather than Oracle.pm (called as DBI-connect(dbi:Oracle11:, ...) rather than DBI-connect(dbi:Oracle:, ...)). The shared object and bootstrap files as Oracle11.so and Oracle11.bs respectively. (Should these go in the same directory or should they be in the directory Oracle11 and does the package name in Oracle11.pm have to be changed to DBD::Oracle11 in order to find things there?) I have some idea of what I need to change in Makefile.PL in order to achieve at least part of this. What I have so far is changing references to Oracle.pm to Oracle11.pm and $opts{NAME} from DBD::Oracle to Oracle 11. Am I right about the second? Are there others I should have included? Thanks for any help, Scott Smith
Re: Maintaining simultaneous support for two Oracle versions in DBI
I might be overlooking something in your requirements, but this is a response that I had previously sent to someone on the list regarding migration concerns: I'm going through a migration now and had to recompile DBD-Oracle against the new ORACLE_HOME. I wanted to leave the old DBD-Oracle install in tact during my testing so I did not do a 'make install' after compilation. I took my test scripts, etc and used an appropriate PERL5LIB setting; ie. PERL5LIB=/u99/testing/DBD-Oracle-1.23/blib/lib:/u99/testing/DBD-Oracle-1.23/blib/arch; so it could would work while the old processes are able to use the current DBD-Oracle install. On 12/2/2011 1:27 PM, Scott Smith wrote: My workplace is transitioning from Oracle version 9 to version 11. I would like to build the DBD driver to support connecting to the Oracle 11 database. However, until all the data are migrated from the old database to the new one, I would need to maintain connectivity to the old Oracle 9 database. Since the driver and shared objects built for the new database would be incompatible, I would need to build separate objects for the Oracle 11 connection. Some of the items I can identify are: The module should be Oracle11.pm rather than Oracle.pm (called as DBI-connect(dbi:Oracle11:, ...) rather than DBI-connect(dbi:Oracle:, ...)). The shared object and bootstrap files as Oracle11.so and Oracle11.bs respectively. (Should these go in the same directory or should they be in the directory Oracle11 and does the package name in Oracle11.pm have to be changed to DBD::Oracle11 in order to find things there?) I have some idea of what I need to change in Makefile.PL in order to achieve at least part of this. What I have so far is changing references to Oracle.pm to Oracle11.pm and $opts{NAME} from DBD::Oracle to Oracle 11. Am I right about the second? Are there others I should have included? Thanks for any help, Scott Smith
Re: Maintaining simultaneous support for two Oracle versions in DBI
Aren't the Oracle driver libraries backward compatible? If you link DBD to the Oracle 11 drivers, won't it still be able to connect to an Oracle 8 server? On Fri, Dec 2, 2011 at 10:27 AM, Scott Smith smi...@latfor.state.ny.uswrote: My workplace is transitioning from Oracle version 9 to version 11. I would like to build the DBD driver to support connecting to the Oracle 11 database. However, until all the data are migrated from the old database to the new one, I would need to maintain connectivity to the old Oracle 9 database. Since the driver and shared objects built for the new database would be incompatible, I would need to build separate objects for the Oracle 11 connection. Some of the items I can identify are: The module should be Oracle11.pm rather than Oracle.pm (called as DBI-connect(dbi:Oracle11:, ...) rather than DBI-connect(dbi:Oracle:, ...)). The shared object and bootstrap files as Oracle11.so and Oracle11.bs respectively. (Should these go in the same directory or should they be in the directory Oracle11 and does the package name in Oracle11.pm have to be changed to DBD::Oracle11 in order to find things there?) I have some idea of what I need to change in Makefile.PL in order to achieve at least part of this. What I have so far is changing references to Oracle.pm to Oracle11.pm and $opts{NAME} from DBD::Oracle to Oracle 11. Am I right about the second? Are there others I should have included? Thanks for any help, Scott Smith -- Check out my LEGO blog at http://www.brickpile.com Follow/friend me: facebook.com/billward • flickr.com/photos/billward • twitter.com/williamward
Maintaining simultaneous support for two Oracle versions in DBI
My workplace is transitioning from Oracle version 9 to version 11. I would like to build the DBD driver to support connecting to the Oracle 11 database. However, until all the data are migrated from the old database to the new one, I would need to maintain connectivity to the old Oracle 9 database. Since the driver and shared objects built for the new database would be incompatible, I would need to build separate objects for the Oracle 11 connection. Some of the items I can identify are: The module should be Oracle11.pm rather than Oracle.pm (called as DBI-connect(dbi:Oracle11:, ...) rather than DBI-connect(dbi:Oracle:, ...)). The shared object and bootstrap files as Oracle11.so and Oracle11.bs respectively. (Should these go in the same directory or should they be in the directory Oracle11 and does the package name in Oracle11.pm have to be changed to DBD::Oracle11 in order to find things there?) I have some idea of what I need to change in Makefile.PL in order to achieve at least part of this. What I have so far is changing references to Oracle.pm to Oracle11.pm and $opts{NAME} from DBD::Oracle to Oracle 11. Am I right about the second? Are there others I should have included? Thanks for any help, Scott Smith