undo表空间爆了,导致ogg append

           收到 短信,发现ogg进程挂了,通过查看ogg进程的日志文件,可以看到如下报错


OCI Error ORA-30036: unable to extend segment by 4 in undo tablespace 'UNDOTBS1' (status = 30036). INSERT INTO "Acc_VS1"."PR_GOODS_D" ("ID","PR_GOODS_D","LINE_CODE","W_CODE","BARC
ODE","PACKAGE_TYPE","OPERATING_TIME","CREATE_SITE_CODE","PR_GOODS_D","CREATE_USER","CREAT","UPDA","UPDATE_TIME","YN","MODIFY_TIME") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8,
:a9,:a10,:a11,:a12,:a13,:a14)
Aborting transaction on /ggs/dirdat/tg beginning at seqno 13706 rba 133861918
                         error at seqno 13706 rba 133861918
Problem replicating Acc_VS1.PR_GOODS_Dto Acc_VS1.PR_GOODS_D
Mapping problem with insert record (target format)...


可以发现是undo表空间满了,无法实现扩展导致ogg进程同步数据出现问题,那么我们需要查看为什么undo表空间会使用完了,是谁导致的,通过下面语句查看事物,可以发现可疑的事物,导致undo表空间满了,通过和研发沟通,通过先杀掉任务


select a.sid,
a.serial#,
a.user#,
a.username,
b.addr,
b.USED_UBLK,
b.USED_UREC,
b.START_TIME
from v$transaction b, v$session a
where /*b.addr in (select a.taddr from v$session a where a.sid = '') and*/ b.addr=a.taddr order by start_time


杀了任务后,undo表空间并没有回立刻释放,而是需要回滚任务,通过查看回滚任务,发现回滚速度太慢,如何加快回滚速度呢?通过修改参数来加快回滚速度

SYS@rep1> show parameter fast
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
fast_start_parallel_rollback         string      LOW
SYS@report1> alter system set FAST_START_PARALLEL_ROLLBACK =HIGH;


   [oracle@report1 dirrpt]$ ps -ef|grep ora_p0 |wc -l
2
[oracle@report1 dirrpt]$ ps -ef|grep ora_p0 |wc -l
2
[oracle@report1 dirrpt]$ ps -ef|grep ora_p0 |wc -l

2

FAST_START_PARALLEL_ROLLBACK 参数并不会在所有情况下都会加速回滚,需要看情况,需要在系统资源使用比较低的情况下,cpu使用率低,可以加快回滚速度,如果系统压力比较大,如果开启此参数,只会降低回滚速度,导致系统资源使用更为紧张


看看系统回滚速度如何



SQL> select  undoblockstotal "Total", undoblocksdone "Done", undoblockstotal-undoblocksdone
  2     "ToDo",decode(cputime,0,'unknown',to_char(sysdate+(((undoblockstotal-undoblocksdone)
  3      / (undoblocksdone / cputime)) / 86400),'yyyy-mm-dd hh24:mi:ss'))
  4     "Estimated time to complete",to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
  5     from v$fast_start_transactions;
 
     Total       Done       ToDo Estimated time to complete TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
---------- ---------- ---------- -------------------------- ------------------------------
   3815289       1021    3814268 2018-01-04 14:47:43        2018-01-03 21:09:14
 
SQL> /
 
     Total       Done       ToDo Estimated time to complete TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
---------- ---------- ---------- -------------------------- ------------------------------
   3815289       3354    3811935 2018-01-04 16:44:24        2018-01-03 21:09:59
 
SQL> /
 
     Total       Done       ToDo Estimated time to complete TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
---------- ---------- ---------- -------------------------- ------------------------------
   3815289       5459    3809830 2018-01-04 20:50:03        2018-01-03 21:10:59
   


HIGH回滚速度相对于LOW来说确实加快了很多,但是 等了3个小时,似乎预估计回滚还需要更长的时间,OGG进程不能等待太长时间,只能通过先扩展undo表空间的方式来解决此问题,等待事物回滚完成


猜你喜欢

转载自blog.csdn.net/wll_1017/article/details/78967340