oracle listener troubleshooting 小结

监听诊断

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限制。

你可能感兴趣的:(oracle listener troubleshooting 小结)