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 '本地配置的數據的實例名';
采用圖形配置界面則如下所示:
-- 第二種方法:直接配置 -- 如果創建全局 dblink,必須使用 systm 或 sys 用戶,在 database 前加 public。 create /* public */ database link dblink1 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)))'; -- 數據庫參數 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 項目的連接數不夠,導致系統無法正常運行,導致系統無正常運行。
8、查看db_link
select * from ALL_DB_LINKS;
9、創建DBLINK實例
--創建DBLINK create /*public*/ database link DBLINK名稱 connect to 數據庫賬號 identified by 數據庫密碼 using '(description =(address_list =(address =(protocol = tcp)(host = 10.10.2.12)(port = 1521)))(connect_data =(SID = orcl)))'; /*首次創建*/