假设有用户A、B
A用户建立了表a1、a2、a3
B用户简历了表b1、b2、b3哪么已A用户登陆数据库,需要访问b1,只能用select * from B.b1这样来访问吗???由于我计划从SQL Server转换到oracle 10g原来使用Windows域控服务器来控制用户权限。
但到Oracle中应该如何控制权限呢?
首先一个数据库里面有很多个不同部门的表,我们所有的表是按部门建立的,原来的程序都是直接写表名的,不会加前缀的
这样在Oracle里面都要加前缀???小弟才疏学浅望大家多多献策.
A用户建立了表a1、a2、a3
B用户简历了表b1、b2、b3哪么已A用户登陆数据库,需要访问b1,只能用select * from B.b1这样来访问吗???由于我计划从SQL Server转换到oracle 10g原来使用Windows域控服务器来控制用户权限。
但到Oracle中应该如何控制权限呢?
首先一个数据库里面有很多个不同部门的表,我们所有的表是按部门建立的,原来的程序都是直接写表名的,不会加前缀的
这样在Oracle里面都要加前缀???小弟才疏学浅望大家多多献策.
比如在B用户下执行
grant select,insert,update,delete on B1 to A;
然后就可以在A用户下对B.B1表进行相关操作了
------------------------------------------------------------------------
A 用户要有B用户的访问权限也可以通过DBLINK来实现 但是分配权限还是比较好的
这样在Oracle里面都要加前缀??? 没有看懂你提的这个问题 ,如果只是访问别的用户底下的表 ,授权就可以了!
不加前缀的话sql默认查询当前用户的表,到时候去提示“表或视图不存在”
首先一个数据库里面有很多个不同部门的表,我们所有的表是按部门建立的,原来的程序都是直接写表名的,不会加前缀的
这样在Oracle里面都要加前缀???
[/Quote]
Oracle里边的表默认的模式是属于建表的用户,你用哪个用户建表,其他用户访问时就的加该用户名.表
如果你想不该程序直接用表名可以用public synonym
create public synonym 程序中的表名 for 用户名.表;
当然要有相应权限
如: grant select,insert,update,delete on B1 to A;
或者grant all on B1 to A;
用建立同义词的方式避免前缀
CREATE PUBLIC SYNONYM B1 FOR B.B1;