alert日志中的一条ora警告信息的分析(59天)
今天照例检查数据库alert日志,发现一个错误。但是也没在意,想可能有大的操作导致的,马上会释放空间的,但是转眼一想,这是生产库,而且现在时早上,泰国的运营商还不算忙时,需要重视这个问题,看有没有什么潜在的问题,
从alert日志里面看到的
Fri Jul 12 09:08:23 ICT 2013
ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
查询temp_usage,发现目前使用的只有goldengate的10多个session,占用的自用很少,查询现在的temp usage已经恢复正常了。
SQL> select TABLESPACE_NAME,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS from v$sort_segment;
TABLESPACE_NAME TOTAL_BLOCKS USED_BLOCKS FREE_BLOCKS
------------------------------- ------------ ----------- -----------
TEMP 1023872 7936 1015936
导出awr报告,数据库整体负载很小。top sql里面看到的sql貌似都加了Hint,是被优化过的。
(awr报告时1小时一生成,可能有很多信息都不准确)
没办法,最后查ASH,精确到那一分钟,得到了以下的信息,
Service |
Module |
% Activity |
Action |
% Action |
---|---|---|---|---|
XXXX01 |
TOAD 9.6.1.1 |
83.08 |
UNNAMED |
83.08 |
JDBC Thin Client |
13.85 |
UNNAMED |
13.85 |
并且发现下面的sql耗费了大量的资源,
Top SQL Statements
SQL ID |
Planhash |
% Activity |
Event |
% Event |
SQL Text |
---|---|---|---|---|---|
7v8g1ffh5mwz7 |
3702571469 |
83.08 |
CPU + Wait for CPU |
83.08 |
SELECT /*+ leading (ar1_charge... |
d8x0ns0xjbrp9 |
1042878405 |
9.23 |
CPU + Wait for CPU |
9.23 |
SELECT MT.SHORT_DESC, MO.ENTIT... |
2979km1x69s3g |
3257149028 |
1.54 |
CPU + Wait for CPU |
1.54 |
SELECT AR_BALANCE FROM AR1_ACC.. |
猛一看,这个sql应用了大量的hint,细细一看,是一个很有问题的sql
关联了好几个大表,但是没有关联。
SQL details:
SQL Id |
SQL Text |
---|---|
7v8g1ffh5mwz7 |
SELECT /*+ leading (xxxxx1 xxxx2 xxx3) use_nl (xxxxx1 xxxx2 xxx3) index (xxxxx1 xxxx2 _ix) index (xxxx2 xxxx2 _pk) */ xxxxx1 .CHARGE_ID, xxxxx2.debit_id, xxxx2.invoice_id, xxxx1.partition_id, xxxx1.period_key, ROW_NUMBER () OVER (ORDER BY xxxx2.DEBIT_ID DESC) RN FROMxxxx1, xxxx2, xxx3 WHERE xxxx1.ACCOUNT_ID = 10000027 |
最后马上和team里面确认了下,是有一个人执行的。
然后为了阻止隐患,为邮件给关联的team,对于sql的优化问题一点那个要优化转发到dba team。
看似一个很小的问题,可能包含着错误的操作。
- Activity数据回传
- 引入Fragment原来是这么回事
- Fragment显示和隐藏、绑定和解绑
- 一网打进Linux下那些查找命令
- 高颜值可定制在线绘图工具-第三版
- network3D 交互式网络生成
- 如何用六点教会老婆写 Python ?
- 连高晓松都想学的区块链江湖切口,「HODL」是什么意思?
- Spring Data REST 与 Spring RestTemplate 实战详解
- 程序员炒股,如何计算股票投资组合的风险和收益
- Docker 容器化部署运维 OpenStack 和 Ceph
- 关于设计模式的思考
- Spring 框架之 AOP 原理剖析
- Java 平台反应式编程(Reactive Programming)入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 组复制性能 | 全方位认识 MySQL 8.0 Group Replication
- Android 中View.onDraw(Canvas canvas)的使用方法
- Android API编程之Assets文件操作示例
- Android自制精彩弹幕效果
- RollViewPager无限轮播使用方法详解
- ubuntu16.04 升级内核的方法步骤
- Android 列表倒计时的实现的示例代码(CountDownTimer)
- Android 控件设置阴影效果
- 解决VScode配置远程调试Linux程序的问题
- Android EasyBarrage实现轻量级弹幕效果
- android 获取本机其他app的版本信息的示例代码
- android相册选择图片的编码实现代码
- ClickHouse和他的朋友们(2)MySQL Protocol和Read调用栈
- Android图片三级缓存的原理及其实现
- Android TextView实现带链接文字事件监听的三种常用方式示例