Oracle——04同義詞與資料庫連結

zhyp29發表於2016-05-24
Oracle——04同義詞與資料庫連結
Oracle的同義詞(synonyms)從字面上理解就是別名的意思,和試圖的功能類似,就是一種對映關係。本文介紹如何建立同義詞語句,刪除同義詞以及檢視同義詞語句。

oracle的同義詞總結:
從字面上理解就是別名的意思,和試圖的功能類似。就是一種對映關係。

1.建立同義詞語句:
create public synonym table_name for user.table_name;

其中第一個user_table和第二個user_table可以不一樣。
  此外如果要建立一個遠端的資料庫上的某張表的同義詞,需要先建立一個Database Link(資料庫連線)來擴充套件訪問,然後在使用如下語句建立資料庫同義詞:create synonym table_name for table_name@DB_Link;
  當然,你可能需要在user使用者中給當前使用者(user2)授權: grant select/delete/update on user2

2.刪除同義詞:
drop public synonym table_name;

3.檢視所有同義詞:
select * from dba_synonyms

同義詞擁有如下好處:節省大量的資料庫空間,對不同使用者的操作同一張表沒有多少差別;擴充套件的資料庫的使用範圍,能夠在不同的資料庫使用者之間實現無縫互動;同義詞可以建立在不同一個資料庫伺服器上,通過網路實現連線。

Oracle資料庫中提供了同義詞管理的功能。Oracle同義詞是資料庫方案物件的一個別名,經常用於簡化物件訪問和提高物件訪問的安全性。

AD:
在Oracle中對使用者的管理是使用許可權的方式來管理的,也就是說,如果我們想使用資料庫,我們就必須得有許可權,但是如果是別人將許可權授予了我們,我們也是能對資料庫進行操作的,但是我們必須要已授權的表的名稱前鍵入該表所有者的名稱,所以這就是比較麻煩的,遇到這種情況,我們該怎麼辦呢?建立個Oracle同義詞吧!這樣我們就可以直接使用同義詞來使用表了。

1.同義詞的概念
Oracle資料庫中提供了同義詞管理的功能。同義詞是資料庫方案物件的一個別名,經常用於簡化物件訪問和提高物件訪問的安全性。在使用同義詞時,Oracle資料庫將它翻譯成對應方案物件的名字。與檢視類似,同義詞並不佔用實際儲存空間,只有在資料字典中儲存了同義詞的定義。在Oracle資料庫中的大部分資料庫物件,如表、檢視、同義詞、序列、儲存過程、包等等,資料庫管理員都可以根據實際情況為他們定義同義詞。

2.Oracle同義詞的分類
Oracle同義詞有兩種型別,分別是公用Oracle同義詞與私有Oracle同義詞。
1)公用Oracle同義詞:由一個特殊的使用者組Public所擁有。顧名思義,資料庫中所有的使用者都可以使用公用同義詞。公用同義詞往往用來標示一些比較普通的資料庫物件,這些物件往往大家都需要引用。
2)私有Oracle同義詞:它是跟公用同義詞所對應,他是由建立他的使用者所有。當然,這個同義詞的建立者,可以通過授權控制其他使用者是否有權使用屬於自己的私有同義詞。

3.Oracle同義詞建立及刪除
建立公有Oracle同義詞的語法:Create [public] synonym 同義詞名稱 for [username.]objectName;
Drop [public] synonym 同義詞名稱

4.Oracle同義詞的作用
  同義詞擁有如下好處:
       節省大量的資料庫空間,對不同使用者的操作同一張表沒有多少差別;
       擴充套件的資料庫的使用範圍,能夠在不同的資料庫使用者之間實現無縫互動;
       同義詞可以建立在不同一個資料庫伺服器上,通過網路實現連線

