萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle中使用同義詞

Oracle中使用同義詞

   一、背景

  有兩個sid:Asid,Bsid,在Asid下有兩個用戶Auser1,Auser2,在Bsid下有一個用戶Buser1。其中Auser2和Buser1建立了dblink。現希望通過登錄Buser1訪問Auser1上的三張表table1,table2,table3信息和函數function1。

  二、步驟

  ①登錄Auser1對Auser2授權(若需要刪除則加上delete)

  grant insert,select,update on table1 to Auser2;

  grant insert,select,update on table2 to Auser2;

  grant insert,select,update on table3 to Auser2;

  grant execute on function1 to Auser2;

  ②登錄Auser2建立同義詞

  create synonym table1 for Auser1.table1;

  create synonym table2 for Auser1.table1;

  create synonym table3 for Auser1.table1;

  create synonym function1 for Auser1.function1;

  ③登錄Buser1查找db_link名(例如查出來的db_link名為mydblink1)

  select username,db_link from user_db_links

  ④建立Buser1的同義詞

  create synonym table1 for Auser2.table1@mydblink1;

  create synonym table2 for Auser2.table2@mydblink1;

  create synonym table3 for Auser2.table3@mydblink1;

  create synonym function1 for Auser2.function1@mydblink1;

  ⑤測試

  此時登錄Buser1通過select * from table1就可以訪問table1了。

  三、注意點

  也可以建立procedure的同義詞,但是這樣執行的過程中不允許commit。如果要提交的話請在如JDBC中commit()。

copyright © 萬盛學電腦網 all rights reserved