oracle数据查询时如何定位问题数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据查询时如何定位问题数据相关的知识,希望对你有一定的参考价值。
在oracle数据库中执行一个查询语句,数据查询到一部分时报错,SQL本身没问题,是由于表中有异常数据导致的,只要定位到这条异常数据,将其数据修正,SQL就能正确执行,但如何快速定位到异常数据?
参考技术A 可以根据where条件去找的什么时候开始错误的
找最后正常天之后的数据出来对
范围慢慢缩小,你这种情况,肯定是业务数据保存的时候没有SQL过滤 参考技术B 这样的问题回答起来比较难。
对待有问题的数据
首先判断会出现什么问题。
针对问题,通过where 条件限定,查询到问题数据追问
我一直也是这么做的,但以为有简便的方法,因为oracle在遇到问题数据时才报错,说明它已经找到这条数据了,oracle本身没有一个将问题数据抛出来的机制?
追答数据库 有验证机制,但是不能够解决全部的问题
所以需要人为的去排错
如何定位占用oracle数据库cpu过高的sql
ORACLE查询当前执行效率低的sql--CPU高的SQL
select sql_text from v$sql order by cpu_time desc
--逻辑读多的SQL:
select * from (select buffer_gets, sql_text
from v$sqlarea
where buffer_gets > 500000
order by buffer_gets desc) where rownum<=30;
--执行次数多的SQL :
select sql_text,executions from
(select sql_text,executions from v$sqlarea order by executions desc)
where rownum<81;
--读硬盘多的SQL :
select sql_text,disk_reads from
(select sql_text,disk_reads from v$sqlarea order by disk_reads desc)
where rownum<21; 参考技术A 一般通过awr报告,可以找到一段时间内占用cpu前十的sql
以上是关于oracle数据查询时如何定位问题数据的主要内容,如果未能解决你的问题,请参考以下文章