您的位置:首页 > 数据库 > Oracle

Oracle 分布式数据库

2014-01-27 19:05 274 查看

什么是分布数据库?

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

分布式数据库的独立性

l分布数据的独立性指用户不必关心数据如何分割和存储,只需关心他需要什么数据。

Oracle 分布式RDBMS

本地操作

远程操作

分布操作



数据库链路是单向的

定义数据库链路

定义数据库链路

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创建服务命名
SQL> --创建数据库链路
SQL> create database link l2 connect to scott identified by tiger using 'remoteorcl';
create database link l2 connect to scott identified by tiger using 'remoteorcl'
*
第 1 行出现错误:
ORA-01031: 权限不足

SQL> /

数据库链接已创建。

SQL> --在分布式数据库中执行查询
SQL> select ename,dname
2 from dept, emp@L2
3 where emp.deptno=dept.deptno;
from dept, emp@L2
*
第 2 行出现错误:
ORA-00942: table or view does not exist
ORA-02063: 紧接着 line (起自 L2)

SQL> ed
已写入 file afiedt.buf

1 select ename,dname
2 from dept, emp@L2
3* where emp.deptno=dept.deptno
SQL> /
from dept, emp@L2
*
第 2 行出现错误:
ORA-00942: table or view does not exist
ORA-02063: 紧接着 line (起自 L2)

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
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> --为emp@L2创建同义词

SQL> create SYNONYM   remoteemp for emp@L2;

同义词已创建。

SQL> ed
已写入 file afiedt.buf

1* create SYNONYM   remoteemp for emp@L2
SQL> select ename,dname
2  from dept, remotemp
3  where remotemp.deptno=dept.deptno;
from dept, remotemp
*
第 2 行出现错误:
ORA-00942: 表或视图不存在

SQL> ed
已写入 file afiedt.buf

1  select ename,dname
2  from dept, remotemp
3* where remotemp.deptno=dept.deptno
SQL> /
from dept, remotemp
*
第 2 行出现错误:
ORA-00942: 表或视图不存在

SQL> ed
已写入 file afiedt.buf

1  select ename,dname
2  from dept, remoteemp
3* where remoteemp.deptno=dept.deptno
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

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

l快照
l触发器

利用触发器实现数据的同步(定义在主数据库端)

实现数据的同步备份

给员工涨工资 --> 备份端
create or replace trigger syncsal
after update
on emp
for each row
begin
update remoteemp set sal=:new.sal where empno=:new.empno;

end;
/


create or replace trigger update_emp
after update on emp
for each row
begin
update emp@L2 set emp.sal =:new.sal
where emp.empno= :new.empno;
end;

SQL> --利用触发器实现数据的同步更新
SQL> create or replace trigger syncsal
2  after update
3  on emp
4  for each row
5  begin
6  	update remoteemp set sal=:new.sal where empno=:new.empno;
7
8  end;
9  /

触发器已创建

SQL> select sal from emp where empno=7839;

SAL
----------
8086

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

已更新 1 行。

SQL> commit;

提交完成。

SQL> select sal from emp where empno=7839;

SAL
----------
8087



快照

l定义快照维护关系表的异步副本
•指在主表修改后的指定时间内刷新副本,用于主表修改少,但频繁查询的表。

create snapshot  emp(

 refresh  start with
sysdate

  next  next_day(sysdate,’Monday’)

 as  select * from emp@L1 ;


快照是定义在备份端 由备份端发起
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: