zoukankan      html  css  js  c++  java
  • oracle连接两个数据库

    测试条件:
    假设某公司总部在北京,新疆有其下属的一个分公司。在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100 

    北京的总部有一个集中的数据库,其SID是SIDBJ,用户名:userbj,密码:bj123,北京的IP地址是:192.168.1.101。
    在本地(新疆)的分公司也有一个数据库,其SID是SIDXJ,用户:userxj,密码:xj123,新疆的IP地址是:192.168.1.100。
    要将本地新疆的SIDXJ数据库中访问到北京的数据库SIDBJ中的数据。
    也就是说,在sidxj的数据库中,用户userxj(192.168.1.100)需要建立DBLINK,以userbj的用户身份访问sidBJ(192.168.1.101)中的数据。

    测试环境:两个数据库均建立在WINXP上,ORACLE的版本均为Oracle817
    建立环境时,要注意关闭两台计算机上的Windows的防火墙,否则,会出现能ping通,但Oracle连接不通的情况。

    1、问:如何返回数据库的GLOBAL_NAME?
    执行SELECT * FROM GLOBAL_NAME;
    北京的数据库的GLOBAL_NAME为orcl
    新疆的数据库的GLOBAL_NAME为orcltest

    2、问:如何查看Global_name参数是true还是False?
    答:执行:SQL> show parameter global_name;
    执行的结果如下:
    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    global_names boolean TRUE

    表示该参数是true.

    也可以通过查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持。
    执行语句为:select * from v$option;

    3、问:如何检查Oracle的版本是否支持同步功能?
    答:执行select * from v$option where PARAMETER='Advanced replication'语句,
    如何返回值为True,那么就是支持,否则就是不支持。在两个数据库中都是检查是否支持才行。


    建立步骤:

    1、在本地建立一个Oracle的客户端连接zshis,用于连接北京的数据库。
    2、新建一个连接tnsxj,用于连接本地的sidxj数据库,以tnsxj/userxj/xj123登录到PLSQL中。

    下面开始创建连接到北京的远程数据连接DBLink。
    create database link SIDBJ.US.ORACLE.COM connect to userbj identified by bj123 using 'tns_xj_to_bj'; 
    其中:SIDBJ.US.ORACLE.COM是远程的数据库的global_name,userbj是连接SIDBJ的用户名,bj123是userbj的密码,
    tns_xj_to_bj是本地建立的连接到北京的数据库的服务名。

    3、测试连接是否成功:
    select * from dual@SIDBJ.US.ORACLE.COM 
    如果返回结果如下则表示连接成功了。
    DUMMY
    -----
    X

    4、查询已经建立的远程连接名:
    SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';

    OWNER OBJECT_NAME
    ------------------------------ --------------------------------------------------------------------------------
    SYSTEM SIDBJ.US.ORACLE.COM
    USERXJ DBLINK_XJ_TO_BJ
    USERXJ SIDBJ


    5、至此,在新疆的计算机上建立了一个DBLINK,用于连接到北京的数据库上,
    在北京的数据库中,建立一个表用于测试。
    create table USERBJ.BJ_TEST
    (
    STU_ID NUMBER,
    STU_NAME VARCHAR2(100)
    )
    在其中增加一条记录:
    insert into BJ_TEST (STU_ID, STU_NAME)
    values (1, '钟德荣');


    在新疆的数据库中查询北京的数据库中表的信息:
    select * from bj_test@SIDBJ.US.ORACLE.COM
    查询结果:
    STU_ID STU_NAME
    ---------- --------------------------------------------------------------------------------
    1 钟德荣

    表示查询是正常的。
    说明:该查询是用


    以上脚本全部通过测试。





    以上内容转自:http://hi.baidu.com/llscompazz/blog/item/f3c6cbee85c376202cf5341c.html



    ——————————————————————————————————————————————————————



    下面再补充三点:

    1、 创建DB_Link时,"tns_xj_to_bj"是指服务器端tnsnames.ora文件中所定义的环境名,但在企业中,并没有几个人有权限查看这个文件中的内容。

    解决办法:将‘tns_xj_to_bj’改写成客户端tnsnames.ora文件中对应的实际连接串。如:
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = test)
    )
    )


    注意:此处“(SERVER = DEDICATED)”可有可无,并没什么影响。

    2、查看所有DBLink可采用以下两种方式

    SQL1:select owner,object_name from dba_objects where object_type='DATABASE LINK';

    SQL2:select * from all_db_links;

    但唵更偏向用SLQ2。No Reason!呵呵!

    3、删除DB_Link

    drop database link STAGEING.REGRESS.RDBMS.DEV.US.ORACLE.COM;

    其中database不能更改,STAGEING.REGRESS.RDBMS.DEV.US.ORACLE.COM为你创建的DB_Link值(采用SQL2),当然需要用创建该DB_Link的用户登录才能成功删除!

    连接地址:https://www.cnblogs.com/zhangzhu/p/5443035.html

  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/thomasbc/p/9102534.html
Copyright © 2011-2022 走看看