一、背景
有两个sid:Asid,Bsid,在Asid下有两个用户Auser1
Auser2,在Bsid下有一个用户Buser1。其中Auser2和Buser1建立了dblink。现希望通过登录Buser1访问Auser1上的三张表table1,table2,table3信息和函数function1。
二、步骤
①登录Auser1对Auser2授权(若需要删除则加上)
grant
select
on table1 to Auser2;
grant
select
on table2 to Auser2;
grant
select
on table3 to Auser2;
grant execute on function1 to Auser2;
②登录Auser2建立同义词
create synonym table1 for e1;
create synonym table2 for e1;
create synonym table3 for e1;
create synonym function1 for tion1;
③登录Buser1查找db_link名(例如查出来的db_link名为mydblink1)
select username
db_link from user_db_links
④建立Buser1的同义词
create synonym table1 for [email protected];
create synonym table2 for [email protected];
create synonym table3 for [email protected];
create synonym function1 for [email protected];
⑤测试
此时登录Buser1通过select * from table1就可以访问table1了。
三、注意点
也可以建立procedure的同义词,但是这样执行的过程中不允许mit。如果要提交的话请在如JDBC中mit()。