2016-05-08 7 views
1

Существует база данных Oracle (версия 8), действующая как PL/SQL API, обеспечивающая доступ к различным процедурам и таблицам в этой базе данных.
У меня есть другая база данных Oracle (версия 10g), которая использует эти процедуры и таблицы через ссылку базы данных.
Я обновил свою базу данных до версии 12g, но, по-видимому, есть проблемы совместимости, использующие связь базы данных между версиями 8 и 12g. Итак, придумал план создания третьей базы данных с Oracle версии 10g и поставьте ее между 8 и 12g в качестве «прокси».
Созданы ссылки на базы данных с v12g на v10g и с v10g на v8. Созданы синонимы в базе данных «proxy» (v10g) для таблиц и процедур в базе данных v8. я могу сделать стандартный ЗЕЬЕСТ из v12g:использует API PL/SQL через две базы данных

select column from [email protected]; 

Но положить его в анонимный блок:

declare 
    sVar varchar2(200); 
    begin 
     select column into sVar from [email protected]; 
     dbms_output.put_line(sVar); 
    end; 

дает ошибку: «PL/SQL: ORA-00980: синоним перевод больше не действует». Есть ли способ получить доступ к процедурам и таблицам v8 из v12g через v10g - это означает, что через 2 базы данных?

+2

И почему вы не можете обновить базу данных v8 до версии из этого тысячелетия ...? – APC

+0

Это принадлежит другой компании :) – Tanel

+0

Другим решением, в зависимости от того, насколько текущими являются данные, является создание материализованных представлений в базе данных 10g, которые регулярно извлекают данные из 8 через свою ссылку db, затем запрашивают эти MV с 12g , –

ответ

2

Предполагая, что существует серьезное препятствие, препятствующее обновлению db Oracle 8 (8.0/8.1.x), я думаю, вам нужно будет забыть ссылки на базу данных. Даже если вы приложите много усилий, чтобы заставить его работать немного дольше, у вас нет гарантии, что он будет работать на следующем патче.

Я бы посмотрел на создание оболочки Java вокруг функциональности Oracle 8. Ваша база данных 12c просто вызывает вызовы на уровень Java (возможно, даже в качестве хранимой процедуры Java).

Если вы должны использовать dblinks, вы можете попробовать посмотреть DG4ODBC, поэтому вы будете рассматривать Oracle 8 DB как общую «чужую» базу данных, а не базу данных Oracle.

+0

Спасибо за ваши мысли. «Забудьте о ссылках на базу данных» (то есть dblinks через 2 db не будут работать), кажется, правильный ответ в этом случае. – Tanel