关于ORA-01555的问题分析

简介: 今天开发的同事发给我一个问题,在运行某一个Job的时候抛出了ORA错误,希望我们看看从数据库层面能不能发现什么。 错误日志如下: Function: EntitySQLCursor::query Line number: 113 ...
今天开发的同事发给我一个问题,在运行某一个Job的时候抛出了ORA错误,希望我们看看从数据库层面能不能发现什么。
错误日志如下:

Function: EntitySQLCursor::query

Line number: 113

Time: Thu Jul  2 22:52:46 2015

Message text: (PE1-000143) Internal IO Framework Database Error, message ORA-01555: snapshot too old: rollback segment number 22 with name "_SYSSMU22_234950861$" too small

, code 1555.

看这个错误,似乎是oracle分配的回滚段太小导致的。对于这个问题,因为已经过去了一段时间,所以能够合理分析的一种途径就是使用ash.
根据错误信息中的时间戳,基本定位在了22:52~22:53这一分钟之内,抓取了一个ash报告。
因为信息针对性更强,可以很清晰的看到在那一分钟之内数据库层面有一些查询和dml的语句在运行,有些走了全表扫描,有些走了索引扫描。

Top SQL with Top Events

SQL ID Planhash Sampled # of Executions % Activity Event % Event Top Row Source % RwSrc SQL Text
fzn01wc5pg2dg 1199754052 2 15.67 CPU + Wait for CPU 11.75 TABLE ACCESS - FULL 11.75 SELECT /*+ ALL_ROWS USE_NL ("A...
        db file sequential read 2.61 TABLE ACCESS - FULL 2.61
        direct path read 1.31 TABLE ACCESS - FULL 1.31
5q2mguqdcrq4a 421773076 1 12.01 db file sequential read 12.01 INDEX - RANGE SCAN 7.05 SELECT RE.L3_NET_START_TIME, R...
a793wrq0q27c5 201265388 1 10.70 db file sequential read 8.09 DELETE 8.09 delete from RATED_EVENT WHERE ...
        CPU + Wait for CPU 1.57 DELETE 1.57
        direct path read temp 1.04 DELETE 1.04
496x3fkydc1xj 84305990 1 9.92 db file sequential read 8.62 INDEX - RANGE SCAN 8.62 ** SQL Text Not Available **
        CPU + Wait for CPU 1.31 INDEX - RANGE SCAN 1.31
dm1d93bw2jdzc 2843169790 27 8.09 db file sequential read 4.70 INDEX - RANGE SCAN 2.09 select sk.rowid , sk.subscribe...
        CPU + Wait for CPU 3.39 SELECT STATEMENT 2.35

需要重点关注的是全表扫描的语句和DML语句。
先来看看全表扫描的语句。
SELECT /*+ ALL_ROWS USE_NL ("AC1_CONTROL_HIST") FULL ("AC1_CONTROL_HIST") */ ....  from  "AC1_CONTROL_HIST" WHERE "CUR_PGM_NAME"='RGD' AND "IDENTIFIER"=:1
语句输出字段较多,但是相关的表只有一个,这个表从表名可以看出是一个历史表,数据量相比也是相当大的,一查看统计信息,数据量都在亿级以上。
这么大的表,使用了hint,指定全表扫描,相比是某些地方需要吧,带着疑问查看了索引的信息,而其中的主键索引就是IDENTIFIER字段开始的。
所以从这个角度来看,这个问题是一个很明显的问题,因为使用Hint不当导致了,本该走索引扫描的查询结果走了极为消耗资源的全表扫描。
当然了,哲学中有句话是 存在即合理,可能在早期的时候数据量不大,处于某种需要,可能需要全表扫描,或者这部分逻辑是直接从某个地方参考而来,而其中的hint都忘了变更,导致了这样的问题。
出了问题,找问题的理由也是多种多样。当然最终这个问题还是发生了,能够及时发现修复才是更重要的。

对于这个问题的分析暂时告一段落,但是还有dml对于undo的影响也不容小视,可供参考的就是前面表格中的delete语句了。
对于这个语句,delete涉及的表也是很大的一个分区表,数据量亿级以上。在基于索引扫描的前提下,做了根据时间戳进行数据清理的操作。对于这种操作,我们可以反过来考虑一下,目前delete的逻辑是对的,在排除了ac1_control_hist全表扫描影响的前提下,delete操作还是会消耗大量的undo资源。这个时候也需要同时考虑目前的undo大小是否完全满足系统的要求。目前的库里undo的大小在17G左右,几个大分区表都在百G以上,如果删除所限定的时间戳大一些,undo的消耗就会更大,所以也需要考量undo的大小,根据目前的情况,可以考虑适当增大undo空间。
所以这个问题的分析结果就是两个建议,第一个就是对于本该索引扫描的语句走了全表扫描进行改进,规范hint的使用。另外一方面是建议适当调大undo的大小,以满足系统的需求,使得系统的负载更有张力。

