Oracle ora-01555解决方法

发现大量ORA-01555

发现大量ORA-01555

ORA-01555 caused by SQL statement below (SQL ID: 2cqskkn0c41kq, Query Duration=3906 sec, SCN: 0x0000.ad2056a9):

ORA-01555 caused by SQL statement below (SQL ID: 2dmk2qf1dxkwt, Query Duration=4332 sec, SCN: 0x0000.acf400a7):

ORA-01555 caused by SQL statement below (SQL ID: 2dmk2qf1dxkwt, Query Duration=5098 sec, SCN: 0x0000.ae793e79):


一般Alert日志里面发现这种,就是回滚段太小了,一般不用管,如果确实影响到业务,可以杀一些占用资源搞的回滚或查询进程。


1.查看大事务 gv$transaction

SQL> select inst_id,addr,used_urec,used_ublk from gv$transaction;

SQL> select start_date,inst_id,addr,used_urec,used_ublk from gv$transaction;

START_DATE INST_ID ADDR USED_UREC USED_UBLK

----------------- ---------- ---------------- ---------- ----------

20121019 06:08:53 2 07000001FCC35D08 1 1

20121019 07:20:15 2 07000001FB884A78 9 1

20121019 07:20:15 2 07000001FDF215A0 6 1

20121019 07:20:15 2 07000001FDF76818 9 1

20121019 06:42:42 1 07000001FDF06398 10 1

20121019 07:16:53 1 07000001FB8A1660 6 1

20121019 06:40:28 1 07000001FCC6EC38 6 1

20121019 07:20:15 1 07000001F9B42A68 9 1

20121019 05:13:54 1 07000001FDF79338 42976487 693162


2.根据上面gv$transaction中ADDR地址与v$session中的taddr字段匹配查找sid,serial#


SQL> select sql_child_number,

sid,

sql_id,last_call_et,

blocking_session,

blocking_instance,

state,

event,

p1,

p2,

seconds_in_wait

from v$session

where

taddr='07000001FDF79338';


3.根据sid可以查找spid

查询得到该session对应的OS进程号:

SQL> select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=&sid);


4.监控undo 使用情况

CLEAR COLUMNS BREAKS COMPUTES

COLUMN tablespace FORMAT a20 HEADING 'Tablespace Name'

COLUMN sizeb FORMAT 999,999,999 HEADING 'Used Size'

COLUMN sizea FORMAT 999,999,999 HEADING 'Tablespace Size'

COLUMN status FORMAT a12 HEADING 'Status'

COLUMN pct FORMAT a8 HEADING 'Used Pct'

CLEAR COMPUTES BREAKS


BREAK ON tablespace on report

COMPUTE sum LABEL "Total: " OF sizeb ON report


select a.tablespace_name tablespace

,b.status status

,b.bytes sizeb

,a.bytes sizea

,round(100*(b.bytes/a.bytes),2)||'%' pct

from

,sum(bytes)/1024/1024 bytes

from dba_data_files

group by tablespace_name) a,

,sum(bytes)/1024/1024 bytes

from dba_undo_extents

group by tablespace_name,status) b

where a.tablespace_name=b.tablespace_name

order by 1,2;


SQL> select tablespace_name,status,sum(bytes)/1024/1024/1024 from dba_undo_extents group by tablespace_name,status order by 1,3;


5.可以考虑使用

kill -9 spid

或alter system kill session '986,16161';的方式


6.检查会话是否已经被杀掉

select a.sid,a.serial#,b.spid,a.status from v$session a,v$process b where a.paddr=b.addr and a.taddr='07000001FDF79338';


7.事务回滚监控

SQL> select * from v$fast_start_transactions;


USN SLT SEQ STATE UNDOBLOCKSDONE UNDOBLOCKSTOTAL PID CPUTIME PARENTUSN PARENTSLT PARENTSEQ XID PXID RCVSERVERS

---------- ---------- ---------- ---------------- -------------- --------------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------------- ----------

10 38 4314095 RECOVERING 50 906028 67 42 0 0 0 000A00260041D3EF 0000000000000000 32


SQL> select file_id,block_id from dba_rollback_segs where SEGMENT_ID=10;


FILE_ID BLOCK_ID

---------- ----------

2 153



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值