1) 多使用者協同開發中,可以遮蔽物件的名字及其持有者。如果沒有同義詞,當操作其他使用者的表時,必須通過user名.object名的形式,採用了Oracle同義詞之後就可以隱蔽掉user名,當然這裡要注意的是:public同義詞只是為資料庫物件定義了一個公共的別名,其他使用者能否通過這個別名訪問這個資料庫物件,還要看是否已經為這個使用者授權。
2) 為使用者簡化sql語句。上面的一條其實就是一種簡化sql的體現,同時如果自己建的表的名字很長,可以為這個表建立一個Oracle同義詞來簡化sql開發。
3)為分散式資料庫的遠端物件提供位置透明性。

5.Oracle同義詞在資料庫鏈中的作用
資料庫鏈是一個命名的物件,說明一個資料庫到另一個資料庫的路徑,通過其可以實現不同資料庫之間的通訊。

Create database link 資料庫鏈名 connect  to  user名 identified by 口令  using ‘Oracle連線串’; 訪問物件要通過 object名@資料庫鏈名。同義詞在資料庫鏈中的作用就是提供位置透明性。


using後面指定的是連結字串,也就是遠端資料庫的網路服務名,這個服務名儲存在TNSNAMES.ORA檔案中,在該檔案中定義了協議、主機名、埠和資料庫名。
 
注意:建立資料庫連結的帳號必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統許可權,用來登入到遠端資料庫的帳號必須有CREATE SESSION許可權。這兩種許可權都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK許可權在DBA中)。
 
一個公用資料庫連結對於資料庫中的所有使用者都是可用的,而一個私有連結僅對建立它的使用者可用,是不可授權的。由一個使用者給另外一個使用者授權私有資料庫連結是不可能的,一個資料庫連結要麼是公用的,要麼是私有的。
 
建立資料庫連結時,還可以使用預設登入方式,即不指定遠端資料庫的使用者名稱和密碼:
create public database link zrhs_link using ‘zrhs’;
在不指定使用者名稱和口令的情況下,ORACLE使用當前的使用者名稱和口令登入到遠端資料庫
 
 
如果沒有配置TNSNAMES.ORA,第二種建立db link的方法:
 create database link test connect to scott identified by tiger using
 '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.112)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )'
 
 
查詢建立好的db link:
select * from sys.link$;
 
一直以為只有private db link可以查到密碼,原來public 的dblink 也可以看到密碼。
只是需要用sys使用者登入查詢。 
查詢dblink的user 密碼,用sys 登陸
select * from SYS.link$;
select * from SYS.link$ l, SYS.user$ u
 
 WHERE l.owner# IN (SELECT kzsrorol
                      FROM x$kzsro) AND l.owner# = u.user#;
 
如果是private 的dblink,就可以用owner登入,查詢 user_db_links
select * from user_db_links;
 
db link建立好之後,訪問物件
訪問物件要通過 object名@資料庫鏈名。 
 
4.同義詞的刪除
drop [public] synonym 同義詞名稱
要想刪除私有同義詞就 省略 public 關鍵字
要想刪除公共同義詞就要 包括public 關鍵字
例如:
drop synonym emp; --刪除名為emp 的私有同義詞
drop public synonym public_emp; --刪除名為public_emp的公有同義詞


同義詞概念
Oracle的同義詞(synonyms)從字面上理解就是別名的意思,和檢視的功能類似,就是一種對映關係。它可以節省大量的資料庫空間,對不同使用者的操作同一張表沒有多少差別;它擴充套件了資料庫的使用範圍,能夠在不同的資料庫使用者之間實現無縫互動;Oracle資料庫中提供了同義詞管理的功能。同義詞是資料庫物件的一個別名,經常用於簡化物件訪問和提高物件訪問的安全性。在使用同義詞時,Oracle資料庫將它翻譯成對應方案物件的名字。與檢視類似,同義詞並不佔用實際儲存空間,只有在資料字典中儲存了同義詞的定義。在Oracle資料庫中的大部分資料庫物件,如表、檢視、物化檢視、序列、函式、儲存過程、包、同義詞等等,資料庫管理員都可以根據實際情況為他們定義同義詞。

