首页 > 数据库 >Oracle如何诊断远程访问数据库慢/超时等问题小结

Oracle如何诊断远程访问数据库慢/超时等问题小结

时间:2024-05-29 17:12:12浏览次数:14  
标签:TRACE trace SERVER CLIENT Oracle 超时 小结 客户端

管理维护Oracle数据库的时候,有时候会碰到用户(应用程序)远程连接/访问数据库非常慢,甚至连接超时的问题。这里简单总结一下遇到这类问题的方法,仅供参考,如有疏漏或不足之处,敬请指正。文中部分内容来自官方文档Doc ID 1679567.1[1]

遇到这类问题,首先应该检查/排除网络问题,一般来说,有一定概率是网络问题或防火墙问题引起的。可以使用下面命令进行验证

ping <server_ip>
tnsping <service_name>

如果这里上面两种操作都非常慢/耗时,那边基本可以判断是网络的问题了,如果上面两种操作都正常,那么一般我们需要在客户端和服务端开启SQL*Net trace来诊断问题。这个也是最有效的方法。

开启SQL*Net trace

客户端:

在客户端的sqlnet.ora中添加下面参数,就可以在客户端开启SQL*Net trace(即时生效)。就能收集客户端的trace信息。

TRACE_LEVEL_CLIENT = 16
TRACE_FILE_CLIENT = client
TRACE_DIRECTORY_CLIENT = /tmp/client_trace
TRACE_TIMESTAMP_CLIENT = ON
TRACE_UNIQUE_CLIENT = ON
DIAG_ADR_ENABLED= OFF
#TRACE_FILELEN_CLIENT = 2048   #单位为KB
#TRACE_FILENO_CLIENT = 60

*最后两个参数是可选项。

服务器端:

TRACE_LEVEL_SERVER = 16
TRACE_FILE_SERVER = server
TRACE_DIRECTORY_SERVER = /tmp/server_trace  #根据实际情况设置
TRACE_TIMESTAMP_SERVER = ON
TRACE_UNIQUE_SERVER = ON
DIAG_ADR_ENABLED= OFF
  • 注意事项1:设置trace文件目录时,trace文件路径最后部分千万不要加上反斜杠"/",例如"/tmp/client_trace/",这样会导致无法trace文件无法生成。
  • 注意事项2:在完成跟踪采集后,应该立即在客户端&服务器端关闭trace选项,避免生成大量trace文件,既影响性能,又可能导致空间问题。

分析跟踪事件

一般来说,需要将trace文件打包发给Oracle Supprot技术支持人员分析诊断,当然,除非你有实力能够自己分析诊断。不过一般可以自己分析定位哪一步比较耗时,至于这一步是做啥操作,往往需要专业人员的分析与支持。

还有一种方式就是使用strace分析跟踪,不过这种跟踪方式有时候你都没法进一步定位,如下截图所示

strace -T -t -f -o strace_slow.log sqlplus username/[email protected]:port/service_name

如上截图所示,这个案例中,可以看到下面这一步耗时105.788238秒,但是从这里只知道它是一个read操作,其它无法分析。

3250503 16:21:57 read(9, "\0\10\0\0\v\0\0\0", 8208) = 8 <105.788238>

参考资料

[1]

1679567.1: https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=273660316994015&id=1679567.1&_afrWindowMode=0&_adf.ctrl-state=u275i4zw4_80

标签:TRACE,trace,SERVER,CLIENT,Oracle,超时,小结,客户端
From: https://www.cnblogs.com/kerrycode/p/18220687

相关文章

  • oracle的排序函数以及mysql使用变量实现排序
    oracle的排序函数rank()函数:跳跃排序,如果两个第一,则后边是第3dense_rank()函数:连续排序,,再如两个第一,则后边是第2row_number()函数:连续排序,没有并列的情况createtableccx_test( coursevarchar(10), scoreint);insertintoccx_testvalues(1,70);insertintoccx_......
  • mysql实现oracle的start with递归查询
    oracle查询语句selectdept_codefrom表名startwithdept_code='41311046430000001'connectbyPRIORid=PARENT_ID结果如下:改为mysql查询,实用函数实现selectsd.*from (select*from表名)sd, (select@pid:=(selectidfrom表名wheredept_code='4131......
  • 湘潭大学软件工程专业oracle-sqlplus安装教程
    前言笔者在网上找了一些教程,但是没有装好,或者不知道啥原因,反正就是登不进去老师要求的系统,连接不上服务器,非常苦恼,请教了一下同学,终于弄好了,本文希望能帮助到和我一样有相同困扰的同学下载压缩包首先是下载安装包,按照我的理解,应该是下载下面这个压缩包就行了先打开老师......
  • 《计算机网络微课堂》5-6 TCP超时重传时间的选择
    本节课我们介绍TCP超时重传时间的选择,超时重传时间的选择是TCP最复杂的问题之一。我们来举例说明,假设主机A和B是因特网上的两台主机,他们之间已经建立了TCP连接,纵坐标为时间,现在主机A给主机B发送TCP数据报文段0,并记录下当前的时间。主机B收到后给主机A发送......
  • Dolphinscheduler不重启加载Oracle驱动
    转载自刘茫茫看山问题背景某天我们的租户反馈数据库连接缺少必要的驱动,我们通过日志查看确实是缺少部分数据库的驱动,因为DolphinScheduler默认只带了Oracle和MySQL的驱动,并且需要将pom文件中的test模式去掉才可以在打包的时候引入。我们的任务量比较大,在3.0存在容错机制的情况下......
  • oracle adg dup 一拖一拖一(一主两备)(dup)
    oracleadgdup一拖一拖一(一主两备)1.配置PublicIPora1nmcliconnectionmodifyens33ipv4.addresses192.168.134.249/24ipv4.gateway192.168.134.2ipv4.methodmanualautoconnectyesnmcliconnectionupens33nmcliconnectionshoworastd1节点二nmclicon......
  • Linux使用脚本一键安装Oracle11g
    最近一直在搞服务器,记录下使用脚本安装Oracle数据库,仅供学习使用链接:https://pan.baidu.com/s/1Rrx5SeA-t8hKZW2ZqlqfZg 提取码:lss11.安装CentOS7虚拟机Linux2.修改IP(自动分配IP或者配置静态IP)cd/etc/sysconfig/network-scripts/ls查看文件(后续要使用ens33)修改ifvf......
  • Centos7下安装Oracle11G
    参考网址:https://www.cnblogs.com/zhangzhixi/p/17595686.htmlhttps://blog.csdn.net/qq_40965479/article/details/131727958离线文档:https://files.cnblogs.com/files/blogs/309023/Centos7下安装Oracle11G.pdf?t=1716865847&download=true......
  • MySQL的系统变量max_execution_time小结
    参数介绍:MySQL社区版MySQL5.7.8开始,新增了MAX_EXECUTION_TIME这个系统变量,它用来限制SQL语句的执行时间,确切来说是限制只读SELECT语句。如果查询语句的执行时长超过这个阈值,MySQL将自动停止该SQL语句的执行。如果其值为0,表示不启用该超时限制功能。该参数/变量单位是毫秒(milli......
  • Oracle数据库数据泵(Data Pump)导出与导入
    expdp(导出数据)基本语法:expdp"'/assysdba'"DIRECTORY=EXPDPSCHEMAS=用户名DUMPFILE=my20240528%U.DMPCLUSTER=NOLOGFILE=my_20240528EXPDP.LOG示例:导出用户下指定的表数据。expdp"'/assysdba'"DIRECTORY=EXPDPTABLES=usre1.table1,usre2.ta......