当要跨服务器访问数据库时,我们可以使用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;