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]:是所要连接的用户名称。

?[PASSWORD]:是所要连接的用户的密码。

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

例如:

?技术分享



利用 Net Manager 配置本地命名

步骤:
1.打开Net Manager
2.出现欢迎界面
3.展开 “本地”,选择 “服务命名”。单击页面左边的加号 +
4.出现 网络服务名向导。输入一个网络服务名称,例如: remoteOrcl。单击下一步
5.选择协议,用于连接数据库。您可以接受默认的 TCP/IP (网络协议),点击下一步
6.输入远端数据库计算机的地址,点击下一步
7.输入远端数据库的SID,点击下一步
8.向导的最后一页使您能够利用您输入的信息测试连接。
9.在左边的树状菜单中,会出现我们刚才配置的服务命名
10.保存网络配置
11.查看文件C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.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                                  
---------------------------------------- --------------                         
JAMES                                    SALES                                  
FORD                                     RESEARCH                               
MILLER                                   ACCOUNTING                             


已选择14行。


SQL> /


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                                  
---------------------------------------- --------------                         
JAMES                                    SALES                                  
FORD                                     RESEARCH                               
MILLER                                   ACCOUNTING                             


已选择14行。


SQL> /


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


ENAME                                    DNAME                                  
---------------------------------------- --------------                         
JAMES                                    SALES                                  
FORD                                     RESEARCH                               
MILLER                                   ACCOUNTING                             


已选择14行。


SQL> host cls


SQL> create synonym remoteemp for emp@l2;


同义词已创建。


SQL> select ename,dname
  2  from dept, remoteemp
  3  where remoteemp.deptno=dept.deptno;


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


ENAME                                    DNAME                                  
---------------------------------------- --------------                         
JAMES                                    SALES                                  
FORD                                     RESEARCH                               
MILLER                                   ACCOUNTING                             


已选择14行。


SQL> select ename,dname
  2  from dept, remoteemp
  3  where remoteemp.deptno=dept.deptno;


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


ENAME                                    DNAME                                  
---------------------------------------- --------------                         
JAMES                                    SALES                                  
FORD                                     RESEARCH                               
MILLER                                   ACCOUNTING                             


已选择14行。


SQL> create or replace trigger sycnempsal
  2  after update
  3  on emp
  4  for each row
  5  begin
  6  
  7     update remoteemp set sal=:new.sal where empno=:new.empno;
  8  
  9  end;
 10  /


触发器已创建


SQL> select sal from emp where empno=7839;


       SAL                                                                      
----------                                                                      
      8186                                                                      


SQL> update emp set sal=sal+1 where empno=7839;


已更新 1 行。


SQL> commit;


提交完成。


SQL> select sal from emp where empno=7839;


       SAL                                                                      
----------                                                                      
      8187                                                                      





触发器应用场景三:实现数据的同步备份
只备份员工的薪水




create or replace trigger sycnempsal
after update
on emp
for each row
begin


   update remoteemp set sal=:new.sal where empno=:new.empno;


end;
/

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。