DBLink使用浅析

 

在工作过程中,遇到了些dblink的需求,将解决办法描述下来,便于总结

一、现状描述

独立 ZJ数据库A,独立HK数据库B分别位于两个不同服务器,IP分别为192.168.1.2,

192.168.1.3,互联互通

 

二、问题
1.新建一个HK数据库用户hkquery,密码hkquery,授权此用户可以查询HK的所有表,无修改提交等权限。
2.在ZJ数据库中创建一个dblink,能使zjquery用户通过hkquery连接到HK数据库。

目的:使业务人员可以通过zjquery用户登录ZJ数据库,查询HK数据库的数据,但不能有commit等修改权限。

 

三、解决方法
1.以管理员身份登录HK数据库,在命令窗口中执行(1),(2)语句(创建hkquery用户并授权)后退出.
--(1)新建一个HK数据库用户hkquery,密码hkquery,授权此用户可以查询HK数据库的table1,table2,table3指令表, 银行渠道表, 包表
create user HKQUERY
  identified by "HKQUERY";
-- Grant/Revoke role privileges
grant connect to HKQUERY;
grant resource to HKQUERY;

--(2)授权查询HK现有用户相关表权限给新建用户hkquery
--授权查询table1权限给hkquery
grant select on HK.table1  to hkquery;
--授权查询table2权限给hkquery
grant select on HK.table2  to hkquery;
--授权查询table3权限给hkquery
grant select on HK.table3  to hkquery;


2.若ZJ存在zjquery用户,不必执行该步骤,否则请已管理员身份登录后在命令窗口执行如下语句:
--创建zjquery用户
create user zjquery
  identified by "zjquery";
-- Grant/Revoke role privileges
grant connect to zjquery;
grant resource to zjquery;

3.给zjquery用户赋予创建和删除dblink权限
--授权ZJQUERY具有创建dblink权限
grant create database link to zjquery;
--授权ZJQUERY具有删除dblink权限
grant drop public database link to zjquery;

4.以zjquery用户登录数据库,在命令窗口执行如下语句:
(请注意,该语句是以HK为192.168.1.3,服务名为hk为例,若实际环境不相同,请修改)
--在zjquery环境下创建连接hkquery用户的dblink,名称为zjhkquery
--
create database link zjhkquery
  connect to hkquery identified by hkquery
  using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3)(PORT = 1521)) ) (CONNECT_DATA =  (SERVICE_NAME = hk) ))';

5.查询示例
--zjquery用户查询table1

select * from hk.table1@zjhkquery;
--zjquery用户查询table2

select * from hk.table3@zjhkquery;
--zjquery用户查询table3

select * from hk.table3@zjhkquery;

 

阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