Как я могу получить доступ к двум базам данных Oracle с разными версиями (8i и 9), используя perl?

В настоящее время я обращаюсь к базе данных Oracle версии 9i (9.2.0.8.0), используя Perl-модули DBI (1.613) и DBD::Oracle (1.26). Текущий масштаб проекта теперь требует, чтобы я получил доступ к базе данных Oracle версии 8i (8.1.7.4.0) и, согласно проекту DBD:: Oracle, я могу получить доступ только ко второй базе данных с DBD:: Oracle версии 1.20 или ниже.

Я знаю, что мог бы использовать версию 1.20 DBD для доступа к обеим базам данных, но мне было интересно, возможно ли установить две версии модуля DBD и использовать приемлемую версию для каждой базы данных (менее подверженную ошибкам).

3 ответа

Решение

Я не верю, что версия сервера имеет какое-либо отношение к версии DBD::Oracle, которую вы можете использовать, только к версии клиентских библиотек, которые вы устанавливаете. Версии клиентских библиотек Oracle 9.2, 10.1 и 10.2 поддерживают подключение к серверу Oracle 8.1.7.4, а последняя версия DBD::Oracle остается совместимой со всеми клиентскими библиотеками от 9.2 и выше, поэтому я не думаю, что вы это сделаете на самом деле есть какие-либо проблемы на всех. Однако если вы установите клиент версии 11, вы потеряете возможность подключения к серверам версий ниже 9.2.0.

Установите разные версии DBI/DBD::Oracle в двух разных местах, см. INSTALL_BASE / --install_base, Получите к ним доступ отдельно, настроив PERL5LIB соответствующим образом.

local:: lib поможет вам автоматизировать весь этот процесс.

Если вы хотите получить доступ к двум версиям базы данных из одной и той же программы, вы можете сделать следующее:

  • установить обе версии в вашей системе, используя local:: lib

  • запустить DBD::Proxy сервер с @LIB настроен для загрузки одной версии DBD::Oracle

  • запустить свой скрипт с @LIB настроен для загрузки другой версии DBD::Oracle

  • в вашем скрипте подключитесь к одной базе данных, как обычно, с помощью DBD::Oracle, а к другой через прокси.

Другие вопросы по тегам