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。
看似一个很小的问题,可能包含着错误的操作。
- 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 数组属性和方法