数据库
oracle数据库自启动和关闭脚本调用
数据库灾备恢复小结
DMS使用文档
Oracle12C安装文档_李光升
Centos配置yum源的操作步骤-李光升
CCS数据库突然卡顿问题解决-徐铭
Centos 7.9静默安装oracle 12cR2详细步骤
mysql5.7数据库sql语句数据类型隐式转换的反逻辑BUG
RDS MySQL临时文件导致实例磁盘空间满且出现“锁定中”状态
关于Mysql引擎Myisam和InnoDB的使用
MySQL查询语句中in和exists区别详解-知识点
Mysql 的存储过程中 WITH AS 的语法和使用
Mysql 性能调优-详解
oracle数据库DG搭建
SUSE linux 配置时钟同步服务NTP/Chrony
oracle数据库实例开启操作文档
oracle数据库实例关闭操作文档
oracle数据库DBS备份配置文档v2
ALiYun ECS CENTOS数据上传到OSS操作手册
Oracle - LOGMINER配置方法
oracle sysaux表空间爆满清理unified auditing数据
sysaux表空间爆满WRI$_ADV_OBJECTS占用严重
SAP权限对象
SYSAUX表空间WRI$\_ADV\_OBJECTS表过大清理V2
oracle:表访问方式
ORA性能诊断调优
数据字典(DICT)和性能事件类型(EVENT)
日志挖掘LogMiner
RMAN sql_id “0az7czjdw8z7j” 执行计划异常
Oracle11g Active Data Guard搭建、管理
ORACLE LOGMINER配置v2
oracle日志组调整
ECS linux服务器挂载nas磁盘失败
oracle数据库修改字符集
datapump数据泵导入导出
OA系统数据库ADG架构搭建
IPS数据库SQL执行异常:ORA-00600
oracle 12c 创建PDB
oracle数据库监听异常
lvm:阿里云磁盘扩容,lvm扩容
Redis基本操作
SAP S4 CLIENT COPY(800->400)
日常数据库操作
PGSQL操作
# ORA-00054: resource busy问题处理
OA数据库服务器故障分析报告
CCS数据库生产数据库(北京中心)覆盖到VER环境数据库(乌兰察布):使用nonpdb to pdb迁移方式
WINDOWS环境Django框架连接MySQL数据库配置
Django开发学习实战
什么是向量嵌入?
OA数据库服务器内次异常增长问题分析
基于AI的自动化服务器管理
AI技术发展趋势及其在农牧食品行业的创新应用
IPS数据库日志表数据归档&表分区
国产编程模型GLM-4.6海外爆火:性能媲美ClaudeSonnet,性价比优势显著
免费开源的零代码平台 / 无代码平台,敲敲云 v2.2.0 版本
数据库原理与应用
AI发展近况分析
ORACLE ADG环境下解除ADG关系并激活备库为独立数据库
麦肯锡重磅报告:关于未来的生存指南,当57%的工作被自动化,我们如何与AI结成利益共同体
【Oracle】Cursor(游标)
ORACLE数据库在曾经的备库(路径一致)进行不完全恢复
获取执行计划的6种方法
人工智能行业的发展已进入“系统竞争”时代
2026年AI与机器人发展趋势
事务未提交导致行锁等待问题处理
MongoDB日常操作命令
2026年人工智能前沿技术趋势与应用落地分析
Doris开发
人工智能在数据库运维工作中的应用趋势与落地场景研究
帆软报表开发学习
AI 助手在 Oracle DBA 工作中的辅助能力研究报告
AI原生数据库发展趋势白皮书
OpenClaw数据库管理应用实践
Apache Doris 简介
AI在实际工作中的应用案例分享
人形机器人现状
从十大AI技术趋势,窥见“未来”
AI 在辅助投资股票方面的落地方案与实际使用价值
从原理到实践,一文读懂主流 AI 技术
AI Agent 从零开始学习路线图
AI 驱动的内容生产工作流探索 —— 基于微信公众号文章编写与视频号视频生成的实践
本文档使用「觅思文档专业版」发布
-
+
首页
RMAN sql_id “0az7czjdw8z7j” 执行计划异常
# RMAN sql\_id "0az7czjdw8z7j" 执行计划异常 1. 问题描述 1. SOLUTION MANAGER报警IPS系统数据库TEMP表空间使用率达到百分之百x3 2. 问题解决 1. 确定temp的使用率 1. Select f.tablespace\_name, 2. d.file\_name "Tempfile name", 3. round((f.bytes\_free + f.bytes\_used) / 1024 /1024, 2) "total MB", 4. round(((f.bytes\_free + f.bytes\_used) -nvl(p.bytes\_used, 0)) / 1024 / 1024, 2) "Free MB" , 5. round(nvl(p.bytes\_used, 0)/ 1024 / 1024, 2)"Used MB", 6. round((round(nvl(p.bytes\_used, 0)/ 1024 /1024, 2)/round((f.bytes\_free + f.bytes\_used) / 1024 / 1024, 2))*100,2) as"Used\_Rate(%)" 7. from SYS.V\_$TEMP\_SPACE\_HEADER f,DBA\_TEMP\_FILES d, SYS.V\_$TEMP\_EXTENT\_POOL p 8. where f.tablespace\_name(+) = d.tablespace\_name 9. and f.file\_id(+) = d.file\_id 10. and p.file\_id(+) =d.file\_id;  * 1. 查找temp表空间使用情况 1. select se.username, 2. se.sid, 3. su.extents, 4. su.blocks * to\_number(rtrim(p.value)) as Space, 5. tablespace, 6. segtype, 7. sql\_text,se.status 8. from v$sort\_usage su, v$parameter p, v$session se, v$sql s 9. where p.name = 'db\_block\_size' 10. and su.session\_addr = se.saddr 11. and s.hash\_value = su.sqlhash 12. and s.address = su.sqladdr 13. and su.TABLESPACE='TEMP' 14. order by se.username, se.sid;  * 1. 杀死inactive会话 1. ALTER SYSTEM KILL SESSION '576,43211'; 2. ALTER SYSTEM KILL SESSION '2649,13890'; 3. ALTER SYSTEM KILL SESSION '3784,43964'; 4. ALTER SYSTEM KILL SESSION '4541,14512'; 5. ALTER SYSTEM KILL SESSION '4727,44877'; 6. ALTER SYSTEM KILL SESSION '5105,57465'; 7. ALTER SYSTEM KILL SESSION '5110,16657'; 8. ALTER SYSTEM KILL SESSION '5676,32621'; 2. 收缩temp 1. alter tablespace temp shrink space keep 40G; 3. 查询temp的使用率:数据库temp表空间使用率恢复正常 1. Select f.tablespace\_name, 2. d.file\_name "Tempfile name", 3. round((f.bytes\_free + f.bytes\_used) / 1024 /1024, 2) "total MB", 4. round(((f.bytes\_free + f.bytes\_used) -nvl(p.bytes\_used, 0)) / 1024 / 1024, 2) "Free MB" , 5. round(nvl(p.bytes\_used, 0)/ 1024 / 1024, 2)"Used MB", 6. round((round(nvl(p.bytes\_used, 0)/ 1024 /1024, 2)/round((f.bytes\_free + f.bytes\_used) / 1024 / 1024, 2))*100,2) as"Used\_Rate(%)" 7. from SYS.V\_$TEMP\_SPACE\_HEADER f,DBA\_TEMP\_FILES d, SYS.V\_$TEMP\_EXTENT\_POOL p 8. where f.tablespace\_name(+) = d.tablespace\_name 9. and f.file\_id(+) = d.file\_id 10. and p.file\_id(+) =d.file\_id; 1. temp表空间使用率报警x2 1. 没过多久,TEMP表空间使用率在达到100%; 2. 找出到底是哪个语句占用了temp表空间 1. SELECT sql\_id,sum(TEMP\_SPACE\_ALLOCATED)/1024/1024/1024 temp\_space\_GB 2. FROM DBA\_HIST\_ACTIVE\_SESS\_HISTORY 3. where snap\_id between 18662 and 18672 4. GROUP BY SQL\_ID 5. HAVING sum(TEMP\_SPACE\_ALLOCATED)/1024/1024/1024>10 6. order by temp\_space\_GB DESC;  * 1. 找到SQL\_ID=0az7czjdw8z7j,原来是rman的任务(注意:SQL\_ID是固定的) 1. select * from v$sqlarea where sql\_id ='0az7czjdw8z7j';  * 1. 深入分析,这个语句大量的temp表空间的读写,占用了大量的磁盘IO,这个可能是ips系统月结期间运行缓慢的根因。而工作期间只有阿里云的DBS在运行,所以怀疑是阿里云的dbs服务导致的:经过向阿里云工程师的咨询,他们表示无法在dbs层面给出解决办法。提供了一个参考建议:[rman 触发temp空间不足问题-brjl-ChinaUnix博客](http://m.blog.chinaunix.net/uid-20687159-id-5868803.html?spm=5176.2020520104.0.0.3369709a5Irp65) 2. 复现了temp使用率100%的现象 1. 在RMAN中执行report obsolete命令  * + 1. 查询temp表空间使用率发现达到100%  * + 1. 服务器io层面:18:21开始磁盘写达到限制,一直到18:31,temp表空间被写满。磁盘写降低为0  * + 1. 服务器IO层面:18:31分,temp被写满后,temp表空间的读持续增加,达到限制,持续到18:41,磁盘读降低  * + 1. rman命令report obsolete命令执行成功  * 1. 清理过期备份数据:delete obsolete;执行失败,阿里云DBS备份的路径无法访问  * 1. 启动trace事件跟踪rman report obsolete命令:RMAN>不支持SET 类型语句的执行。  * 1. 启用10046事件跟踪rman report obsolete命令执行过程:成功,RMAN>sql " "支持alter类型的语句  * + 1. 执行过程temp表空间使用率再次达到100% 2. 相应的IO读写都达到瓶颈值 3. 找到该会话sid=948,通过sid找到这个进程的跟踪日志文件路径:/tqls\_system/app/oracle/products/diag/rdbms/ips/ips/trace/ips\_ora\_2325.trc  * + 1. 过程共执行了30分钟。生成的ips\_ora\_2325.trc文件2.34G大小。 2. 使用tkprof工具,利用跟踪日志文件ips\_ora\_2325.trc生成分析报告ips\_ora\_2325.txt 1. tkprof /tqls\_system/app/oracle/products/diag/rdbms/ips/ips/trace/ips\_ora\_2325.trc ips\_ora\_2325.txt 2. more ips\_ora\_2325.txt  * + - 1. 发现有语句排序的行达到6E条(673025325条),造成TEMP瞬间爆满,并伴随着磁盘读写资源被全部占用。(这会造成其他会话无资源可用而形成卡顿)  * + - 1. 但是相关的这几张表的条目数挺大的  * + - 1. 清理过失效数据,报错,因为访问不了阿里云的dbs,问题又回去了-找阿里云 2. 查询SELECT * FROM X$KCCBP:发现2022年4月21日的dbs备份信息都还在  * + 1. 目前两个方向:1,收集fixed tble的统计信息(其他数据库的统计信息更多(比如ccs),但是执行不至于这么慢,所以他的执行计划有问题);2,清理数据库备份信息历史记录 2. 清理数据库备份信息历史记录 1. 如果allocate channel c1 disk;delete obsolete只能清理磁盘类型的备份信息;如果allocate channel c1 SBT\_TAPE;报错,未能加载介质管理库  * + - 1. 针对上述报错:allocate channel c1 SBT\_TAPE;oracle自动分配的磁带通道报错的问题。 2. 阿里云的建议是:分配一个假channel,指向他本地,来对本地控制文件里备份集元信息进行一些删除。 1. ALLOCATE CHANNEL t1 2. DEVICE TYPE sbt PARMS='sbt\_library=oracle.disksbt, 3. ENV=(backup\_dir=/tmp)'; 3. 完整脚本如下RMAN> 1. RUN { 2. ALLOCATE CHANNEL c1 DEVICE TYPE 'SBT\_TAPE' PARMS='SBT\_LIBRARY=ORACLE.DISKSBT, ENV=(BACKUP\_DIR=/tmp)'; 3. crosscheck backup; 4. delete expired backup; 5. RELEASE CHANNEL c1; 6. }; 4. 阿里云建议要在测试环境测试下,但是我们的测试环境都没有使用DBS服务,无法测试...... 1. 收集fixed tble的统计信息 1. 在检修窗口期,收集所有fixed objects统计信息命令:exec dbms\_stats.gather\_fixed\_objects\_stats; 1. 收集完成后,RMAN>report obsolete; 2. 依然很慢,磁盘IO暴涨,立即停了请求,不行。 2. 在检修窗口期,重新执行了以下命令:这次可以了,执行RMAN>report obsolete相当的快! 1. exec dbms\_stats.gather\_table\_stats('SYS','X$KCCOR') 2. exec dbms\_stats.gather\_table\_stats('SYS','X$KRBPPBCTX') 3. exec dbms\_stats.gather\_table\_stats('SYS','X$KCCFE') 4. exec dbms\_stats.gather\_table\_stats('SYS','X$KCCDC') 5. exec dbms\_stats.gather\_table\_stats('SYS','X$KCCBF') 6. exec dbms\_stats.gather\_table\_stats('SYS','X$KCCBS') 7. exec dbms\_stats.gather\_table\_stats('SYS','X$KCCPD') 8. exec dbms\_stats.gather\_fixed\_objects\_stats; 9. begin 10. dbms\_stats.gather\_table\_stats( 11. ownname =>'SYS', 12. tabname => 'X$KCCBP', 13. no\_invalidate => false, 14. degree=>2, 15. method\_opt=>'for all columns size auto', 16. cascade => true 17. ); 18. end; 19. / 3. 以上,最紧急的问题解决了,IPS月结卡顿问题能否明显改善需要确认。 2. 再回到第一个方向:我们的备份信息会日积月累,慢慢变多,阿里云DBS备份的信息无法删除始终会成为麻烦, 1. 目前主要的几张表  * + - 1. 考虑在本次检修窗口试试阿里云给的建议  * + - 1. 执行以下命令:成功了... 1. RUN { 2. ALLOCATE CHANNEL c1 DEVICE TYPE 'SBT\_TAPE' PARMS='SBT\_LIBRARY=ORACLE.DISKSBT, ENV=(BACKUP\_DIR=/tmp)'; 3. crosscheck backup; 4. delete expired backup; 5. RELEASE CHANNEL c1; 6. };  * + - 1. 清理掉阿里云dbs备份信息31820条记录。要知道ccs数据库有将近9w条备份记录。 2. 阿里云提醒:清理了阿里云的备份信息,DBS增备可能异常,需要重新做一个全备。  * + - 1. 查看那几张表的数据:数据还是那么多。嗯...需要一个10046事件跟踪下RAMN>delete obsolete到底删了哪几张表的数据。 
徐铭
2024年4月29日 08:54
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期