同義詞分類
Oracle同義詞有兩種型別,分別是Oracle公用同義詞與Oracle私有同義詞。普通使用者建立的同義詞一般都是私有同義詞,公有同義詞一般由DBA建立,普通使用者如果希望建立同義詞,則需要CREATE PUBLIC SYNONYM這個系統許可權。

1)Oracle公用同義詞:由一個特殊的使用者組Public所擁有。顧名思義,資料庫中所有的使用者都可以使用公用同義詞。公用同義詞往往用來標示一些比較普通的資料庫物件,這些物件往往大家都需要引用。

2)Oracle私有同義詞:它是跟公用同義詞所對應,他是由建立他的使用者所有。當然,這個同義詞的建立者,可以通過授權控制其他使用者是否有權使用屬於自己的私有同義詞。

假設oracle有以下兩個使用者: admin , visitor
我們在admin下建立了 testtable 這個表,並且對visitor使用者賦權
然後我們用visitor登陸 : 查詢這個表的時候我們一定需要這樣寫
select * from admin.testtable
如果直接寫 select * from testtable oracle會報錯說表不存在
但是我們可以在visitor裡建立[私有同義詞] 讓 testtable = admin.testtable
這樣在visitor下就可以直接輸入 select * from testtable進行查詢
但是如果使用者很多的情況下會覺得很麻煩,因為每個使用者都需要加[私有同義詞] testtable=admin.testtable
所以就出現了 [公有同義詞]
直接在admin使用者下建立公有同義詞 testtable = testtable
這樣做好後,所有的使用者都可以直接使用
select * from testtable 進行訪問而並不需要加字首,也不用再加[私有同義詞]了

專案中例子:
oracle 使用者 infsa 下 有表 a,把許可權賦給infss使用者

在infsa下執行
grant all on a to infss ;
create public synonym inf for a;

同義詞作用
1) 多使用者協同開發中,可以遮蔽物件的名字及其持有者。如果沒有同義詞,當操作其他使用者的表時,必須通過user名.object名的形式,採用了Oracle同義詞之後就可以隱蔽掉user名,當然這裡要注意的是:public同義詞只是為資料庫物件定義了一個公共的別名,其他使用者能否通過這個別名訪問這個資料庫物件,還要看是否已經為這個使用者授權。

2) 為使用者簡化sql語句。上面的一條其實就是一種簡化sql的體現,同時如果自己建的表的名字很長,可以為這個表建立一個Oracle同義詞來簡化sql開發。

3)為分散式資料庫的遠端物件提供位置透明性。

4)Oracle同義詞在資料庫連結中的作用

資料庫連結是一個命名的物件,說明一個資料庫到另一個資料庫的路徑,通過其可以實現不同資料庫之間的通訊。

Create database link 資料庫鏈名 connect to user名 identified by 口令 using ‘Oracle連線串’; 訪問物件要通過 object名@資料庫鏈名。同義詞在資料庫鏈中的作用就是提供位置透明性。

 

同義詞許可權管理
與同義詞相關的許可權有CREATE SYNONYM、CREATE ANY SYNONYM、CREATE PUBLIC SYNONYM許可權。

1:使用者在自己的模式下建立私有同義詞,這個使用者必須擁有CREATE SYNONYM許可權,否則不能建立私有同義詞。
如下所示,使用者DM缺少CREATE SYNONYM許可權,建立同義詞時會報ORA-01031錯誤

SQL> CREATE SYNONYM TEST FOR DM.TM_WGG_ATM_GTW_MON;

CREATE SYNONYM TEST FOR DM.TM_WGG_ATM_GTW_MON
ORA-01031: insufficient privileges
用sys賬號給DM賬號賦予CREATE SYNONYM的許可權

SQL> GRANT CREATE SYNONYM TO DM;
Grant succeeded.
然後建立私有同義詞

SQL> CREATE SYNONYM TEST FOR DM.TM_WGG_ATM_GTW_MON;
Synonym created

2:如果需要在其它模式下建立同義詞,則必須具有CREATE ANY SYNONYM的許可權。

