oracle新建用户问题!

whyuuk 2005-12-27 04:41:25
请教高手:我想在在用的一个数据库(msmd)上通过企业管理器或sqlplus新建一个用户(test),只给它查询所有用户表格的权限(包括统计,视图等),可不可以,具体怎么实现?我自己已经通过企业管理器新建了一个,但是我发现以新建的用户身份登陆的时候,执行一些统计脚本,它一直提示所查询的表或视图不存在。我不知道是何原因,望高手指教,提前谢了!
...全文
657 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigsin 2006-01-05
  • 打赏
  • 举报
回复
select * from msmd.tablename
如果这样不行的话 你在控制台里 安全性—> 用户—>test—> 对象里把 MSMD里表的SELECT 权限给TEST
在执行
select * from msmd.tablename
不可能不行 我的程序就这么实现的
xiaosheng2008 2006-01-04
  • 打赏
  • 举报
回复
create public synonym for user.tablename
whyuuk 2005-12-29
  • 打赏
  • 举报
回复
atsoftworld(游霞)
你好,谢谢你的回复,但是我对你说的不是太明白,能不能告诉我具体是怎么操作的?再次感谢!
atsoftworld 2005-12-29
  • 打赏
  • 举报
回复
如果你不想用这样也可以,使用SYNONYMS在TEST用户下建立一个MSDM的同名对象,该对象指向MSMD,你只要在TEST用户下使用SELECT * FROM TEST就可以查询了,。
whyuuk 2005-12-28
  • 打赏
  • 举报
回复
老大们,还是不行啊!可能是我描述不够准确吧!其实我就想达到一个目的:让msmd库自身用户可以执行的脚本,test用户拿过来不做任何改动就可以直接执行;SELECT * FROM MSMD.TEST;前面这种方式我想应该是可以查到结果的,但是我的脚本里,如果有几百行的话,我岂不是要一个一个的来改,那肯定是不现实的啊!这样我就可以随时终止这个用户(test)的使用或改动他的登陆密码而不至于影响到其他的在用系统.其实test的权限都无所谓的,因为是我来控制他什么时间可以用,什么时间不可以用!这个能不能实现啊?如果不行的话,我就不在这个上面浪费时间了!
18687874 2005-12-28
  • 打赏
  • 举报
回复
表或视图是否是test用户创建,如果不是,那么查询的时候应该要在表前面加上创建者的用户名

select * from user.tablename

另外就是需要SELECT ANY TABLE 的权限,这样就可以了
duanduan1122 2005-12-28
  • 打赏
  • 举报
回复
应该可以解决了吧.呵呵
duanduan1122 2005-12-28
  • 打赏
  • 举报
回复
1. 给一个用户select any table的权限,但不想让该用户查询dictionary views;想在init<sid>.ora中将o7_dictionary_accessibility设置为false.
2. 这个参数是控制select any table权限使用的。
若该参数为 true,则有 select any table 权限的帐号则可查看
DBA_ V$等之类的数据字典,否(false),则只能看自己权限内的
如:user_, all_之类的字典。
duanduan1122 2005-12-28
  • 打赏
  • 举报
回复
呵呵,这个我知道.
create user TEST
identified by "password"
default tablespace TEST
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to TEST;
grant select any table to test; ----这个用户只能访问用户表,系统表你访问不到的.
需要打开一个开关.
boydgmx 2005-12-27
  • 打赏
  • 举报
回复
你在SELECT的时候,如果原本是:
SELECT * FROM TEST;
改成:
SELECT * FROM MSMD.TEST;

也就是说,访问其它用户的表,必须带上用户名。

这样只要有 SELECT ANY TABLE 权限,就可以达到你的需求了。
  • 打赏
  • 举报
回复
Unlimite 權限 c
进入图形化界面-->安全-->用户

选中相应的用户,上面的菜单点击第三个“系统”。
把 UNLIMITED TABLESPACE 这个系统权限赋给相应的用户就可以了!
whyuuk 2005-12-27
  • 打赏
  • 举报
回复
ronny5(兔子林)
你好,你说的第一个办法肯定是不可行的了,因为我想让test达到和msmd的自身用户同样的查询功能。你说的第二种办法,请详细告知!提前谢了!
ronny5 2005-12-27
  • 打赏
  • 举报
回复
test用户登录进去,只能读test这个schema下面的表,你要读msmd下面的,当然会提示表不存在拉

做法有几种,第一种:把那些表的select 权限给test,然后用 select * from msmd.table_name 来读取表

第二种,在test下面创建只读视图来访问msmd下面的表
whyuuk 2005-12-27
  • 打赏
  • 举报
回复
zhpsam109(昊子鳖鳖) :
你好,我按你的办法试了还是不行啊,还是提示表或视图不存在。我想原因不是出在权限上,因为我都尝试把DBA的权限给了test用户,但是还是出同样的提示!
zhpsam109 2005-12-27
  • 打赏
  • 举报
回复
create user TEST
identified by "password"
default tablespace TEST
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to TEST;
grant select any table to test;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