DG - 逻辑standby管理
一、监控逻辑standby
与物理standby的管理一样,oracle提供了一系列动态性能视图查看逻辑standby的状态
1. DBA_LOGSTDBY_EVENTS
可以把该视图看成逻辑standby操作日志,默认情况下,该视图保留100条事件的记录,不过可以通过DBMS_LOGSTDBY.APPLY_SET()过程修改该参数
2. DBA_LOGSTDBY_LOG
记录当前的归档日志应用情况,多数情况下只需要关注sequence#, applied,即查看日志序号和是否应用。
3. V$LOGSTDBY_STATS
显示LogMiner的统计信息及状态
4. V$LOGSTDBY_PROCESS
显示当前log应用服务的相关信息,常用于诊断归档日志逻辑应用的性能问题
5. V$LOGSTDBY_STATE
显示sql应用的大致状态。
二、管理逻辑standby
1. 接收到的归档文件
如果需要可以屏蔽自动删除归档文件:
standby> EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE',FALSE);
2. 启动实时应用
standby> alter database start logical standby apply immediate;
3. 定义DBA_LOGSTDBY_EVENTS视图中事件记录的相关参数
execute dbms_logstdby.apply_set('parameter','value');
4. 指定对象跳过应用,
DBMS_LOGSTDBY.SKIP (
stmt IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL,
proc_name IN VARCHAR2 DEFAULT NULL,
use_like IN BOOLEAN DEFAULT TRUE,
esc IN CHAR1 DEFAULT NULL);
除了stmt外,其它都是可参数。例如:
standby> alter database stop logical standby apply;
standby> execute dbms_logstdby.skip('DML','jss','tmp1');
standby> alter database start logical standby apply;
三、修改逻辑standby端数据
1. 逻辑standby端执行
standby> alter session disable guard;
//执行数据库修改操作
standby> alter session enable guard;
2. 取消对象同步
某些表或者数据不需要data guard保护,这个时候就需要DBMS_LOGSTDBY.SKIP.
3. 恢复对象同步
DBMS_LOGSTDBY.UNSKIP(
stmt IN VARCHAR2,
schema_name IN VARCHAR2,
object_name IN VARCHAR2);
三项均为必选参数。
四、特殊事件的控制
1. 导入传输表空间
a). 屏蔽guard保护
b). 导入传输表空间
c). 恢复guard保护
d). 导入传输表空间, primary端操作同第二步
2. 使用物化视图
3. 触发器及约束的动作方式
五、优化逻辑standby
1. 创建primary key rely约束
2. 生成统计信息
3. 调整进程数
a). 调整applier进程数
b). 调整preparer进程数
4. 调整LCR使用的内存
5. 调整事务应用方法