步驟相關說明
基於Oracle11g
1.運行環境說明
兩個數據庫(如Oracle 11g,其他也可),以下稱爲目標庫,源庫,創建database link後需要訪問的庫爲目標庫。
目標庫爲:10.17.0.206:1521/YLZCDR
源庫爲:10.17.0.42:1521/orcl
1.1賦予權限。
在創建database link之前,我們需要判斷,登陸的用戶是否具備創建database link 的權限,所以我們執行以下的語句(用SD_JCPT用戶登陸源庫):
-- 查看SD_JCPT用戶是否具備創建database link 權限
SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%DATABASE LINK%') AND USERNAME='SD_JCPT';
如果查詢有返回行,則表示具備創建database link權限,否則,則需要使用sys登陸源庫爲SD_JCPT用戶賦予創建權限。
-- 給wangyong用戶授予創建dblink的權限
GRANT CREATE PUBLIC DATABASE LINK TO SD_JCPT;
此時,再執行上面查看是否具備權限的sql語句,會發現有返回行,表示SD_JCPT這個用戶已經具備創建database link的權限。
1.2 創建database link
create [public] database link dababaseLinkName [connect to user identified by password] using connectString.
創建一個名爲link2cdr的database link。
-- 注意一點,如果密碼是數字開頭,用“”括起來
CREATE PUBLIC DATABASE LINK link2cdr CONNECT TO SD_JCPT IDENTIFIED BY "SD_JCPT" USING '10.17.0.206:1521/YLZCDR';
2.爲database link使用同義詞synonym
create [public] synonym [schema.]synonymName for [schema.]object[@dblink] --public表示創建一個公共同義詞,默認是私有的。@dblink表示創建的是遠程數據庫的同義詞,dblink是遠程數據庫鏈接的名稱。
比如針對查詢目標庫所有表使用同義詞
SELECT * FROM tab@Link2cdr;
爲其他用戶或者當前用戶的對象建立同義詞,同義詞可以指向表、視圖、過程、函數、包和序列。
CREATE SYNONYM syn_tab FOR tab@Link2cdr;
建立同義詞後,可以使用如下訪問方式:
SELECT t.tname FROM syn_tab t;
3.刪除SYNONYM和database link
刪除數據庫鏈接:
drop [public] database link databaseLinkName;
--默認是刪除私有的數據庫鏈接。
刪除同義詞:
Sql代碼 drop [public] synonym [schema.]synonymName
-- public表示刪除一個公用同義詞,如果不指定則默認是刪除私有同義詞,當對應的私有同義詞不存在時則報錯。
-- 刪除database link
DROP PUBLIC DATABASE LINK link2cdr;
-- 刪除同義詞
DROP SYNONYM syn_tab;