Oracle数据库连接类故障处理思路

您所在的位置:网站首页 oracle数据库判断 Oracle数据库连接类故障处理思路

Oracle数据库连接类故障处理思路

2023-05-18 17:30| 来源: 网络整理| 查看: 265

Oracle数据库的连接故障(不能连接或者连接缓慢)非常常见,除了配置文件有问题,还有很多因素导致数据库连接问题,但只要掌握了处理方法,处理起来还是比较简单的,本节主要跟读者分享笔者遇到该类问题时的处理思路。数据库连接类故障通常由以下几类因素引起的: 客户端的配置文件有问题。 网络故障。 主机资源不足。 监听故障。 数据库故障。 提示 关于客户端tnsnames.ora的配置文件错误,读者可以参考第2章获得详细的处理方法。 1、 检查是否由网络故障引起 一般情况下,网络出现问题的概率较小,判断数据库连接故障是否由网络引起的思路如下: (1)在客户端使用sqlplus命令尝试连接数据库,观察是否能连接成功。 (2)在客户端使用ping命令观察网络是否异常,如是否出现了丢包现象。 (3)在客户端使用traceroute命令观察路由是否异常。 (4)在客户端传输一个大文件至服务端,根据网络带宽,评估传输速度是否正常。 (5)在客户端执行tnsping命令检查网络。一般来说tnsping命令的执行时间超过100ms就应该引起注意。 (6)在客户端sqlnet.ora中配置跟踪参数,跟踪会话连接过程。通过解读跟踪文件,一般能找到问题的方向。跟踪参数的配置方法读者可以参考第2章。 (7)检查操作系统日志,检查网卡、交换机、防火墙等硬件是否正常。 2、 检查是否由主机资源引起 当主机资源紧张时,出现的就不仅仅是数据库连接问题了,还可能会引起LATCH争用,SQL语句执行缓慢等数据库性能问题,在RAC系统中甚至会由于发生脑裂(Brain Split)而发生主机重启等严重故障。这里将介绍一下判断数据库连接故障是否由主机故障引起的思路,如下所示: (1)如果能登录主机,则观察主机CPU、内存、I/O消耗情况,主机资源不足可能会导致登录缓慢。 (2)如果不能登录主机,只能ping通,那么系统HANG的原因很可能是由于内存耗尽导致大量交换而引起的,在这种情况下除了关闭应用释放主机内存以外,往往只能通过重启主机来解决。 (3)如果是AIX系统,则检查系统内核参数maxuproc是否达到阀值。如果是HP-UX系统,则检查UDP端口的使用情况,一个会话通常会占用2个UDP端口。 (4)检查主机空间使用率。尤其要检查根目录或者 O R A C L E H O M E 所在文件系统的空间使用率,如果使用率达到 100 ( 5 )在服务器端尝试使用 s q l p l u s 登录数据库,如果不能登录,则使用操作系统跟踪命令(如 s t r a c e 命令)跟踪登录过程。 3 、检查是否由监听故障引起监听是客户端连接至数据库的必经之路,监听的串行处理能力是有限的,单个监听的处理一般保持在每个 30   50 个左右,达到 100 个以上时会导致监听的处理能力大幅度下降。这里也给出判断数据库连接故障是否由监听引起的思路,如下所示:( 1 )检查监听日志文件和 s q l n e t . l o g ,观察是否异常。在某些版本下,过大的监听日志文件可能会导致数据库连接缓慢。( 2 )检查监听进程的 C P U 使用率,异常情况下该进程可能会消耗 100 ( 3 )在服务端执行 l s n r c t l s t a t u s 命令观察监听端口、状态、服务名是否正常。如果监听不能动态注册,则检查服务器端 / e t c / h o s t s 配置文件、 L O C A L L I S T E N E R 和 R E M O T E L I S T E N E R 等数据库参数。( 4 )确认是否存在大量短连接,由于监听是串行处理客户端连接,当大量短连接涌入时会使得监听繁忙而导致处理性能下降。( 5 )确认故障是否由 O r a c l e b u g 引起。如 10.2.0.3 之前的 10 g 版本中,存在监听主进程派生的子进程无法正常结束的 b u g ,进而导致客户端无法连接数据库。提示在处理数据库连接类故障时,我们不能局限于检查数据库服务端故障,有时候也需要检查客户端,如客户端的高 C P U 使用率也会引起数据库连接缓慢。 1.2.4 检查是否由数据库故障引起根据经验,数据库问题通常会导致数据库连接缓慢,而不是连接不成功。判断数据库连接故障是否由数据库引起的思路如下:( 1 )检查 O r a c l e 警告日志和操作系统日志,观察其是否有异常。在进行故障处理时警告日志是我们必须要检查的日志文件之一。( 2 )检查 O r a c l e 进程数是否达到了参数 p r o c e s s e s 的阀值,其默认值为 150 。当 O r a c l e 的进程数达到参数阀值时,会阻止新的连接进程连接至数据库。( 3 )如果数据库是归档模式,则检查归档空间的使用率,归档空间不足会导致客户端不能连接至数据库。( 4 )连接至数据库之后,查询 V ORACLE_HOME所在文件系统的空间使用率,如果使用率达到100%,可能会引起数据库不能连接。 (5)在服务器端尝试使用sqlplus登录数据库,如果不能登录,则使用操作系统跟踪命令(如strace命令)跟踪登录过程。 3、 检查是否由监听故障引起 监听是客户端连接至数据库的必经之路,监听的串行处理能力是有限的,单个监听的处理一般保持在每个30~50个左右,达到100个以上时会导致监听的处理能力大幅度下降。这里也给出判断数据库连接故障是否由监听引起的思路,如下所示: (1)检查监听日志文件和sqlnet.log,观察是否异常。在某些版本下,过大的监听日志文件可能会导致数据库连接缓慢。 (2)检查监听进程的CPU使用率,异常情况下该进程可能会消耗100%的CPU资源。 (3)在服务端执行lsnrctl status命令观察监听端口、状态、服务名是否正常。如果监听不能动态注册,则检查服务器端/etc/hosts配置文件、LOCAL_LISTENER和REMOTE_LISTENER等数据库参数。 (4)确认是否存在大量短连接,由于监听是串行处理客户端连接,当大量短连接涌入时会使得监听繁忙而导致处理性能下降。 (5)确认故障是否由Oracle bug引起。如10.2.0.3之前的10g版本中,存在监听主进程派生的子进程无法正常结束的bug,进而导致客户端无法连接数据库。 提示 在处理数据库连接类故障时,我们不能局限于检查数据库服务端故障,有时候也需要检查客户端,如客户端的高CPU使用率也会引起数据库连接缓慢。 1.2.4 检查是否由数据库故障引起 根据经验,数据库问题通常会导致数据库连接缓慢,而不是连接不成功。判断数据库连接故障是否由数据库引起的思路如下: (1)检查Oracle警告日志和操作系统日志,观察其是否有异常。在进行故障处理时警告日志是我们必须要检查的日志文件之一。 (2)检查Oracle进程数是否达到了参数processes的阀值,其默认值为150。当Oracle的进程数达到参数阀值时,会阻止新的连接进程连接至数据库。 (3)如果数据库是归档模式,则检查归档空间的使用率,归档空间不足会导致客户端不能连接至数据库。 (4)连接至数据库之后,查询V ORACLEH​OME所在文件系统的空间使用率,如果使用率达到100(5)在服务器端尝试使用sqlplus登录数据库,如果不能登录,则使用操作系统跟踪命令(如strace命令)跟踪登录过程。3、检查是否由监听故障引起监听是客户端连接至数据库的必经之路,监听的串行处理能力是有限的,单个监听的处理一般保持在每个30 50个左右,达到100个以上时会导致监听的处理能力大幅度下降。这里也给出判断数据库连接故障是否由监听引起的思路,如下所示:(1)检查监听日志文件和sqlnet.log,观察是否异常。在某些版本下,过大的监听日志文件可能会导致数据库连接缓慢。(2)检查监听进程的CPU使用率,异常情况下该进程可能会消耗100(3)在服务端执行lsnrctlstatus命令观察监听端口、状态、服务名是否正常。如果监听不能动态注册,则检查服务器端/etc/hosts配置文件、LOCALL​ISTENER和REMOTEL​ISTENER等数据库参数。(4)确认是否存在大量短连接,由于监听是串行处理客户端连接,当大量短连接涌入时会使得监听繁忙而导致处理性能下降。(5)确认故障是否由Oraclebug引起。如10.2.0.3之前的10g版本中,存在监听主进程派生的子进程无法正常结束的bug,进而导致客户端无法连接数据库。提示在处理数据库连接类故障时,我们不能局限于检查数据库服务端故障,有时候也需要检查客户端,如客户端的高CPU使用率也会引起数据库连接缓慢。1.2.4检查是否由数据库故障引起根据经验,数据库问题通常会导致数据库连接缓慢,而不是连接不成功。判断数据库连接故障是否由数据库引起的思路如下:(1)检查Oracle警告日志和操作系统日志,观察其是否有异常。在进行故障处理时警告日志是我们必须要检查的日志文件之一。(2)检查Oracle进程数是否达到了参数processes的阀值,其默认值为150。当Oracle的进程数达到参数阀值时,会阻止新的连接进程连接至数据库。(3)如果数据库是归档模式,则检查归档空间的使用率,归档空间不足会导致客户端不能连接至数据库。(4)连接至数据库之后,查询VSESSION_WAIT视图,观察是否有异常的等待事件。如Oracle 10.2.0.4之前SYS.AUDSES 的 C A C H E 值为 20 ,因此,当出现大量的并发短连接时,很容易由于 S Y S . A U D S E S 的CACHE值为20,因此,当出现大量的并发短连接时,很容易由于SYS.AUDSES 的CACHE值为20,因此,当出现大量的并发短连接时,很容易由于SYS.AUDSES的CACHE值不足而引发ENQ:SQ-CONTENTION等待事件。 (5)在客户端sqlnet.ora配置文件中设置跟踪参数,跟踪会话连接过程。通过解读跟踪文件,一般能找到出现问题的方向。 (6)检查数据库是否做了登录访问控制。如存在LOGON TRIGGER,则会在一定程度影响会话登录速度。 (7)检查数据库级别是否开启了会话跟踪,如设置了SQL_TRACE参数之后会影响会话登录效率。 (8)检查数据库是否存在大量DATABASE LINK短连接。Oracle DATABASE LINK的登录包含在业务时间范畴之内,频繁的DATABASE LINK短连接将使业务性能大幅度下跌。 (9)如果数据库连接方式配置为MTS(Multi-Threaded Server),则检查LARGE POOL配置是否足够。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3