在oracle

时间:2017-11-04 12:09:43

标签: oracle schema synonym

我有以下问题: 在我的应用程序中(供参考:c ++和occi虽然与问题无关)我有同时访问多个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实际上没有退出那个DB?

避免这种情况的一种可能方法可能是在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中包含的内容1}}这会更好。

0 个答案:

没有答案