看下面的例子
使用者DM想建立SCOTT模式下的私有同義詞
SQL> CREATE SYNONYM SCOTT.EM FOR SOCTT.EMP;
CREATE SYNONYM SCOTT.EM FOR SOCTT.EMP

ORA-01031: insufficient privileges
用sys賬號給DM賬號賦予CREATE ANY SYNONYM的許可權

SQL> GRANT CREATE ANY SYNONYM TO DM;
Grant succeeded.

SQL> CREATE SYNONYM SCOTT.EM FOR SOCTT.EMP;
Synonym created

3:建立公有同義詞則需要CREATE PUBLIC SYNONYM系統許可權。

 

建立同義詞
建立同義詞的語法如下:
普通用法如下所示:
CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema.] 同義詞名稱 FOR [ schema.] object [ @dblink ];
--專有(私有)同義詞
CREATE SYNONYM SYSN_TEST FOR TEST;

--公共同義詞
CREATE PUBLIC SYNONYM PUBLIC_TEST FOR TEST;

如果要建立一個遠端的資料庫上的某張表的同義詞,需要先建立一個Database Link(資料庫連線)來擴充套件訪問,然後再使用如下語句建立資料庫同義詞:create synonym table_name for table_name@DB_Link;

公共同義詞是和使用者的schema無關的,但是公共的意思並不是所有的使用者都可以訪問它,必須被授權後才能進行;私有同義詞是schema的物件

 

檢視同義詞
SQL> SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME IN ( 'SYSN_TEST','PUBLIC_TEST');

OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK

------------------------------ ------------------------------
PUBLIC PUBLIC_TEST ETL TEST

ETL SYSN_TEST ETL TEST

SQL> SELECT * FROM USER_SYNONYMS
使用同義詞
SELECT * FROM SYSN_TEST;

使用同義詞可以保證當資料庫的位置或物件名稱發生改變時,應用程式的程式碼保持穩定不變,僅需要改變同義詞;

當使用一個沒有指定schema的同義詞是,首先在使用者自己的schema中尋找,然後再公共同義詞中尋找

刪除同義詞
DROP [ PUBLIC ] SYNONYM [ schema. ] 同義詞名稱 [ FORCE ];
DROP SYNONYM SYSN_TEST;

DROP PUBLIC SYNONYM PUBLIC_TEST;--當同義詞的原物件被刪除是,同義詞並不會被刪除

編譯同義詞
ALTER  SYNONYM T COMPILE; --當同義詞的原物件被重新建立時,同義詞需要重新編譯

對原物件進行DDL操作後,同義詞的狀態會變成INVALID;當再次引用這個同義詞時,同義詞會自動編譯,狀態會變成VALID,無需人工干預,當然前提是不改變原物件的名稱

SQL> SELECT * FROM T;

ID NAME
----------- -------------

SQL> SELECT * FROM TEST;

ID NAME
----------- --------------

SQL> ALTER TABLE TEST ADD SEX NUMBER(1);

Table altered

SQL> SELECT OBJECT_NAME, STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME='T';

OBJECT_NAME STATUS
------------------------------ -------
T INVALID
問題錦集
 

1:公用同義詞與私有同義詞能否同名呢?如果可以,訪問同義詞時,是共有同義詞還是私有同義詞優先?

可以,如果存在公用同義詞和私有同義詞同名的情況,在訪問同義詞是,訪問的是私有同義詞的指向的物件。

2:為啥OE使用者建立的公用同義詞,HR使用者不能訪問呢?

因為HR沒有訪問OE模式下物件的許可權,如果OE模式給HR使用者賦予了SELECT物件等許可權,那麼HR使用者即可訪問。

3:物件、私有同義詞、公共同義詞是否可以存在三者同名的情況?

在使用者kerry下,建立表TEST
SQL>CREATE TABLE TEST
AS SELECT * FROM USER_OBJECTS WHERE 1= 0;

建立私有同義詞TEST
SQL> CREATE SYNONYM TEST FOR REF.REF_WGG_STUDENT;

