打扰下,问个问题,我有用户user1,用户user2,我想让用户user1用户对用户user2下面所有对象的select、insert、delete、update、drop。我原来的方法是,一个对象一个对象赋予权限
conn u1/u1@orcl;
grant select,insert,update,delete,drop to u2;
......这样如果把u1的所有对象(表、视图、存储过程......)的权限赋予u2的话,这样操作不知道要做到何时呢!
大家有什么好的办法,一条sql就赋予完毕了呢?
conn u1/u1@orcl;
grant select,insert,update,delete,drop to u2;
......这样如果把u1的所有对象(表、视图、存储过程......)的权限赋予u2的话,这样操作不知道要做到何时呢!
大家有什么好的办法,一条sql就赋予完毕了呢?
解决方案 »
- 很简单的问题,求高手来,oracle 数据库名列表的获取
- Oralce如何实时将数据库A一个表A产生的记录搬到另一个数据库B同结构的表B,并将数据库A的表A原记录删除
- 数据统计 (高手请进-->>)
- 删除表中的重复记录
- oracle中存储过程的问题
- 要搞plsql了,大家有什么好的学习方法或者好的学习资源推荐?
- TNS:12560错误?求救!!!!!
- 请教:如何解决 PLS-00201: identifier 'UTL_RAW.BIT_AND' must be declared
- 请教关于表名的同义词的2个小问题。谢谢
- 奇怪!我的enterprise manager 导航器里的内容怎么就只有“组”,“节点”两项?
- 求一个sql语句
- 帮忙看一下我的sql语句错在哪了。
v_objname varchar2(50);
cursor v_cursor is
select object_name from user_objects where owner='USER2' and object_type='TABLE';
begin
open v_cursor;
loop
fetch v_cursor into v_objname;
exit when v_cursor%NOTFOUND;
dbms_output.put_line('grant all on '||v_objname||' to USER2;');
end loop;
close v_cursor;
end;
/把运行结果拷到一个.sql文件里再一次运行就可以了
v_objname varchar2(50);
v_str varchar2(200);
cursor v_cursor is
select object_name from user_objects where owner='USER2' and object_type='TABLE';
begin
open v_cursor;
loop
fetch v_cursor into v_objname;
exit when v_cursor%NOTFOUND;
v_str := 'grant all on '||v_objname||' to USER1';
execute immediate v_str;
end loop;
close v_cursor;
end;
/
from user_objects
where object_type='TABLE';执行上面的语句,将结果保存成.sql文件,再执行之。
v_objname varchar2(50);
v_str varchar2(100);
cursor v_cursor is
select object_name from user_objects where owner='USER1' and object_type='TABLE';
begin
open v_cursor;
loop
fetch v_cursor into v_objname;
exit when v_cursor%NOTFOUND;
v_str := 'grant all on '||v_objname||' to USER2';
execute immediate v_str;
end loop;
close v_cursor;
end;
/如果不想先生成SQL再运行的话
可以按上面的代码执行一次就可以了
代码中object_type='TABLE'是以表为例子
只会把USER1所有表的权利授予USER2
如果你还想对于USER1的其他对象给USER2授权 那么把object_type的内容换一下就可以了
或者在后面加or object_type=...