Оболочка сторонних данных Oracle

У меня архитектура хозяин-раб. На ведомом у меня есть база данных Oracle с двумя схемами, например. TEST1 и TEST2.

У меня есть все объекты (например, EMPLOYEES), хранящиеся в схеме TEST1, и пользователь TEST1 (или администратор) предоставил TEST1.EMPLOYEES права только для чтения TEST2, поэтому, когда я использую TEST1.EMPLOYEES в запросе к базе данных Oracle, я могу получить доступ к его данным.

Как я могу реализовать то же самое с помощью оболочки внешних данных Oracle в postgres 9.5, потому что у меня есть учетные данные для TEST2, а не для TEST1? Когда я пытаюсь получить доступ к сторонней таблице, появляется сообщение об ошибке, говорящее, что TEST2.EMPLOYEES не существует.


person Mahesh Hadawale    schedule 10.08.2017    source источник


Ответы (1)


Вы можете легко сделать это, если определите отображение пользователя с учетными данными пользователя TEST2 и стороннюю таблицу с параметром schema, т.е.

CREATE FOREIGN TABLE ... OPTIONS (schema 'TEST1', table 'EMPLOYEES');
person Laurenz Albe    schedule 10.08.2017
comment
Ваш ответ помог мне ... Моя проблема решена .. Спасибо большое - person Mahesh Hadawale; 11.08.2017
comment
@LaurenzAlbe: в postgres-9.4 эти параметры были названы schema_name и table_name (я не знаю, были ли эти ключевые слова переименованы в более поздних версиях) - person wildplasser; 12.11.2017
comment
@wildplasser: Вы ошибаетесь. Имена параметров не определяются PostgreSQL, они определяются оболочкой сторонних данных. Основная причина, по которой имена в oracle_fdw и postgres_fdw различаются, заключается в том, что я сначала написал oracle_fdw, поэтому я не мог скопировать поведение ... - person Laurenz Albe; 13.11.2017