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