2

哪个 Oracle 数据库角色将允许用户在不指定模式标识符的情况下从另一个模式中的表中进行选择?即,作为用户A-将A.table上的选择授予用户B;然后B可以-“从表中选择*”而不指定'A'。我们的一个数据库允许这样做,另一个返回“表或视图不存在”错误。

4

6 回答 6

7

您可以为此创建同义词。在对象“A.CoffeeTable”上创建一个名为“CoffeeTable”的同义词。您可以创建一个公共同义词,这样每个人都可以看到它,或者只是用户 B 下的同义词。

于 2008-10-21T19:59:11.257 回答
4

只是为了仔细检查您使用的模式是否没有表的私有同义词(或 Leigh 建议的视图),您可以执行以下操作

SELECT * FROM all_objects WHERE object_name = 'mytablename'

并查看 owner 和 object_type 信息。

于 2008-10-22T10:07:28.330 回答
2

如果没有同义词,模式 B 中是否有一个视图从模式 A 中的表中选择,使用与表相同的名称?在许多方面,这似乎是一个本地引用的表。

于 2008-10-22T02:43:15.480 回答
2

也许只有 current_schema 不同。尝试:

alter session set current_schema=A

于 2008-10-21T20:00:06.853 回答
0

@erno-TOAD 没有向您显示公共同义词的原因可能是因为它过滤了列表中显示的信息-我面前没有蟾蜍,但我认为如果您右键单击选项卡,您将进入过滤选项(例如“仅显示架构拥有的对象”、“显示公共对象”、“显示系统对象”等)

于 2008-10-22T19:43:51.177 回答
0

布雷特是对的。同义词用于此。实际上,在某些情况下,您不知道生产中的模式名称是什么。也许您将 A 用于某些模式名称,并且 A 已在某些 Oracle 实例中使用。

于 2008-10-21T20:13:22.430 回答