CREATE SYNONYM TEST FOR REF.REF_WGG_STUDENT
ORA-00955: name is already used by an existing object

注意:物件(表)與私有同義詞不能同名,否則會報ORA-00955錯誤
建立公共同義詞TEST,如下所示,公共同義詞可以物件同名
SQL> CREATE PUBLIC SYNONYM TEST FOR REF.REF_WGG_STUDENT;

Synonym created

訪問TEST時,如下所示:它是表TEST的內容,而不是公共同義詞的內容
SQL> SELECT * FROM TEST;

OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY
----------- ---------------- ---------- -------------- ------------ --------- ------------- ----------- ------- --------- --------- ---------
刪除表TEST後,此時資料庫訪問的是公共同義詞

 

SQL> DROP TABLE TEST PURGE;
Table dropped

SQL> SELECT * FROM TEST;

ID NAME
----------- --------------------------------
1 12

SQL>
結論:存在同名物件和公共同義詞時,資料庫優先選擇物件作為目標,存在同名私有物件和公共物件時,資料庫優先選擇私有同義詞作為目標


Oracle同義詞資料庫連結synonymdatabase link 
一、背景
有兩個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()。


oracle dblink用法總結
oracle中的database link是定義一個資料庫到另一個資料庫的路徑的物件,database link允許你查詢遠端表和執行遠端程式。在任何分散式環境裡,dblink都是必要的,另外注意database link是單向的連線。在建立database link的時候,oracle在資料字典中儲存了相關的database link的資訊,在使用database link的時候,oracle再通過oracle net使用者預先定義好的連線資訊訪問相應的遠端資料庫來完成相應的工作。

1、在建立database link之前需要注意:
(1)確認從local database到remote database的網路連線是否正常,tnsping要能成功。
(2)確認在remote database上面有相應的訪問許可權。

2、oracle database link可分為下面三類:
(1)private:建立的是使用者級別的dblink,只有建立該dblink的使用者才可以使用這個dblink來訪問遠端的資料庫,同時也只有該使用者可以刪除這個dblink。
(2)public:建立的是資料庫級別的dblink,本地資料庫中所有的使用者資料庫訪問許可權的使用者或者pl/sql程式都能使用這個dblink。
(3)global:建立的是網路級別的dblink,這是對於oracle network而言的。

3、建立dblink需要的許可權:
如果你新建了一個使用者,那麼你必須為它授予以下許可權才可以建立dblink:create database link、create public database link、create session。

4、建立dblink:
-- 如果不指定public,預設的是private,host後面可以是ip地址,也可以是解析過的域名
CREATE PUBLIC DATABASE LINK db_link_test02 CONNECT TO rms IDENTIFIED BY rms
  USING '(DESCRIPTION= 
          (ADDRESS_LIST = 
                (ADDRESS=(PROTOCOL=tcp)(HOST=mom_uat_new)(PORT=1521)))
          (CONNECT_DATA=
              (SERVICE_NAME=ormst1)
              )
         )';
5、檢視dblink:

檢視dblink,可以從dba_objects、dba_db_links這兩張表去查:
SELECT *
  FROM dba_objects do
 WHERE do.object_type = 'DATABASE LINK';

SELECT *
  FROM dba_db_links ddl;
除了上面兩張表,還有all_db_links、user_db_links。

6、使用dblink:
-- 最簡單的用法
SELECT *
  FROM table_name@database_link;

-- 不想讓別人知道database link名字的時候,可以使用同義詞包裝一下

CREATE synonym table_name FOR table_name@database_link;
SELECT *
  FROM table_name;

-- 也可以建立一個檢視來封裝
CREATE view table_name_v AS
  SELECT *
    FROM table_name@database_link;

7、刪除dblink:
-- 刪除public型別的dblink
DROP PUBLIC DATABASE LINK dblink_name;

-- 刪除private型別的dblink,只有建立者自己能刪
DROP DATABASE LINK dblink_name;
 

