Создать виртуальную или поддельную схему в Oracle

У меня есть следующий вопрос: В моем приложении (для справки: C++ и иногда, хотя и не имеет значения для вопроса) у меня есть запросы, которые обращаются к нескольким схемам базы данных Oracle одновременно. Один из этих запросов имеет (упрощенную) структуру:

SELECT MAX(COL_A) FROM TABLE_A UNION ALL SELECT MAX(COL_B) SCHEMA_B.TABLE_B;

TABLE_A происходит от SCHEMA_A, Я сейчас создал копию этого SCHEMA_A на тестовой БД и хотел бы протестировать приложение с ним.

Проблема в том, что SCHEMA_B не находится под моим контролем и не виден из этой тестовой БД.

Есть ли способ создать TABLE_B внутри SCHEMA_A так что это может быть запрошено как в приведенном выше, то есть почти как если бы SCHEMA_B который на самом деле не выходит в этой БД?

Один из возможных способов обойти это, вероятно, заключается в создании синонима внутри рабочей версии SCHEMA_A иметь

CREATE SYNONYM TABLE_B for SCHEMA_B.TABLE_B;

затем измените запрос в приложении на

SELECT MAX(COL_A) FROM TABLE_A UNION ALL SELECT MAX(COL_B) TABLE_B;

а затем создать TABLE_B внутри SCHEMA_A в тестовой БД. Проблема в том, что не совсем просто изменить вещи в производственной базе данных, поэтому, если есть способ "подделать" существование SCHEMA_B на тестовой БД это было бы предпочтительнее.

Создание другой схемы БД в тестовой БД, которая действительно называется SCHEMA_B и из которого я мог бы затем предоставить право выбора SCHEMA_A не исключено полностью, но если бы я мог держать вещи в SCHEMA_A это было бы предпочтительнее.

0 ответов

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