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数据查询时如何定位问题数据的主要内容,如果未能解决你的问题,请参考以下文章

JVM译文JVM问题定位前的准备工作有哪些

如何定位占用oracle数据库cpu过高的sql?

oracle中查询和定位数据库问题的SQL语句

ORACLE报错的行和列怎么去定位?

捷科漫笔丨性能问题定位分析及ORACLE数据库监控

[转]定位占用oracle数据库cpu过高的sql