SQL> select CAPTURE_NAME,error_message,QUEUE_NAME,STATUS from dba_capture;
CAPTURE_NAME
------------------------------
ERROR_MESSAGE
--------------------------------------------------------------------------------
QUEUE_NAME
STATUS
--------------- ----------
CAPTURE_MES_QBJ
ORA-01280: Fatal LogMiner Error.
MES_QUEUE_QBJ
ABORTED
解决:
分配更多的内存给capture,原来是10M,改成100M,重新启动就好了。
注意这部分内存不是从streams_pool分配的,而是直接从sga分配的,_SGA_SIZE是个隐藏的capture参数。
在Metalink中记录了如下解决方案,通过停止捕获-修改参数-启动捕获过程即可解决:
exec dbms_capture_adm.stop_capture('STREAM_CAPTURE');
exec dbms_capture_adm.set_parameter('STREAM_CAPTURE','_SGA_SIZE','50');
exec dbms_capture_adm.start_capture('STREAM_CAPTURE');
这实际上是增加了捕获进程的内存空间需求。
SQL> show parameter logmnr_max_persistent_sessions
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
logmnr_max_persistent_sessions
integer
1
logmnr_max_为1 不能为2
可以查询这个视图
重新启动capture进程以后,查询v$streams_capture,状态一直是的enqueuing message,数据传不过去。这个状态下capture进程通过规则将lcr入队列,不知道是不是我修改了规则,使得不能入队列了? |
v$streams_capture