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 專案的串連數不夠,導致系統無法正常運行,導致系統無正常運行。