文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

sqlplus 登录时快时慢的问题分析

2024-04-02 19:55

关注

sqlplus 登录时快时慢的问题分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

客户反映前端系统反映很慢,自己通过sqlplus登录发现时而正常时而卡顿,登录之后有没有明显症状,需要诊断原因。

因为客户反映登录之后并没有异常,所以先不怀疑是db端出现了性能问题,必须先从客户端程序下手,对于诊断登录问
题,需要调查登录阶段时间都花费在了那些调用上, 于是需要可以提供strace 输出:
strace -f -ttt -o sqlplus.trc sqlplus / as sysdba 

收集信息如下:
+ sqlplus.trc

11114 1468996741.620272 execve("/u01/app/oracle/product/11.2.0/bin/sqlplus", ["sqlplus", "system/spring"], []) = 0
<skipping>...............
11114 1468996741.849734 read(11,  <unfinished ...>
11115 1468996741.849800 getrusage(RUSAGE_SELF, {ru_utime={0, 8998}, ru_stime={0, 28995}, ...}) = 0
<skipping>.....too much getrusage here 
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11111_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11112_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11113_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11114_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11115_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11116_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11117_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11118_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
<skipping>.....too much open here
11115 1468996743.559319 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11115_122.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = 8    <<<1.7s
<skipping>....
11114 1468996743.579234 read(0, "exit\n", 1024) = 5   
11114 1468996747.659642 write(10, "\0\r\0\0\6\0\0\0\0\0\3\t\10", 13 <unfinished ...>  <<<4s elapsed
11115 1468996747.659687 <... read resumed> "\0\r\0\0\6\0\0\0\0\0\3\t\10", 8208) = 13
11114 1468996747.659702 <... write resumed> ) = 13


首先分析第一个trace文件,根据时间戳查找花费时间最多的地方,的确能发现一处时间明显变化地方,就是 read函数
居然花费了4s,非常可疑,经过自己测试发现原来read函数时间就是sqlplus显示登录之后的提示符到最后客户输入exit
命令的时间差,若是是正常情况,剩下并没有发现其他时间戳有明显跳变情况,因为整个trace文件非常大,所以只能一
点点从头阅读,忽然发现trace文件中间有大量的/u01/app/oracle/admin/orcl/adump/orcl_ora_nnn_1.aud出现,一共有
上百个文件,所有文件读完花费了1.7s,问题原因就发生在了这里,这些文件是审计文件可以随时备份删除。于是让客
户理这些文件之后再次登录,明显好转。至此问题解决,至于客户反映时快时慢是因为客户是RAC系统,而另外一个实
例目录下并没有这些文件,所以有时候登录tns形式到第二个实例就没有这个问题。

sqlplus 登录时快时慢问题诊断

By: Bin Mao

客户反映前端系统反映很慢,自己通过sqlplus登录发现时而正常时而卡顿,登录之后有没有明显症状,需要诊断原因。
因为客户反映登录之后并没有异常,所以先不怀疑是db端出现了性能问题,必须先从客户端程序下手,对于诊断登录问
题,需要调查登录阶段时间都花费在了那些调用上, 于是需要可以提供strace 输出:
strace -f -ttt -o sqlplus.trc sqlplus / as sysdba 

收集信息如下:
+ sqlplus.trc

11114 1468996741.620272 execve("/u01/app/oracle/product/11.2.0/bin/sqlplus", ["sqlplus", "system/spring"], []) = 0
<skipping>...............
11114 1468996741.849734 read(11,  <unfinished ...>
11115 1468996741.849800 getrusage(RUSAGE_SELF, {ru_utime={0, 8998}, ru_stime={0, 28995}, ...}) = 0
<skipping>.....too much getrusage here 
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11111_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11112_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11113_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11114_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11115_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11116_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11117_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
11115 1468996741.871284 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11118_1.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
<skipping>.....too much open here
11115 1468996743.559319 open("/u01/app/oracle/admin/orcl/adump/orcl_ora_11115_122.aud", O_RDWR|O_CREAT|O_EXCL, 0660) = 8    <<<1.7s
<skipping>....
11114 1468996743.579234 read(0, "exit\n", 1024) = 5   
11114 1468996747.659642 write(10, "\0\r\0\0\6\0\0\0\0\0\3\t\10", 13 <unfinished ...>  <<<4s elapsed
11115 1468996747.659687 <... read resumed> "\0\r\0\0\6\0\0\0\0\0\3\t\10", 8208) = 13
11114 1468996747.659702 <... write resumed> ) = 13


首先分析第一个trace文件,根据时间戳查找花费时间最多的地方,的确能发现一处时间明显变化地方,就是 read函数
居然花费了4s,非常可疑,经过自己测试发现原来read函数时间就是sqlplus显示登录之后的提示符到最后客户输入exit
命令的时间差,若是是正常情况,剩下并没有发现其他时间戳有明显跳变情况,因为整个trace文件非常大,所以只能一
点点从头阅读,忽然发现trace文件中间有大量的/u01/app/oracle/admin/orcl/adump/orcl_ora_nnn_1.aud出现,一共有
上百个文件,所有文件读完花费了1.7s,问题原因就发生在了这里,这些文件是审计文件可以随时备份删除。于是让客
户理这些文件之后再次登录,明显好转。至此问题解决,至于客户反映时快时慢是因为客户是RAC系统,而另外一个实
例目录下并没有这些文件,所以有时候登录tns形式到第二个实例就没有这个问题。

看完上述内容,你们掌握sqlplus 登录时快时慢的问题分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