zoukankan      html  css  js  c++  java
  • oracle Database Link

    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时的识别(建议,个人习惯,非强制性)

  • 相关阅读:
    WPF 自定义ComboBox样式,自定义多选控件
    .net core 的网站
    grpc详细入门
    如何遍历所有程序集中的成员、类
    【C#】IDispose接口的应用
    redis集群简介
    What’s your most controversial programming opinion?
    初学PHP——欲得生受用,须下死功夫!
    Great OOP
    博客园背景特效粒子鼠标跟踪吸附
  • 原文地址:https://www.cnblogs.com/l3985/p/3269836.html
Copyright © 2011-2022 走看看