• Oracle学习(18)【DBA向】:分布式数据库


    分布式数据库

    什么是分布数据库?

    l数据物理上被存放在网络的多个节点上,逻辑上是一个总体。


    分布式数据库的独立性

    l分布数据的独立性指用户不必关心数据怎样切割和存储,仅仅需关心他须要什么数据。

    Oracle分布式RDBMS

    本地操作
    远程操作
    分布操作  


    本地操作

    RDBMS

    SQLPLUS等工具




    lORACLE_HOME=/oracle/oracle1/app/oracle/product/8.1.6
    lORACLE_SID=o8i1
    lORACLE_OWNER=oracle1



    远程操作

    利用本地的工具。訪问远程的数据库






    分布操作

    l跨节点数据的创建及查询
    l跨节点数据更新






    分布操作过程

    定义数据库链路

    定义数据库链路

    CREATE DATABASE LINK [db_link_name] CONNECT TO

    [user_name] IDENTIFIED BY [password]USING '[tns_name]';

    [DB_LINK_NAME]:是所要连接的数据库的服务名。也就是该数据库的真实名称(通常就是SID)。

    [USRE_NAME]:是所要连接的username称。

    [PASSWORD]:是所要连接的用户的password。

    [TNS_NAME]:是所要连接的数据库的服务命名。

    比如:



    利用 Net Manager 配置本地命名

    步骤:
    1.打开Net Manager
    2.出现欢迎界面
    3.展开 “本地”。选择 “服务命名”。单击页面左边的加号 +
    4.出现 网络服务名向导。输入一个网络服务名称,比如: remoteOrcl。单击下一步
    5.选择协议。用于连接数据库。您能够接受默认的 TCP/IP (网络协议),点击下一步
    6.输入远端数据库计算机的地址,点击下一步
    7.输入远端数据库的SID,点击下一步
    8.向导的最后一页使您可以利用您输入的信息測试连接。

    9.在左边的树状菜单中,会出现我们刚才配置的服务命名
    10.保存网络配置
    11.查看文件C:oracleproduct10.2.0db_1NETWORKADMIN nsnames.ora,是否已经增加下面内容:


    分布式数据库查询

    select ename,dname

    from dept, emp@L2

    where emp.deptno=dept.deptno;

    l L2即为前面所创建的数据库链路。


    透明存取-别名

    lcreate synonym emp1 for emp@L2 ;

    selectdname,ename,sal

    fromemp1, dept

    whereemp1.deptno=dept.deptno;


    建立远程表的视图

     createview emp              

     as                     

         select * from emp1@L1    

         union                  

         select * from emp2@L2 ;



    Select* from emp;


    分布式数据库的其它操作

    插入操作:
    insert into emp select * from emp@L2;

    数据复制:
    create table emp as select * from emp@L2;


    分布式数据库的跨节点更新

    l快照
    l触发器


    快照

    定义快照维护关系表的异步副本

    指在主表改动后的指定时间内刷新副本。用于主表改动少,但频繁查询的表。

    create snapshot  emp(

          refresh  start with sysdate

          next  next_day(sysdate,’Monday’)

         as  select * from emp@L1 ;

    select* from emp;    (本地数据库中查询快照的数据)



    利用触发器实现数据的同步

    createor replace trigger update_emp

    afterupdate on emp

    foreach row

    begin

      update emp@L2 set  emp.sal=:new.sal

      where emp.empno=:new.empno;

    end;





    上述知识点的一些sql实现:


    SQL> --创建数据库链路
    SQL> conn / as sysdba
    已连接。
    SQL> grant create database link to scott;


    授权成功。




    SQL> conn scott/tiger
    已连接。
    SQL> create database link l2 connect to scott identified by tiger using 'remoteorcl';


    数据库链接已创建。


    SQL> select ename,dname
      2  from dept, emp@L2
      3  where emp.deptno=dept.deptno;


    ENAME                                    DNAME                                  
    ---------------------------------------- --------------                         
    SMITH                                    RESEARCH                               
    ALLEN                                    SALES                                  
    WARD                                     SALES                                  
    JONES                                    RESEARCH                               
    MARTIN                                   SALES                                  
    BLAKE                                    SALES                                  
    CLARK                                    ACCOUNTING                             
    SCOTT                                    RESEARCH                               
    KING                                     ACCOUNTING                             
    TURNER                                   SALES                                  
    ADAMS                                    RESEARCH                               


    ENAME                                    DNAME             &nbs

  • 相关阅读:
    小球(总结sort和cmp函数、结构体排序)
    垃圾装袋(标记法)【标记思想】
    种树(标记思想)【贪心算法】
    PHP 配置文件
    最大前驱路径
    PHP代码片段
    PHP 中的Trait
    BootStrapTable 错误
    工作两周总结
    工作一周总结
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6860379.html
Copyright © 2020-2023  润新知