复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中。在许多生产环境中,常常需要处理大量数据,这些数据用于查询统计功能,例如:历史告警历史性能指标历史事件等。这些数据的特点是:只读不写,数据量非常大,查询时占用大量数据库IO内存缓存资源,可能严重影响数据库的其他会话操作,使得系统反应迟缓,甚至导致业务不可用。使用复制技术可以解决此问题,将这些大数据复制到另一台数据库服务器上进行查询统计,即使有性能影响,也仅限于查询统计功能,不会影响业务处理。

Oracle数据库提供三种复制技术:

- 高级复制(Advanced Replication):基于触发器原理触发数据同步,仅支持表、索引和存储过程的复制,不支持用户或数据库级别的复制。因实现复杂,容灾效果一般。

- 流复制(Streams Replication):通过归档日志增量备份实现,支持表、用户、数据库级别的复制,稳定性相对较差,但配置简单,对数据库影响小。

- 备库(Dataguard):用于容灾备份,不在讨论范围。

高级复制实时性较强,但系统意外后恢复时间较长;而流复制是基于日志挖掘技术实现的,性能对比中流复制恢复效率可能相对较慢。下面,我们将在相同环境中分别配置高级复制和流复制,并对其性能进行压力测试对比。