美文网首页
检查数据库能否正常读取全部数据

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

作者: hemny | 来源:发表于2018-11-30 10:00 被阅读13次

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

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

为了避免定位问题方向错误,这里使用了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. 在执行之前,最好根据实际情况进行评估,条件允许的情况下,保留结果集,方便定位卡住的位置。

相关文章

网友评论

      本文标题:检查数据库能否正常读取全部数据

      本文链接:https://www.haomeiwen.com/subject/kqeccqtx.html