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

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

作者: 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