当前位置: 代码迷 >> 综合 >> oracle listener troubleshooting 小结
  详细解决方案

oracle listener troubleshooting 小结

热度:91   发布时间:2023-12-19 17:09:29.0

监听诊断

1.tnsping的作用及适用场景:

?检查tnsnames.ora文件中的连接串是否配置,或者配置是否符合语法。

?根据执行tnsping命令所消耗的时间来诊断数据库的性能问题。

?检查服务器端的监听是否启动。tnsping主要检查的是远程监听是否启动在相应的IP地址和端口上,并不检查监听中的实例服务和句柄(handle)。

 

2.跟踪客户端会话连接过程:

?在客户端sqlnet.ora设置如下参数:

TRACE_LEVEL_CLIENT=16

TRACE_FILE_CLIENT=CLIENT

TRACE_TIMESTAMP_CLIENT = ON

TRACE_DIRECTORY_CLIENT=<path wheretnsping.trc will go>

?应用场景:

定位客户端无法连接至数据库具体原因(如防火墙)。

跟踪结束之后,务必关闭以上参数!

 

 

3.跟踪本地sqlplus连接过程

?跟踪服务器端sqlplus连接过程(AIX下):

truss -D sqlplus?/as sysdba?

?应用场景:

?本地sqlplus无法连接至数据库

?连接hang

 

4. 跟踪客户端tnsping连接过程

?跟踪客户端tnsping过程,在客户端

sqlnet.ora设置如下参数:

TNSPING.TRACE_LEVEL =[OFF|USER|ADMIN|SUPPORT]

TNSPING.TRACE_DIRECTORY = <path wheretnsping.trc will go>

跟踪结束之后,注意关闭以上参数!

 

5. 跟踪监听处理过程

?HP-UX平台中,可以使用tusc命令跟踪

监听进程:

tusc -T hires -afpolsnr3.log <pid进程号>

?应用场景:

监听连接缓慢,定位某一环节。

 

6. 客户端无法连接至服务端的故障处理思路

?尝试登陆:

1)客户端能tnsping通吗?能ping通吗?

2)服务端sqlplussys/xxx@xxxas sysdba”可以吗?

3)服务端sqlplus/as sysdba”可以吗?

?观察监听状态:

1)执行lsnrctl status/service

2)查看监听进程内存和CPU资源使用率

3)查看listener.orasqlnet.oralistener.log

?尝试跟踪:

1)客户端设置跟踪参数

2)服务端跟踪sqlplus连接过程

?查看数据库状态:

1)检查主机资源消耗情况

2)检查数据库等待事件:v$session_wait

3)检查$ORACLE_HOME/bin/oracle权限和大小

 

7. $ORACLE_HOME/bin/oracle

?为可执行文件,其权限为:

?在服务端派生服务进程(通过tusc命令跟踪):

?出现ORA-12547:TNS:lostcontact或者ORA-12537:

TNS:connectionclosed错误,应该首先检查

$ORACLE_HOME/bin/oracle文件

?安装数据库软件时,如果缺包,那么该文件大小很可能为0

 

8. 监听优化思路

?监听使用串行方法处理客户端连接,建议使用连接池。高并发的短连接可能会使监听CPU消耗100%

?尽量少使用dblink,这个也是性能杀手。

?设置arraysize,减少客户端和服务端包传递次数。

?调整操作系统的TCP的发送和接受缓冲区大小。如AIXtcp_sendspacetcp_recvspace

?调整OracleTCP的发送和接受缓冲区大小。调整SEND/RECV_BUF_SIZE大小。

?通过设置监听参数QUEUESIZE来提高监听处理的最大并发数。

?增加监听来处理更多的并发数。比如在服务器端分别开设1521端口和1522端口的监听

?注意监听日志大小,如4G限制。

  相关解决方案