SQL> SELECT COUNT(*) AS> IDLE_APPLIER
------------
0
返回结果为0,难道都在忙?这个真不一定,空闲的APPLIER进程数为0不一定代表应用非常繁忙,也有可能是因为当前没什么需要应用的日志,甚至都没启动应用进程。
说 明: status_code=16166表示进程是空闲状态,因为stats_code=16166对应的状态说明列STATS为ORA-16116: no work available。
检查事务的应用情况:
SQL> SELECT NAME,VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE 'transactions%';
NAME VALUE
----- ---------------------------
trans 358
trans 358
如果ready-applied的值比APPLIER进程数的两倍还要大,则说明DBA有必要考虑增加APPLIER进程的数目了,反之如果applied与ready的值差不多大,或者其差比APPLIER进程数还小,则说明APPLIER进程数偏多,DBA有必要考虑适当减小进程的数目。
如果确认当前APPLIER进程都非常繁忙,要增加APPLIER进程,可按如下步骤操作:
1) 停止逻辑Standby端的SQL应用:
SQL>>
Database> 查看当前启动的PREPAPER进程数, 查询V$LOGSTDBY_STATS视图,例如:
SQL> SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='number of preparers';
NAME VALUE
----- ----------------------------------------------------------------
numbe 4
3、调整LCR使用的内存
LCR中保存的是转换后的块修改的记录,这部分数据保存在SGA中。
查询当前LCR可用的最大内存:
SQL> SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='maximum SGA for LCR cache';
NAME VALUE
------------------------------------ --------------------
maximum SGA for LCR cache 30
显示的参数值默认单位为M,当前结果显示LCR内存区可用空间为30M。
要增加LCR可用的内存,可按照下列步骤操作。
1) 首先还是需要停止SQL应用: