今年以来,在某客户现场遇到了2次HPUX IA64平台11g及12c某些版本登陆速度缓慢的问题(包含本地及远程sqlplus/jdbc登陆都慢),经过大量测试分析,最终确定Oracle的某些PSU存在缺陷,导致在HPUX IA64平台上登陆时间大幅增加。

 

具体的版本如下:

1、11.2.0.4PSU20181016,本地sqlplus登陆300-400ms,同比11.2.0.4.8以下版本不到100ms,11.2.0.1则不到10ms;

2、12.2.0.1PSU20180417,本地sqlplus登陆500ms-1s,同比12.2.0.1PSU20180129以下版本大约100ms。

 

问题描述



 

对某厂商生产系统核心库深度巡检中,发现在类似的登陆频度下,11g和12c的登陆消耗差距巨大:

 

11.2.0.4.8版本库:

 

Oracle在HPUX IA64平台登陆缓慢问题分析_系统调用

 

Oracle在HPUX IA64平台登陆缓慢问题分析_系统调用_02

 

12.2.0.1PSU20180417:

 

Oracle在HPUX IA64平台登陆缓慢问题分析_系统调用_03

Oracle在HPUX IA64平台登陆缓慢问题分析_系统调用_04

Oracle在HPUX IA64平台登陆缓慢问题分析_oracle_05

 

可以看到12c登陆消耗的DB TIME高达48%,为11g的400倍,消耗时间为3423s,为11g的122倍!

 

问题分析



 

按前面的脚本分别测试sqlplus本地连接,11g小于30ms,12c为400ms,差距10倍以上。

 

11.2.0.4.8:

Oracle在HPUX IA64平台登陆缓慢问题分析_版本库_06

 

12.2.0.1PSU2018106:

Oracle在HPUX IA64平台登陆缓慢问题分析_oracle_07

 

登陆连接分析

 

通过在Oracle MOS上开SR,给出如下跟踪建议:

 

1. 创建针对dbatest用户的logon trigger,自动产生10046(测试完毕以后,请删除这个trigger< drop trigger sqlldr_logon >)。

CREATE OR REPLACE TRIGGER sqlldr_logon  
AFTER LOGON ON DBATEST.SCHEMA
BEGIN
execute immediate 'alter session set tracefile_identifier="sqlldr"';
execute immediate 'alter session set events ''10046 trace name context forever, level 12''';
END;
/


2. 开启net trace

Action Plan 
==========
1). Please add the following into client machine,sqlnet.ora
TRACE_LEVEL_CLIENT=16
TRACE_DIRECTORY_CLIENT=/temp
TRACE_TIMESTAMP_CLIENT=TRUE
DIAG_ADR_ENABLED=off
2).In server sqlnet.ora,add the following items.
==========
--Add to a srever SQLNET.ORA file
==========
NAMES.DIRECTORY_PATH= (TNSNAMES)
TRACE_TIMESTAMP_SERVER=TRUE
DIAG_ADR_ENABLED=off
TRACE_LEVEL_SERVER = 16
TRACE_TIMESTAMP_CLIENT = ON
TRACE_DIRECTORY_SERVER = /temp/nettrace
==========
3). --Add the following in listener.ora
DIAG_ADR_ENABLED_LISTENER = OFF


3. 服务器端测试

$rm /tmp/12.log 
$ /usr/local/bin/tusc -aepo /temp/12.log -T %H:%M:%S sqlplus dbatest/dbatest@ORADB


Client net trc可以看出08:04:11.899客户端发起连接:

Oracle在HPUX IA64平台登陆缓慢问题分析_sql_08

 

但是Server端08:04:12.127才开始接收请求,延迟0.22ms,说明不少时间消耗在OS层面的处理上面:

Oracle在HPUX IA64平台登陆缓慢问题分析_sql_09

 

分析tusc的文件,发现2个系统调用消耗绝大多数时间:

 

a.sigtimedwait调用超时36次,消耗391ms

 

Oracle在HPUX IA64平台登陆缓慢问题分析_sql_10

 

b.登陆成功前read系统调用消耗437ms

 

Oracle在HPUX IA64平台登陆缓慢问题分析_版本库_11

 

而检查登陆正常的11g及12c版本库,发现没有sigtimedwait系统调用,read系统调用在10ms左右!

 

4.版本测试

尝试打上最新的PSU20190716,故障现象依旧。

随后SR也重现了此现象,认为可能是一个oracle缺陷,并准备开一个defect处理:

 

Oracle在HPUX IA64平台登陆缓慢问题分析_oracle_12

 

问题解决



 

从上述测试分析推断,Oracle某些PSU存在缺陷,导致在HPUX IA64平台上登陆时间大幅增加。

 

目前看12.2.0.1是从PSU20180417(27674384)开始的,11.2.0.4推测也可能是PSU20180417(27338049)