zoukankan      html  css  js  c++  java
  • Oracle学习(五)DBLINK

    一、DBLINK学习

    目的:为了解决跨库访问的需求。

    场景如下:tnsnames.ora(oracle的库配置文件)下配置了2个库的环境地址,现在要实现跨库访问。

    PS:DBLINK和是否同一个主机无关,只要跨库,不管2个库是不是在一台主机上,都要使用DBLINK进行通信(前提条件:两个库端口要通,可以使用telnet命令来测试)

    第一步:赋予权限

    --在创建database link(DBLINK)之前需要判断,登陆的用户是否具备创建database link 的权限

    PS:注意,此时登陆的账号是需要创建dblink的账号(用这个库去调用其他库) -- 1、查看当前登陆的账号是否具备创建database link 权限 select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='当前登陆的账号'; PS:如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆orcl为当前登陆的账号赋予创建权限 -- 2、给当前登陆的账号授予创建dblink的权限 grant create public database link to '当前登陆的账号'; -- 3、 再次执行第一条查看是否具备权限的sql语句,会发现有返回行,表示,当前登陆的账号已经具备创建database link的权限 select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='当前登陆的账号';

    第二步:创建dblink

    方式1:pl/sql developer 图形化创建

     方式2:sql语句创建

    -- 1、注意一点,如果密码是数字开头,用“”括起来
    CREATE PUBLIC DATABASE LINK DBLINK名称 CONNECT TO 当前登陆账号 IDENTIFIED BY "密码" USING '连接的数据库'
    --例:
    CREATE PUBLIC DATABASE LINK TESTDBLINK CONNECT TO ZHANGHAO IDENTIFIED BY "123456" USING 'TESTDATABASE'
    
    -- 2、sql中直接写入库配置
    CREATE DATABASE LINK DBLINK名称 CONNECT TO 当前登陆账号 IDENTIFIED BY "密码" USING '
         (DESCRIPTION = 
              (ADDRESS_LIST = 
                  (ADDRESS = 
                     (PROTOCOL = TCP)
                     (HOST = XXX.XXX.XXX)
                     (PORT = 1521)
                                    ) 
                            ) 
                  (CONNECT_DATA = 
                      (SERVICE_NAME = XXXX)
                                    )         
                    )
    ';

    第三步:操作

    四、创建同义词(简化操作)

    -- 创建同义词
    create synonym TESTSYNONYM(同义词) FOR company@TESTLINK1;
    PS:创建同义词以后,查询、插入、修改、删除中可直接用 TESTSYNONYM 代替company@TESTLINK1,例如查询语句可改成如下方式(插入,修改,删除类似):
    SELECT * FROM TESTSYNONYM(同义词) order by id -- 查询ORCL2中WANGYONG用户的表COMPANY

    参考资料:

  • 相关阅读:
    sql server 查看锁表SQL【转】
    Delphi 使用TAdoQuery执行存储过程的样例
    Delphi调用MSSQL存储过程返回的多个数据集的方法
    cxGrid类似pagecontrol的效果
    sqlserver trigger(触发器)-更新某几列数据时触发【转】
    FormatFloat 格式化浮点数
    TADOConnection.Close
    cxVerticalGrid
    Delphi中比较两个对象是否一致及地址是否相同[转]
    Linux学习-分析登录档
  • 原文地址:https://www.cnblogs.com/riches/p/11260843.html
Copyright © 2011-2022 走看看