1、同義詞:
在分散式資料庫環境中,為了識別一個資料庫物件,必須規定主機名、伺服器名、物件的擁有者和物件名。這無疑增加了訪問者的訪問難度。為了給不同的使用者使用資料庫物件時提供一個簡單的、唯一標識資料庫物件的名稱,可以為資料庫物件建立同義詞。

舉例說明:假設我們在資料庫database中有一個使用者user擁有表table,那麼當資料庫database中的其他使用者需要訪問table表的時候需要使用user.table的方式訪問,這就要求我們在訪問table表的時候必須知道table表的擁有者是誰。為了避免這種現象我們可以建立一個同義詞synonym指向user.table表,那麼以後任何使用者都可以直接使用synonym訪問user的table表了。

同義詞可以指向的物件有表、檢視、過程、函式、包和序列。
同義詞有公共同義詞和私有同義詞兩種。公共同義詞是資料庫中所有使用者共享,而私有同義詞是隻有自己可以使用。

使用SQL建立同義詞:
 Sql程式碼
create [public] synonym [schema.]synonymName for [schema.]object[@dblink]  
--public表示建立一個公共同義詞,預設是私有的。@dblink表示建立的是遠端資料庫的同義詞,dblink是遠端資料庫連結的名稱。  
 

使用SQL刪除同義詞:
 Sql程式碼
drop [public] synonym [schema.]synonymName  
--public表示刪除一個公用同義詞,如果不指定則預設是刪除私有同義詞,當對應的私有同義詞不存在時則報錯。  
 


2、資料庫連結:
作為一個分散式資料庫系統,Oracle提供了使用遠端資料庫的功能。如果表在遠端資料庫中,為了指定遠端資料庫中一個物件的訪問路徑,必須建立一個資料庫連結,使本地使用者通過這個資料庫連結登入到遠端資料庫上使用它的資料。資料庫連結也有公有和私有兩種,私有則只有建立者可以訪問,預設是私有的。
 
建立資料庫連結:
 Sql程式碼
        create [public] database link dababaseLinkName [connect to user identified by password] using connectString.  
--當建立一個資料庫連結時,必須指定與資料庫相連結的使用者名稱、使用者口令以及與遠端資料庫相連的伺服器名字。如果不指定使用者,則Oracle 

--將使用本地使用者名稱和口令來建立與遠端資料庫的連結。假設:我現在以admin/admin登入到了本地的Oracle資料庫中,那麼如果在我建立資料庫  
--連結的時候沒有指定user和password,Oracle將使用本地的使用者名稱和口令admin/admin進行登入建立資料庫連結。  
--connectString是類似於這種形式“127.0.0.1:1521/Orcl”,就是主機ip:埠號/資料庫服務名。其中埠號預設是1521,主機ip預設是本地的。  
--所以當建立本地的資料庫連結時connectString可以寫成‘ORCL’,即資料庫服務名。  
--建立資料庫連結的例子:create public database link localLink connect to username identified by password using '127.0.0.1:1521/ORCL';  
 
 
使用遠端資料庫連結:
建立了遠端資料庫連結以後,我們就可以使用它了。假設我們現在建立了一個到遠端資料庫ORCL的資料庫連結orclLink,在ORCL的當前使用者中有一個表t_module, 使用者scott有一個表emp,那麼我們就可以利用如下方式訪問t_module中的資料了:
 
Sql程式碼
select * from t_module@orclLink  
 
但是當我們需要訪問scott的emp表的時候則需要加入schema,訪問方式如下:
 
Sql程式碼
select * from scott.emp@myLink  
 
我們也可以為t_module建立遠端的同義詞:
 
Sql程式碼
create synonym moduleSyn for t_module@orclLink  
 
為其他使用者表如scott的emp表建立同義詞的時候則需要加入schema,如:
 
Sql程式碼
create synonym scottEmp for scott.emp@orclLink  
 
建立了遠端的同義詞後,我們就可以使用如下訪問方式了:
 
Sql程式碼
select * from moduleSyn;  
select * from scottEmp;  
 

刪除資料庫連結:
 
Sql程式碼
drop [public] database link databaseLinkName

相關文章