DATABASE LINK 使用一例

来源:互联网 发布:java程序设计考试题库 编辑:程序博客网 时间:2024/06/11 19:23

需求:
1.A库要访问B业务库数据,两个库分别位于不同的服务器上。
2.只能给A用户部分表的访问权限。

 

方案:
1.A库通过database link的方式访问B库数据。

2.B业务库上建只读用户RESERVE_VIEW授予部分表select的权限。
 
  A与B库只读用户RESERVE_VIEW建立db_link连接。

 

--1.a)业务库用户B登录,建只读用户RESERVE_VIEW
create user RESERVE_VIEW
  identified by 密码
  default tablespace RESERVE
  temporary tablespace TEMP
  profile DEFAULT;
 
--b)授予RESERVE_VIEW 权限
grant create session to RESERVE_VIEW; 
grant create any synonym to RESERVE_VIEW;

--2.业务库用户B给RESERVE_VIEW授只读权限
grant select on  PRPCITEMKINDORIGIN        to  RESERVE_VIEW;
grant select on  PRPCFEE                   to  RESERVE_VIEW;

 

--3.RESERVE_VIEW用户登录建同义词

create or replace SYNONYM    PRPCITEMKINDORIGIN  for B.PRPCITEMKINDORIGIN    ;
create or replace SYNONYM    PRPCFEE             for B.PRPCFEE               ;

 

 

--4.授予A用户创建db_link权限
grant create database link to RESERVE_PROD;

 
--5.A用户创建db_link到RESERVE_VIEW

create database link  CORE_PROD   connect to RESERVE_VIEW
      identified by 密码
using'(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.1)(PORT = 1521))
    )
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = prod)
    )
  )';
 
--6.A用户登录


SQL> select  count(1) from   PRPPFEE@core_prod;
  COUNT(1)
------------------
     78908898