• ORACLE数据库链接


    在ORACLE里面,远程数据访问,像查询、更新等可以通过Database Link来实现。数据库连接需要在建立Database Link的两台机子上都运行Oracle Net(以前叫SQL*NET 和NET 8)。 语法如下

    1 Database Link 的创建:

    有两个数据库服务器A/B, 其中A的IP地址为172.20.36.245, 服务器B为本机。服务器B上的数据库实例名为ORCL,在本机上的服务监听配置上有服务器A上实例配置:

    BIWG_TEST =
    
    (DESCRIPTION =
    
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.36.245)(PORT = 1521))
    
    (CONNECT_DATA =
    
    (SERVER = DEDICATED)
    
    (SERVICE_NAME = biwg)
    )
    )

    实例BIWG_TEST的账号为 WGODS 、 密码为WGODS。下面开始在本机上创建DB Links

    方法1:

    CREATE PUBLIC DATABASE LINK WGODS.ORACLE.COM 
    
    CONNECT TO WGODS IDENTIFIED BY WGODS USING 'BIWG'

    CREATE [PUBLIC] DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '本地配置的数据的实例名';

    [public]的意思是:public是全局db link,即该数据库上所有用户都能查询,要sys或者system用户来创建(当然有sysdba权限的用户也可以的);如果不使用public就是私有db link,只有创建该db link的用户能查询

    查看连接是否成功

    SELECT * FROM DUAL@WGODS.ORACLE.COM 
    
    SELECT * FROM REF.TR_WGG_GDAREA_INFO@WGODS.ORACLE.COM 

    方法2:可以不配置服务。

    CREATE PUBLIC DATABASE LINK REMOTE_DEVE_HOST
    
    CONNECT TO WGODS IDENTIFIED BY WGODS 
    
    USING '(DESCRIPTION =
    
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.36.245)(PORT = 1521))
    
    (CONNECT_DATA =
    
    (SERVER = DEDICATED)
    
    (SERVICE_NAME = biwg)
    
    )
    )'

    不建议使用这个实现。感觉没有上面方法来的方便

    查看连接是否成功

    SELECT * FROM DUAL@WGODS.ORACLE.COM 
    
    SELECT * FROM REF.TR_WGG_GDAREA_INFO@WGODS.ORACLE.COM 

    2 查看当前数据有哪些Database Link?

    SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'DATABASE LINK'
    
    SELECT * FROM DBA_DB_LINKS;

    3 如何返回数据库的GLOBAL_NAME?

    SQL> SHOW PARAMETER GLOBAL_NAME;
    
    NAME TYPE VALUE
    
    ------------------------------------ ----------- ------------------------------
    
    global_names boolean FALSESELECT * FROM GLOBAL_NAME

    该参数为TRUE时,你在本地建立的DBLINK名称必须和远程的GLOBAL_NAME一致才行。

    4 删除Database Link

    DROP [PUBLIC] DATABASE LINK REMOTE_DEVE_HOST;

    会报如下错误: ORA-02024: 未找到数据库连接

    DROP PUBLIC DATABASE LINK REMOTE_DEVE_HOST;

    正常执行删除Database Link。

    5 设置GLOBAL_NAME值对Database Link的影响

    SQL> ALTER SYSTEM SET GLOBAL_NAMES = TRUE;

    System altered

    CREATE PUBLIC DATABASE LINK REMOTE_DB

    CONNECT TO WGODS IDENTIFIED BY WGODS USING 'BIWG'

    SELECT * FROM DUAL@REMOTE_DB

    此时报错:ORA-02085:数据库连接 XXXX 到 XXXX

    SQL> ALTER SYSTEM SET GLOBAL_NAMES = FALSE;

    System altered

    修改参数值为FALSE后,查询就正常了、

    6 在DB Link中执行查询会有些限制。你应该避免使用connect by, start with, 以及prior关键字。一些查询使用了这些关键字会很正常, 但是大部分查询会失败

     

    7 如何查询

    SELECT …… FROM 表名@数据库链接名

     

    8 DB LINK的使用原则(工作中以及网上收集整理的,仅供参考)

    8.1.生产尽量不要使用db link,虽然方便,但这样不利于数据库安全管理

    8.2.在10g中,BLOB,CLOB在db link中是查不到的,含这种数据类型的,要配合建view使用

    8.3.我们经常可以使用synonym来做一些配置,以提高易读性和安全性

    8.4.被建立了db link的user,最好不要修改密码,若修改密码要重建db link

    8.5.db link是单向的

    8.6 数据库链接名,建议使用SID.SCHEMA的形式,这样方便有多个db link时的识别(建议,个人习惯,非强制性)

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    Monkey学习笔记(一)
    10.18 nslookup:域名查询工具
    10.22 tcpdump:监听网络流量
    10.22 tcpdump:监听网络流量
    Linux运维常见笔试题(选择题)
    Linux运维40道精华题
    LeetCode Isomorphic Strings 对称字符串
    LeetCode 3Sum Closest 最近似的3sum(2sum方法)
    博弈的图论模型——必败态与核
    威佐夫博弈(证明)
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2506947.html
Copyright © 2020-2023  润新知