分布式数据库
什么是分布数据库?
l数据物理上被存放在网络的多个节点上,逻辑上是一个总体。
分布式数据库的独立性
l分布数据的独立性指用户不必关心数据怎样切割和存储,仅仅需关心他须要什么数据。
Oracle分布式RDBMS
本地操作远程操作分布操作
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWh3YzIwMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center” alt=””>
本地操作
RDBMS
SQLPLUS等工具
lORACLE_HOME=/oracle/oracle1/app/oracle/product/8.1.6lORACLE_SID=o8i1lORACLE_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:\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
empas
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_empafterupdate 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