检查数据库能否正常读取全部数据

我们在使用数据库的过程中,经常会遇到各种奇怪的问题。其中,读取数据卡住的问题,是少见并且难以定位的,很多时候大家都是在自己开发的系统寻找卡住的原因,而忽略的数据库造成的原因,结果是耽误时间,徒增损失。

本人做产品的过程中,偶尔会遇到产品正常运行,偶尔出现某些查询的结果集只读取一部分就完全没有输出的情况。

为了避免定位问题方向错误,这里使用了oracle官方的客户端连接数据库,做读取结果集的模拟操作。

queryCheck.sh

#!/bin/bash

startTime=`date`
echo "startTime:$startTime"  >> queryTime.txt

sqlplus -s user/pass@db << EOFa

set pagesize 0 linesize 2000 feedback off tab off colsep |

select * from T_TEST;

disconnect;

quit;

EOFa

endTime=`date`
echo "endTime:$endTime" >> queryTime.txt

  1. 在脚本中,设置数据库的用户名user,密码pass,数据库db;

  2. 本例中将字段分隔符设为“|”,如果不喜欢,想用默认的TAB的话,可以将第三行改为【set pagesize 0 linesize 2000 feedback off tab off】

  3. 本次测试的查询语句是脚本中的【select * from T_TEST;】如果需要执行多个SQL,依次列入。如果需要执行SQL文件,也可以用@somesql.sql;

  4. 执行queryCheck.sh > outfile,就可将查询结果导出到outfile了。如果是不需要结果的,outfile为/dev/null。

  5. 使用tailf queryTime.txt看查询开始和结束时间,如果还没有结束就没有产生网络流量,则为数据库原因引起的查询卡住。

  1. 在执行之前,最好根据实际情况进行评估,条件允许的情况下,保留结果集,方便定位卡住的位置。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 10,261评论 0 44
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,426评论 2 89
  • 问题:介绍一下你自己。 目标:向面试官证明你有经验和能力成为理想的候选人。 tips: 1.回答简短一些,控制在两...
    魔女非非阅读 207评论 0 0
  • 日月两盏灯,春秋一场梦。 我有幸拥有这样一个长辈,无论岁月繁复熙攘,她活出了静水流深。无论时光纷繁凛冽,她教会我从...
    重庆理工大学阅读 870评论 0 0
  • 我想休息我想停下来可是还是要努力呀
    刘干妈丶阅读 211评论 0 0

友情链接更多精彩内容