zoukankan      html  css  js  c++  java
  • 【oracle】dblink创建

    目的:oracle中跨数据库查询

          两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据

    解决:查询得知使用dblink(即database link  数据库链)

    实现过程:

    1、确定用户user_a有没有创建 dblink 的权限:

       select * from user_sys_privs where privilege like upper('%DATABASE LINK%');  

    2、如果没有,以sys用户登录到本地数据库 给用户user_a赋权:

    grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to user_a;

    注:
    dblink有三种权限:
    CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了)
    CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用)
    DROP PUBLIC DATABASE LINK

    3、以用户user_a登录本地数据库,创建dblink

    create public  database link dblink1  
      connect to user_b identified by user_bpass
      using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';  

    注:
    当数据库参数global_name=false时,就不要求数据库链接名称跟远端数据库名称一样。
    数据库全局名称可以用以下命令查出:

    SELECT * FROM GLOBAL_NAME;

    修改可以用以下语句来修改参数值:

    ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

    4、创建完成,引用

    -- 查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。  
    例:

     select * from user_bTablename@dblink1 ;

    一般情况下引用数据库链接,可以直接将其放到调用的表名或视图名称后面,中间使用一个 @ 作为分割符:

    5、删除 DBLink

     drop  public database link dblink1;  

    6、创建和删除同义词

       对于经常使用的数据库链接,可以建立一个本地的同义词,方便使用
        create or replace synonym 同义词名 for 表名;  
        create or replace synonym 同义词名 for 用户.表名;  
        create or replace synonym 同义词名 for 表名@数据库链接名;  
        drop synonym 同义词名; 

    7、创建和删除视图

        create or replace view 视图名 as (select 字段 from 用户.表名@dblink1);  
        drop view 视图名;  

    其他:

    创建方式二:要求数据库服务器db_A上 tnsnames.ora 中有 数据库db_B的映射   (省略)
    sql>create database link 数据库链路名 connect to 用户名 identified by 口令 using 'tnsnames.ora配置的主机字符串名';

    创建方式三:
    PL/SQL图形配置界面

      



    问题:
    已经给了用户 dblink 的权限,但创建时报权限不足的错
    解决:
    我给用户的是 CREATE PUBLIC DATABASE LINK权限,所以创建时需要create public  database link....  而不能是create database link....

    待深入:

    每次使用dblink查询的时候,均会与远程数据库创建一个连接,dblink 应该不会自动释放这个连接,如果是大量使用 dblink 查询,会造成 web 项目的连接数不够,导致系统无法正常运行,导致系统无正常运行。


    参考学习:

    http://blog.csdn.net/davidhsing/article/details/6408770

    http://www.cnblogs.com/xinyuxin912/archive/2008/01/09/1032261.html

    http://moonights.iteye.com/blog/568895

  • 相关阅读:
    接口测试框架实战(四) | 通用 API 封装实战
    接口测试框架实战(三) | APIObject 模式、原则与应用
    接口测试框架实战(二) | 搞定多环境下的接口测试
    测试左移和测试右移的 Why-How-What
    测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理
    单元测试框架怎么搭?新版的Junit5有哪些神奇之处?
    软件测试 / 自动化测试之读取配置文件
    一文搞定 Linux 常用高频命令
    JavaScript中闭包的简单介绍
    第一节:webpack打包、压缩及兼容性处理
  • 原文地址:https://www.cnblogs.com/james1207/p/3257839.html
Copyright © 2011-2022 走看看