Создать виртуальную или поддельную схему в 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
это было бы предпочтительнее.