1、oracle cacheuser 下检查相应的日志表,看是否有数据积压。
SQL> select
count
(*)
from
tt_06_275009_l ;
SQL> 37364273
2、尝试暂停 cg 的 AUTOREFRESH
语法:
ALTER CACHE GROUP [Owner.]GroupName SET AUTOREFRESH STATE {ON | OFF | PAUSED} ;
例:
ALTER CACHE GROUP CACHEUSER.CACHE_EXP_OP_RECORD_TAKING SET AUTOREFRESH STATE PAUSED ;
例:
ALTER CACHE GROUP CACHEUSER.CACHE_EXP_OP_RECORD_TAKING SET AUTOREFRESH STATE PAUSED ;
如果提示cg 上有锁,或者其它事物,则可以尝试回滚该事务:
ttxactadmin -xact 28.78 tt_oper (查看是什么事务 )
ttXactAdmin -xactIdRollback
28.78
tt_oper (回滚事务)
如果发现回滚之后还会出现新的事务,则可以尝试将TT服务停掉:
ttdaemonadmin [-force] -stopserver
然后再回滚事务。
注:服务停掉后则新的会话就不能连接进来了,需要进行该操作对应用的影响。
3、手动刷新cg 并加载数据
语法:
REFRESH CACHE GROUP [Owner.]GroupName
[WHERE ConditionalExpression]
COMMIT EVERY n ROWS
[PARALLEL NumThreads]
or
REFRESH CACHE GROUP [Owner.]GroupName
WITH ID (ColumnValueList)
例:
REFRESH CACHE GROUP CACHEUSER.CACHE_EXP_OP_RECORD_TAKING COMMIT EVERY 1000 ROWS PARALLEL 32 ;
[WHERE ConditionalExpression]
COMMIT EVERY n ROWS
[PARALLEL NumThreads]
or
REFRESH CACHE GROUP [Owner.]GroupName
WITH ID (ColumnValueList)
例:
REFRESH CACHE GROUP CACHEUSER.CACHE_EXP_OP_RECORD_TAKING COMMIT EVERY 1000 ROWS PARALLEL 32 ;
注:可以开适当的并行
注:刚开始我尝试使用 LOAD CACHE GROUP CACHEUSER.CACHE_EXP_OP_RECORD_TAKING COMMIT EVERY 1000 ROWS PARALLEL 32 ; 方法加载数据,系统提示,err 8288 错误。文档上的解决方案就是使用refresh 来代替load 。
【This error is issued during a LOAD CACHE GROUP operation on an AUTOREFRESH cache group. A LOAD
CACHE GROUP operation cannot be performed on a non-empty AUTOREFRESH cache group.
REFRESH cache group can be used instead.】
CACHE GROUP operation cannot be performed on a non-empty AUTOREFRESH cache group.
REFRESH cache group can be used instead.】
4、启动服务并改回状态
ttdaemonadmin [-force] -startserver
一定要记得改回cg 的刷新状态
ALTER CACHE GROUP CACHEUSER.CACHE_EXP_OP_RECORD_TAKING SET AUTOREFRESH STATE ON ;