如题

解决方案 »

  1.   

    同义词就是个别名而已,有什么意思不意思的,书呆子才去寻章摘句,Oracle是拿来用的,不是拿来瞎琢磨的。
      

  2.   

    例如我本机有上海的业务库,我的IP是192.168.10.10。另一个IP上有武汉的业务库,如果要做区域的对比,肯定要同时查两边数据。create database link LINK_HIS_WH
    connect to his_wh
    identified by his
    using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.89)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))';LINK_HIS_WH=同义词分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
      

  3.   

    查询方式直接写成如下格式即可:
    select * from tablename@LINK_HIS_WH
      

  4.   

    同义词是synonym好不好,它比db_link宽泛多了。
      

  5.   

    考虑如下场景:分布式查询访问2个或更多数据库中的信息。在同义词或SELECT语句中,可以通过在名称后面加上@dblink来标识一远程表、视图或物化视图。dblink是一个数据库链,指向包含远程数据库对象的数据库。确保hr方案在本地数据库(Orac11)被安装,oe方案在远程数据库(Ora01)中被安装。假设:
    公司保存他的人力资源数据在Orac11数据库的hr方案中,它的订单信息存储在Ora01数据库中。
    hr.employees.employee_id和远程数据库中oe.orders.sales_rep_id相对应。
    一个经理关于订单有疑问,并且想联系这个订单的销售代表。
    在该情景下销售代表的联系信息存储在Orac11的hr.employees,其它信息存储在Ora01的eo.orders表中。
    1. 在Orac11的hr方案中创建ord同义词,指向Ora01.oe.orders表2. 用system用户以普通身份登录到Orac11数据库,执行如下查询SELECT e.first_name, e.last_name, e.phone_number
    FROM hr.employees e INNER JOIN hr.ord o
    ON e.employee_id = o.sales_rep_id
    AND o.order_id = 2456;这里使用到hr.ord好像Orac11数据库上的数据库对象一样,也就是对于远程的Ora01数据库上的oe.orders表来说,用户感觉不到是远程的数据库对象。对于用户来说这就是“透明的”
      

  6.   


    create synonym name for tablename@link_his_whselect * from name;这样直接使用同义词访问外部数据库的表,如同本地一样。