案例:为减轻核心数据库的负担,我们采用了逻辑STANDBY技术分离物理读对核心数据库的影响。但某报表应用方提出报表中采用了大量的中间表,通常是把基础数据运算后存入中间表,然后报表读中间表进行展现。要彻底解决该问题显然最好的办法是计算过程前推,即在应用插入基础数据的时候主动往报表所需要的数据插入运算数据,或者至少是接近报表的数据,否则即使后期采用中间表等来解决,也无法解决临时的运算带来的极大的IO开销。但应用方迫于人力和时间所限显然不敢短期内做彻底的优化,那么最后只有DBA开刀,对逻辑STANDBY启动写入功能,即用新建表写入数据。显然这增加了逻辑STANDBY的后期可维护性,但相对于减轻主库的压力来讲,我们的DBA还是宁可牺牲些个人的时间。


实施方法:为尽可能提高可维护性,避免和主库混淆,我们采用完全独立的用户、表空间、表

1、新建用户

2、新建表空间

3、新建表

要点:修改参数

1 stop logical applyalter database stop logical standby apply;
2 定义要skip的表(可以不同步的表)

exec dbms_logstdby.skip('SCHEMA_DDL','TEST','TEST1',NULL);

exec dbms_logstdby.skip('DML','TEST','TEST1',NULL);


3 start logical applyalter database start logical standby apply immediate;

alter database guard standby;