1.可以直接授权A用户下的表给B用户,但如果表多个就要执行多个授权操作
grant select any table to A; --这个授予A查询所有表的权限,权限过大
select 'GRANT SELECT ON '||table_name||' to B;' from ALL_TABLES a where a.OWNER='A';
grant select on A.XX to B; --逐个授权
grant all on A.XX to B;
2.创建同义词进行访问,需要登录要访问的用户,或者创建public(所有用户都可以访问)
create synonym xx for B.TABLENAME;
select 'CREATE SYNONYM '||table_name||' FOR A.'||table_name from dba_tables where owner = 'A';
drop synonym xx;
3.创建角色,用游标给角色授权,然后把角色授予给用户
1)创建角色
create role select_all_A;
create role select_all_B;
2)通过游标给角色授权
declare
CURSOR a_tabname is select table_name from dba_tables where owner = 'A';
v_tabname dba_tables.table_name%TYPE;
sqlstr VARCHAR2(200);
begin
open a_tabname;
loop
fetch a_tabname into v_tabname;
exit when a_tabname%NOTFOUND;
sqlstr := 'grant select on A.' || v_tabname ||' to select_all_A';
execute immediate sqlstr;
end loop;
close a_tabname;
end;3)角色授予用户
grant select_all_A to B;
4)查询角色的权限
select * from DBA_roles a where a.ROLE='SELECT_ALL_OSP_SSM';
select * from role_sys_privs a where a.ROLE='SELECT_ALL_OSP_SSM';
select * from ROLE_TAB_PRIVS a where a.ROLE='SELECT_ALL_OSP_YAM';
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




