oracle snapshot(快照)

要求:现有2台数据库服务器A和B,都在一个局域网内。A数据库的数据实时更新,B数据库做为A的备份数据库,要求B数据库跟A数据库的数据同步,以便于分析统计?

方法:在B数据库上面建快照,来影射A上面的数据。
1,在B数据库上面创建一个服务名,以访问A数据库。例如
to101=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL=TCP)(HOST=www.bj.col.com.cn)(PORT=1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)

2,在B数据库上创建数据库链路。例如
create public database link link101
connect to scott identified by tiger
using 'to101';

3,在B数据库上创建快照。这里只影射A数据库的中的一张表(tab1), 代码如下:
create snapshot tab1
refresh force start with sysdate
next sysdate+1/1440 with primary key as select * from tab1@link101;

OK,这样就在B数据库上创建了一个快照对象(tab1),基本上跟A数据库中的表(tab1)一样了。B数据库上的这个快照对象每隔1分钟刷新一下,去跟A数据库保持一致。

说明:
1,ORACLE的快照刷新方式refresh有三种:
fast 快速刷新,用snapshot log,只更新时间段变动部分
complete 完全刷新,运行SQL语句
force 自动判断刷新,介于fast和complete之间

2,若在B上创建快速刷新,则要在A上创建快照日志对象,否则没这个必要。
在A上创建快照日志,代码如下:
create snapshot log on tab1 with primary key;

3,说明,B中的快照对象 tab1 既有表的特征也有视图的特征。因为它的数据存在本地磁盘上,但是它的数据又不允许编辑,只能查询。估计它就是所谓的物化视图吧。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值