0

在工作中,我有一个基于 Oracle 7.3 的应用程序(是的,旧东西)。最近,我尝试创建一个能够在所有表上进行 SELECT 的帐户,但没有别的,即没有更新或删除。但是每当我创建一个新帐户时,它已经可以访问所有应用程序表。我什至将其简化为仅创建会话。这没有帮助 - 用户仍然可以更新任何表!

所以,我发现有一大堆公共同义词与表命名完全相同(即表myTable123,公共同义词myTable123)。我删除了其中一个,用户无法在该特定表上进行选择。然后我创建了一个新表,显然新用户看不到它。我为该表添加了公共同义词,希望用户能够访问它。不幸的是,新用户看不到它..这是有道理的,因为没有给予任何授权。必须有别的东西......

我不是甲骨文专家,我正在努力解决这个问题,但到目前为止还没有运气。请帮助您提出任何建议。干杯! 达摩

4

2 回答 2

5

正如 tuinstoel 所说,您可以忽略公共同义词 - 这不会影响权限。

您可能在创建原始表格时创建者做了

grant [permissions] on [table] to public

其中 [permissions] 可以与“all”一样广泛,这意味着任何新用户都将自动被授予对这些表的权限。

select * from ALL_TAB_PRIVS where table_name = '[one of your problem tables]'

退货?

顺便说一句 - 从未使用过 Oracle 7.3.3 - 我假设许可模型没有太大变化。

于 2009-05-25T12:05:11.193 回答
1

Oracle 7.3 不仅旧,而且非常、非常、非常旧。它是 12 或 13 岁。

创建或删除公共 syns 不会更改任何人访问表的权限。创建公共同义词的唯一原因是可以访问表而不用为其模式名称添加前缀。

我认为您的老用户拥有诸如“更新任何表”和“选择任何表”或“dba”之类的特权。

于 2009-05-25T11:50:53.937 回答