分布式数据库功能
分布式 DB
物理上分布在网络不同节点上的数据,从
逻辑上可看作是一个整体( DB)。
每个节点
具有
场地自治
跨节点
的
全局操作
访问远程数据库
本地 o8i1(247) 远程 o8i2(248)
ora1 ora2
数据库链
linko8i2
数据库链
create database link L2
connect to 用户名 identified by 口令
using `linko8i2` ;
select * from dep@L2 ;
select ename,tel from emp,dep@L2
where emp.dno=dep.dno ;
$HOME/network/admin/tnsname.ora
透明 - 别名
create synonym dep
for dep@L2 ;
select ename,tel from emp,dep where
emp.dno=dep.dno ;
分片
分片 - 视图
Create view emp
as
select * from emp1@L1
union
select * from emp2@L2;
create view emp
as
select emp1.ename,emp2.sal
from emp1,emp2
where emp1.eno=emp2.eno ;
水
平
分
片
垂
直
分
片
复制 - 快照
Create snapshot emp
refresh fast complete force
start with sysdate
next next_day(sysdate,`Monday`)
as select * from emp@L1 ;
Create snapshot log on emp
时间表示
? 下周的同一天
sysdate + 7
? 每星期五上午 9点
next_day( trunc(sysdate),’星期五’ ) + 9/24
? 每一小时
sysdate +1/24
? 每 10秒
sysdate + 10/(24*60*60)
触发器
create trigger synctemp
after insert or update or delete
on temp
for each row
begin
if inserting then
insert into temp@l1 values(:new.a,:new.b,:new.c);
elsif deleting then
delete from temp@l1 where a=:old.a;
触发器
elsif updating then
if updating(‘b') then
update temp@l1 set b=:new.b where a=:old.a ;
end if
if updating(‘c') then
update temp@l1 set c=:new.c where a=:old.a ;
end if ;
end if ;
end ;
/
分布式 DB
物理上分布在网络不同节点上的数据,从
逻辑上可看作是一个整体( DB)。
每个节点
具有
场地自治
跨节点
的
全局操作
访问远程数据库
本地 o8i1(247) 远程 o8i2(248)
ora1 ora2
数据库链
linko8i2
数据库链
create database link L2
connect to 用户名 identified by 口令
using `linko8i2` ;
select * from dep@L2 ;
select ename,tel from emp,dep@L2
where emp.dno=dep.dno ;
$HOME/network/admin/tnsname.ora
透明 - 别名
create synonym dep
for dep@L2 ;
select ename,tel from emp,dep where
emp.dno=dep.dno ;
分片
分片 - 视图
Create view emp
as
select * from emp1@L1
union
select * from emp2@L2;
create view emp
as
select emp1.ename,emp2.sal
from emp1,emp2
where emp1.eno=emp2.eno ;
水
平
分
片
垂
直
分
片
复制 - 快照
Create snapshot emp
refresh fast complete force
start with sysdate
next next_day(sysdate,`Monday`)
as select * from emp@L1 ;
Create snapshot log on emp
时间表示
? 下周的同一天
sysdate + 7
? 每星期五上午 9点
next_day( trunc(sysdate),’星期五’ ) + 9/24
? 每一小时
sysdate +1/24
? 每 10秒
sysdate + 10/(24*60*60)
触发器
create trigger synctemp
after insert or update or delete
on temp
for each row
begin
if inserting then
insert into temp@l1 values(:new.a,:new.b,:new.c);
elsif deleting then
delete from temp@l1 where a=:old.a;
触发器
elsif updating then
if updating(‘b') then
update temp@l1 set b=:new.b where a=:old.a ;
end if
if updating(‘c') then
update temp@l1 set c=:new.c where a=:old.a ;
end if ;
end if ;
end ;
/