當要跨服務器訪問數據庫時,我們可以使用dblink建立連接服務器間的通道。
如果需要創建全局 DBLink,首先要確定用戶有創建 dblink 的權限:
使用此語句查看:select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
grant create database link to 用戶名 //給用戶分配創建link權限
創建鏈接方法:
CREATE DATABASE LINK 鏈接名 CONNECT TO 服務器用戶名 IDENTIFIED BY 服務器密碼 USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 登錄服務器ip地址)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 服務名) ) )';
創建鏈接后可以通過下面語句查詢:
select * from 表名@鏈接名
從遠程服務器查詢或者插入數據過程中有可能遇到問題:
發生原因:查詢的表中有CLOB字段的數據
解決方法:
--創建臨時表 create table temp_test as select * from test@linkoracle where id =: ID ;
--將遠程數據插入到臨時表中 insert into temp_test select * from test@linkoracle where id = : ID;
--將臨時表數據插入到目標數據庫表中 insert into test select * from test_temp; --提交 commit; --查詢 select * from test_temp;