方法一:通过快照来实现
1 创建dblink 2 创建快照
Oracle快照原理及实现总结
Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。对于中大型数据库,业务数据库里所有的数据同步到另外一个处理服务器上最佳的选择还是使用SnapShot方式,即快照的方式。
Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。也就是说快照根本的原理就是将本地或远程数据库上的一个查询结果保存在一个表中。
以下是我建立的Snapshot,目的是从业务数据库上将数据Copy到处理数据库上,是不同的两个服务器之间对数据copy。
第一步:在处理服务器上的Oracle终端,建立database link,业务数据库服务器SID为TEST
create database link TEST_DBLINK.US.ORACLE.COM
connect to AMICOS identified by AMICOS
using 'test';
第二步:在业务数据库上对应的表建立快照日志
Create snapshot log on A_Table;
第三步:建立Snapshot 快照名称为:Test_SnapShot
Create snapshot Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
as select * from A_Table@TEST_DBLINK
说明:REFRESH是刷新方法
刷新方式有:COMPLETE和FAST两种,而START WITH是说明开始执行的时间。
Next是下次执行的时间
而AS以后是构成快照的查询方法。
相关的方法:
更改快照
ALTER SNAPSHOT Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;
手动刷新快照 在命令界面执行:
EXEC DBMS_SNAPSHOT.REFRESH('Test_SnapShot ','C');
第一个参数是要刷新的快照名
第二个参数是刷新的方式,F----FAST,C---COMPLETE
查看快照最后刷新的日期
SELECT NAME,LAST_REFRESH
FROM ALL_SNAPSHOT_REFRESH_TIMES;
最后非常的方案:
1:为需要做Snapshot的表建立Snapshot日志
create snapshot log on t1 with rowid; 这里使用ROWID建立日记的参数
2:采用Fast的方式建立快照,使用rowid做为参考参数
create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;
最好能按照rowid来建立快照。要不然就必须要为表建立Primary Key。
方法二:通过dataguard来实现
全库同步,并且备库不能进行操作
DataGurd:
主要备库的方式,就是数据库对数据库的备份方式,主要是解决容灾的。
流复制:
主要是利用ORACLE的归档日志,进行增量备份来实现的,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml。可以复制到表,用户,数据库级别。
高级复制:
主要是基于触发器的原理来触发数据同步的,因此,高级复制无法实现用户,数据库级别的对象复制,只能做些表、索引和存储过程的复制。
如果出于容灾整个数据库的考虑,高级复制相当复杂,而且并不一定能做好,流复制的配置相对简单。流复制是后来产生的复制技术,是基于日志挖掘技术实现的,对数据库的影响较低。但在稳定性方面较差,实时性没有高级复制强(因为高级复制是基于触发器的)。如果系统意外的话,流复制的恢复将会需要较长时间,特别是意外时间越长,恢复时间成倍增长。
从ORACLE9i开始,Oracle standby database改成DATA GUARD,在这种模式中,开始支持三种不同的数据保护模式,并开始采用LGWR 对数据的传送而不是以往的ARCH,而且增加了一个新的后台进程叫DMON 监控数据的同步,在11g之前最多支持9个节点的同时复制,从Oracle 9.2.0开始,开始支持逻辑standby。
11g能够支持多少备库,通过下面的sql你就能知道了:
sql> show parameter log_archive_dest
Data guard是软件级别的冗余,不需要额外购买任何组件,因此能在对主数据库影响很小的情况下,实现主备数据库的同步,而主备机的数据差异只在在线日志部分,所以被不少企业作为了数据容灾方案。到了oracle 11g版本,备库可以直接已read only方式打开。 这样可以做一些查询工作,减轻出库的压力。
使用Data Guard技术有如下好处:
(1)DG是一种有效的disaster recovery 和high availability的解决方案。 可以很容易的在主库和备库之间进行switchover 和 failover的切换。 如果主库出现特殊情况,也能将停机时间降到最小。
(2)在最大保护的级别下,可以做到零数据丢失的保护,即使是一些不可预知的灾难。 并且standby 数据库也可以提供一种预防data corruption 和用户误操作的安全保护。
(3)DG 提供了3种级别的保护:maximum protection,maximum availability,maximum performance。 用户可以根据数据保护级别的需要和性能需求综合考虑选择对应的模式。
(4)如果主库和备份之间的的连接通信中断,比如网络故障,那么主库的归档日志就不能传送到备库。 一旦主备库之间通信重新连接,那么这些丢失的归档文件就是GAP。 DG 会自动检测GAP,如果发现有GAP,会自动把这些丢失的归档传送到备库,实现主备库的同步,这一切操作都不需要DBA的参与,自动实现。
(5)当启用fast-start failover后,如果primary 出现故障,那么DG broker会自动把standby 转换成primary。这个过程自动实现,无需要DBA 干预。
(6)Data Guard broker技术提供了一个用户图形界面和命令界面来自动管理和配置DG