绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
一个auto space advisor顾问SQL导致的01555错误分析
2020-10-22 14:45:34

01555错误往往是由于长查询造成的,由于undo的不足造成快照太旧,从而无法实现一致读,在Oracle引擎内部,自身的顾问工具需要收集段空间信息,从而给出空间回收等 建议,这些SQL也可能导致01555错误,注意,这个错误不影响业务用户。一下是分析过程和处理方式。


告警详细信息
2020-10-22T00:38:52.834184+08:00
ORA-01555 caused by SQL statement below (SQL ID: 4757g72w150w9, Query Duration=9416 sec, SCN:
0x00000ece9dd1f990
):
2020-10-22T00:38:52.834308+08:00
select owner, object_name, partition_name, segment_type, tablespace_name, lobcol_name, lobseg_name, lobpart_name, iot_name from wri$_adv_segadv_segrow
2020-10-22T00:38:52.839172+08:00
ORA-12012: error on auto execute of job "SYS"."ORA$AT_SA_SPC_SY_68002"
ORA-01555: snapshot too old: rollback segment number 60 with name "_SYSSMU60_3671991499$" too small
ORA-06512: at "SYS.DBMS_ADVISOR", line 212
ORA-06512: at "SYS.PRVT_ADVISOR", line 3333
ORA-06512: at "SYS.PRVT_ADVISOR", line 756
ORA-06512: at "SYS.WRI$_ADV_OBJSPACE_TREND_T", line 1882
ORA-06512: at "SYS.PRVT_ADVISOR", line 739
ORA-06512: at "SYS.PRVT_ADVISOR", line 3238
ORA-06512: at "SYS.DBMS_ADVISOR", line 262
ORA-06512: at "SYS.DBMS_ADVISOR", line 207
ORA-06512: at "SYS.DBMS_SPACE", line 2440
ORA-06512: at "SYS.DBMS_SPACE", line 2730

分析:Oracle在执行自动空间顾问相关的job时,查询的SQL造成01555错误,从这个语句看是从底层视图数据中查找关于段空间空间变化信息,
确定段是否有可以回收的空间,从而给出整理碎片的建议,自动任务名为 "auto space advisor"
以供自动空间顾问使用,而这个查询超时了。
而这个查询不会记录 v$undostat dba_hist_undostat中,这个SQL的用户是sys也就是数据库引擎执行的查询操作
SQL> select max(MAXQUERYLEN) from v$undostat;

MAX(MAXQUERYLEN)
----------------
0

SQL> select max(MAXQUERYLEN) from dba_hist_undostat;

MAX(MAXQUERYLEN)
----------------
0
措施:针对这个错误,一个采取不关注的态度,这个对数据库性能没有影响,另一个就是关闭空间顾问自动任务。
下面我们查询当前库的几个自动任务情况
SQL> select client_name,status from dba_autotask_client;

CLIENT_NAME STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection ENABLED
auto space advisor ENABLED
sql tuning advisor ENABLED

下面关闭该自动任务

SQL> begin
dbms_auto_task_admin.disable(
client_name=>'auto space advisor',
operation=>NULL,
window_name=>NULL);
end;
/

PL/SQL procedure successfully completed.

begin
dbms_auto_task_admin.disable(
client_name=>'sql tuning advisor',
operation=>NULL,
window_name=>NULL);
end;
/
验证结果:
SQL> select client_name,status from dba_autotask_client;


CLIENT_NAME STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection ENABLED
auto space advisor DISABLED
sql tuning advisor DISABLED







分享好友

分享这个小栈给你的朋友们,一起进步吧。

Oracle运维新鲜事-技术与管理各占半边天
创建时间:2020-08-04 11:34:57
本技术栈旨在分享技术心得,运维趣事,故障处理经验,调优案例,故障处理涉及集群,DG,OGG,大家生产中遇到的问题基本都会囊括了,我会发布生产库遇到的故障,希望在交流中互助互益,共同提高,也希望大家讨论,如果您有生产中遇到的集群问题,也可以在这里提出来,一起讨论,现实中也帮助不少同学解决了生产库的故障。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • Abraham林老师
    栈主
  • 小雨滴
    嘉宾
  • hawkliu
    嘉宾
  • u_97a59a25246404
    嘉宾

小栈成员

查看更多
  • 栈栈
  • dapan
  • 小菜鸟___
  • hwayw
戳我,来吐槽~