目录
相关文章
|
6月前
|
人工智能 运维 数据挖掘
Websoft9分享:在数字化转型中选择开源软件可能遇到的难题
本文探讨了中小企业数字化转型中开源软件的核心价值与挑战。全球超94%企业采用开源软件,可节省80%成本,但技术选型与运维难题亟待解决。文章分析了开源在成本效益、技术自主与敏捷创新方面的优势,并提出五大技术挑战的破局之道。Websoft9提供场景化解决方案与全生命周期赋能体系,助力企业实现1:5.3的高投入产出比,跨越开源鸿沟,拥抱数字化未来。
139 4
|
9月前
|
人工智能 新能源 数据安全/隐私保护
销售易CRM 2024年市场表现分析及2025年展望
2024年,腾讯旗下销售易CRM在产品创新、行业应用和客户服务等方面取得显著进展。通过AI赋能推出智能销售助手,优化私有化部署,提升移动端用户体验,并在制造业等重点行业提供定制化解决方案。2025年,销售易将深化AI集成,扩展产品生态,加大新兴行业投入,加强国际化布局。尽管面临市场竞争,销售易将继续优化易用性、数据安全及定价策略,助力企业数字化转型。
|
6月前
|
安全 架构师 云计算
玄鹿网络 | 中小企业如何借势互联网,打造强势网络品牌?
玄鹿网络在互联网+时代,中小企业面临机遇与挑战,品牌成为企业生存发展的核心灵魂。玄鹿网络通过网络营销助力中小企业塑造品牌形象,其中问答营销可树立良好口碑,B2B网站推广能获取高质量流量,建立企业官网则是展示品牌的窗口。阿里云建站产品如【云·速成美站】和【云·企业官网】,提供快速、稳定、安全的建站服务,助力企业打造独特网络名片,在竞争中脱颖而出。
玄鹿网络 | 中小企业如何借势互联网,打造强势网络品牌?
|
存储 监控 安全
公司电脑监控软件深度对比:软件功能、易用性和成本效益分析
随着企业对信息安全和员工效率管理的日益重视,公司电脑监控软件逐渐成为企业管理工具箱中的必备品。本文将深入探讨三款行业领先的监控软件——WorkWin、OsMonitor和ManageEngine Desktop Central,分析它们在功能、易用性和成本效益等方面的优劣,为企业管理提供参考。
418 1
|
存储 数据采集 人工智能
如何利用人工智能技术提升电商平台的用户体验?
随着人工智能技术的高速发展,AIGC(Artificial Intelligence, Graphics and Computing)应用的场景越来越丰富。在这些场景下,需要高效的存储技术来支持人工智能算法的实现和大数据的处理。众所周知,阿里云是国内领先的云计算服务提供商之一,其在存储技术方面拥有丰富的经验和技术,为AIGC场景下的存储需求提供了全面的解决方案,那么本文就来聊一下电商平台借助人工智能提高用户体验的展望。
618 1
如何利用人工智能技术提升电商平台的用户体验?
|
存储 搜索推荐 Java
深入了解桶排序:原理、性能分析与 Java 实现
桶排序(Bucket Sort)是一种排序算法,通常用于将一组数据分割成有限数量的桶(或容器),然后对每个桶中的数据进行排序,最后将这些桶按顺序合并以得到排好序的数据集。
374 1
深入了解桶排序:原理、性能分析与 Java 实现
|
IDE Java 应用服务中间件
eclipse配置tomcat
Eclipse是一款非常流行的Java开发集成环境(IDE),它主要用于开发Java语言相关的应用程序。而则是一个流行的,也是一个。在Java Web应用程序的开发过程中,使用Eclipse配置Tomcat可以使开发者更方便地进行Web应用程序的总之,通过在Eclipse中配置Tomcat服务器,可以大大方便Java开发者进行Web应用程序的开发和管理。接下来我们就开始配置吧!
|
Linux Shell 开发工具
Linux | 一文带你真正搞懂Linux中的权限问题-2
Linux | 一文带你真正搞懂Linux中的权限问题
722 0
|
人工智能 JSON 自然语言处理
ChatGPT:如何写好 Prompt ?
现在已经产生了一种新职业:Prompt Engineer(提示指令工程师),可见 Prompt 是多么重要,且编写不易。
1473 1
|
JavaScript 前端开发
JavaScript处理数字转化为大写金额
JavaScript处理数字转化为大写金额
656 58