原文出處:http://blog.csdn.net/davidhsing/article/details/6408770
-------------------
1、如果需要創建全局 DBLink,則需要先確定用戶有創建 dblink 的權限:
- select?*?from?user_sys_privs?where?privilege?like?upper('%DATABASE?LINK%');??
?
如果沒有,則需要使用 sysdba 角色給用戶賦權:
- grant?create?public?database?link?to?dbusername;??
?
2、使用該用戶登錄 PL/SQL,使用命令:
- --?第一種方法:要求數據庫服務器?A?上?tnsnames.ora?中有?數據庫?B?的映射??
- --?--?create?database?link?數據庫鏈接名?connect?to?用戶名?identified?by?密碼?using?'本地配置的數據的實例名';??
create database link SQMDB
? connect to sqmdb identified by mdasil
? using 'ip:1521/sqmmt'
采用圖形配置界面則如下所示:
?
- --?第二種方法:直接配置??
- --?如果創建全局?dblink,必須使用?systm?或?sys?用戶,在?database?前加?public。??
- create?/*?public?*/?database?link?dblink1??
- connect?to?dbusername?identified?by?dbpassword??
- using?'IP地址:1521/OSS';??
- ??
- --?數據庫參數?global_name=true?時要求數據庫鏈接名稱跟遠端數據庫名稱一樣。數據庫全局名稱可以用以下命令查出??
- --?select?*?from?global_name;??
?
3、查詢數據:
?
- --?查詢、刪除和插入數據和操作本地的數據庫是一樣的,只不過表名需要寫成“表名@dblink服務器”而已。??
- select?xxx?FROM?表名@數據庫鏈接名;??
?
4、刪除 DBLink
- drop?/*?public?*/?database?link?dblink1;??
?
5、創建和刪除同義詞
- create?or?replace?synonym?同義詞名?for?表名;??
- create?or?replace?synonym?同義詞名?for?用戶.表名;??
- create?or?replace?synonym?同義詞名?for?表名@數據庫鏈接名;??
- drop?synonym?同義詞名;??
?
6、創建和刪除視圖
- create?or?replace?view?視圖名?as?(select?字段?from?用戶.表名@dblink1);??
- drop?view?視圖名;??
?
7、注意:
創建 DBLink 很簡單,但是在使用中后臺卻出現鎖,查看這個鎖的方法可以去 console 中看到或者查詢數據庫。每次使用dblink查詢的時候,均會與遠程數據庫創建一個連接,dblink 應該不會自動釋放這個連接,如果是大量使用 dblink 查詢,會造成 web 項目的連接數不夠,導致系統無法正常運行,導致系統無正常運行。