与网络相关的等待事件有如下几种。
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name like '%SQL*Net%' order by name;
EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3
---------- ---------------------------------------- --------------- --------------- ---------------
355 SQL*Net break/reset to client driver id break?
356 SQL*Net break/reset to dblink driver id break?
345 SQL*Net message from client driver id #bytes
347 SQL*Net message from dblink driver id #bytes
341 SQL*Net message to client driver id #bytes
342 SQL*Net message to dblink driver id #bytes
346 SQL*Net more data from client driver id #bytes
348 SQL*Net more data from dblink driver id #bytes
343 SQL*Net more data to client driver id #bytes
344 SQL*Net more data to dblink driver id #bytes
352 SQL*Net vector data from client driver id #bytes
EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3
---------- ---------------------------------------- --------------- --------------- ---------------
354 SQL*Net vector data from dblink driver id #bytes
351 SQL*Net vector data to client driver id #bytes
353 SQL*Net vector data to dblink driver id #bytes
349 SQL*Net vector message from client driver id #bytes
350 SQL*Net vector message from dblink driver id #bytes
16 rows selected.
这些事件大部分视为Idle事件,所以分析性能问题时一般不予考虑。但某些情况下,这些事件对于分析性能下降原因提供决定性线索。这些事件与性能问题相关的情况如下:
网络速度缓慢时。
如果等待上述事件的时间异常的高,就应该怀疑网络速度。客户端和DBMS之间的网络通信若存在问题,对于SQL*Net message from/to client、SQL*Net more data from/to client事件的等待事件可能表现得较高。如果DBMS和DBMS之间的网络通信存在问题,对于SQL*Net message from/to dblink、SQL*Net more data from/to dblink事件的等待时间可能增加。应该和系统管理员沟通后,需要对网络层进程检查工作。
如果在RAC环境下,与GC(global cache)相关的平均等待时间过长,同样有必要检查网络性能。RAC上的缓存同步基本上是通过网络实现的,所以网络结构存在问题时,这个将直接影响性能。不仅是网速,还要检查数据交换设备是否设定得恰当。
sql执行次数(execute count)异常离得过高时。
执行次数(execute count)过多时,客户端和DBMS间的网络通信频繁的发生,因此网络相关的等待时间可能会延长。这时,oracle需要等待从客户端发送的响应,所以等待SQL*Net message from client或SQL*Net more data from client事件。特别是整个等待时间中,如果SQL*Net more data from client占着相当比重的等待时间,就应该怀疑过多执行次数引起的系统性能下降。
应用程序的实现方式存在问题时。
如果应用程序的实现方式上存在问题,与DBMS维持着链接状态,不必要的等待时间较多,可能会使SQL*Net message from client等待时间会较长。用户角度上说,用户很可能认为应用程序的响应速度缓慢。例如,应用程序通过从oracle拿来一个数据后执行复杂的计算,然后再从oracle拿来一个数据后再执行另外工作的方式实现,oracle中就找不到任何性能问题,但在用户角度上就觉得系统缓慢。即便从用户角度上看响应时间缓慢,但若在oracle中没有发现任何性能问题,低效的应用程序工作方式极有可能就是其原因。