Oracle实现跨库查询

场景模拟:
在这里插入图片描述
当前登录的库是ocrla,然后我的需求是希望直接通过SQL能够查询到ocrlb库的数据。
Oracle在进行跨库访问时,可以通过创建dblink实现。
【第一步:用户权限】
查看当前用户是否拥有database link 权限

select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='ZHANGYU';
-- 如果user_sys_privs数据不多可以直接查找用户,注意这里用户名大写

在这里插入图片描述
如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆为用户赋予创建权限

grant create public database link to zhangyu;

创建完成之后再次查询user_sys_privs即可
【第二步:创建database link】
俩种方式可以通过pl/sql developer图形化创建,也可以通过SQL语句创建,这里直接通过SQL方式创建

create database link   LINKTEST
  connect to  zhangyu   identified by "123456"
  using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ocrla)  ) )'

备注:如果密码是数字开头,用""括起来

在这里插入图片描述

【第三步:验证】
创建完成之后就可以通过下面的方式查询跨库的数据:
表名@对应的DataBase Link名称

SELECT * FROM  tableName@LINKTEST

创建完成后也可以通过pl/sql developer查看
在这里插入图片描述
DATABASE LINK 的删除

DROP PUBLIC DATABASE LINK link_name;

猜你喜欢

转载自blog.csdn.net/Octopus21/article/details/114964969