日期:2014-05-17  浏览次数:20721 次

Oracle分配用户权限
第一步:oracle9i中intel表空间里默认用户名是microsoft;
第二步:此时建立一个新用户amd,指向表空间intel,分配了resources权限;
第三步:使用amd用户登录,查看table里没有表,提示表或视图不存在
第四步:输入grant select on intel_facotry to amd;
第五步:使用select * from intel.intel_facotry 可以查看此表
第六步:使用select * from intel_facotry 提示表或视图不存在

问题:
为什么新建立了用户,用户所属表空间,但用户却不拥有表空间中的表,amd用户上来如果忘记intel用户名后怎么能够使用查询elect * from intel.intel_facotr呢? 请高手解答~

------解决方案--------------------
1. 表的拥有权,只属于建立表的用户。

2. 可以授权进行查询,但必须加上用户前缀,如intel.intel_factory

3. 可以建立同义词,例,create or replace synonym intel_factory for intel.intel_factory;
就不需要记着那个用户名前缀了。

------解决方案--------------------
探讨
1. 表的拥有权,只属于建立表的用户。

2. 可以授权进行查询,但必须加上用户前缀,如intel.intel_factory

3. 可以建立同义词,例,create or replace synonym intel_factory for intel.intel_factory;
就不需要记着那个用户名前缀了。

------解决方案--------------------
建立了用户,指定表空间,但是这个表空间并不是就是属于该用户了。 多个用户可以共用表空间的
本来oracle模式就是 一个用户拥有的对象集合,所以忘记了用户名了, 那就select * from all_tables看看自己有权限查看的表 以及用户。
------解决方案--------------------
用户要隶属于一个表空间,表存在表空间,但不等于这个用户拥有表空间上所有内容。

用户就一住户,表空间是一栋楼,表是一件家具。你虽然住在这个楼里,不代表这个楼里所有的家具都是你的。

如果忘记密码,可以赋予他select any table 甚至dba的角色。


------解决方案--------------------
建同义词 授select 权限是正解。如果还有其他权限也可以。