2009-05-25 30 views
0

在工作中,我有一个应用程序坐在Oracle 7.3上(旧的东西,是的)。最近我尝试创建一个账户,可以在所有表​​上进行SELECT操作,但没有其他操作,即没有更新或删除操作。但是每当我创建一个新帐户时,它就可以访问所有应用程序表。我甚至只将它剥离为CREATE SESSION。这没有帮助 - 用户仍然可以更新任何表!ORACLE 7.3用户管理

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

我不是甲骨文的专家,我试图找到这个问题的底部,但没有运气到目前为止。 请帮助您提供任何建议。 干杯! Damo

回答

5

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

这可能是因为您是何时建立的原始表的创建者做了

grant [permissions] on [table] to public 

其中[权限]可能是为“全”在广泛,这意味着任何新的用户将自动被授予的权限上那些表格。

是否

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

什么回报?

顺便说一句 - 从来没有使用Oracle 7.3.3 - 我假设许可模式没有太多改变。

+0

Hobo, 感谢您的回答!我想你已经明白了。我本周休假,但一回到工作岗位就会检查。 谢谢! 达摩 – 2009-05-26 16:33:55

1

Oracle 7.3不仅年老,而且非常非常古老。它是12岁或13岁。

创建或删除公共syns不会更改anyones访问表的权限。创建公共同义词的唯一原因是可以访问一个表,而不用它的模式名称作为前缀。

我认为你的老用户有'更新任何表'和'选择任何表'或'dba'等特权。

+0

我认为这是14岁。该文件版权为1995. – RussellH 2009-05-28 18:26:22