zoukankan      html  css  js  c++  java
  • 我们项目中Oracle中Dblink的应用

    1.1 简介

    Dblink我们是当作了接口的一种,例如:B系统用户想访问A系统的数据,可以在利用dblink来实现。

    步骤

    1、A系统的数据库建立临时的表空间和相应的用户Ab,

    2、A库把需要的表、视图、过程等赋权给Ab库

    3、在B库建立dublik连接Ab库

    4、在B库中应用

    5、Ab的目的是避免,B库直接dblinkA库带来的安全问题

    1.2 具体实现代码

    1.2.1 创建Ab库

     

    create temporary tablespace heibeiTest2   --创建临时表空间。
    tempfile 'D:oraclespaceheibeiTest2.dbf' 
    size 50m  
    autoextend on  
    next 50m maxsize 20480m  
    extent management local;  
    
    
    CREATE USER heibei2 IDENTIFIED BY password  --用户名:heibei2,密码:password
     DEFAULT TABLESPACE "ZHONGYE" --A库的表空间ZHONGYE
     TEMPORARY TABLESPACE heibeiTest2  --附属表空间heibeiTest2
     QUOTA UNLIMITED ON "ZHONGYE" --附属在表空间ZHONGYE下。
     
     
    GRANT "CONNECT" TO heibei2; --赋权连接权限给用户NORTHBOUND
    ALTER USER heibei2 DEFAULT ROLE NONE; --修改用户绑定的默认角色NONE
    
    GRANT CREATE SESSION TO heibei2;  --赋权创建回话权限

    1.2.2 赋予权限

     

    GRANT SELECT ON "testUser"."VIEW_testTable" TO GALEN;  --把用户testUser下的表VIEW_INCOMEREPORT的select赋权给GALEN。
    GRANT SELECT ON "testUser"."VIEW_INCOMEREPORT" TO GALEN;  --把用户testUser下的表VIEW_INCOMEREPORT的select赋权给GALEN。
    GRANT execute ON "testUser"."VIEW_testTable_PACKAGE" TO GALEN; --把用户testUser下的表VIEW_testTable_PACKAGE的execute赋权给GALEN。

    1.2.3 Ab库创建中创建别称

     

    --查询
    select * from "testUser"."VIEW_testTable"
    --创建别称
    create synonym testUser_VIEW_testTable FOR "testUser"."VIEW_testTable";

    1.2.4 创建dblink

     

    --在B库下
    --检查登录用是否有dblink权限,能查出数据表示有权限。
    --若是表空间有多个用户,在最后加上: AND USERNAME='用户名'
    select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
    
    -- 登录高权限账户例如system,给用户名为:“mccdb”用户授予创建dblink的权限
    grant create public database link to mccdb;
    
    --TESTLINK2:创建的dblink名称为:TESTLINK2
    --mccdb:远程数据库用户名称
    --123456:远程数据库密码123456
    --HOST:host的=号后面为远程数据库ip地址
    --SERVICE_NAME:SERVICE_NAME的=号后面为远程数据库服务名称
    create public database link TESTLINK2 connect to mccdb identified by "123456" 
    USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.59)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = xxxx)))'

    1.2.5 在B库查询并建立别称

    select * from testUser_VIEW_testTable@testlink2;
    --创建别称
    create synonym VIEW_testTable FOR "testUser"."VIEW_testTable";

    1.3 这里大家就可以用了,其他sql

    GRANT  update (STATUSID) ON  "testUser"."testTable" TO HEIBEI2; --把testUser.testTable的字段STATUSID的update赋给用户HEIBEI2

     1.4备注问题

    1、dblink创建后访问,超时。看看你的信息填写对了吗,或者是防火墙之类的事?

    2、赋权的时候表示没有表或者视图:试试吧用户名和表名大写

  • 相关阅读:
    JMeter+ant+jenkins自动化持续集成
    如何保证线程按顺序执行
    Java多线程和死锁
    java基础总结
    一、java自带的观察者模式
    一.HttpClient、JsonPath、JsonObject运用
    二.创建maven工程及下载需要的jar包
    一.Maven的安装和配置整理
    sql 关键词语句
    PHP5常量
  • 原文地址:https://www.cnblogs.com/daguozb/p/10309873.html
Copyright © 2011-2022 走看看