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


    今年以来,在某客户现场遇到了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版本库:

    640?wx_fmt=png

    640?wx_fmt=png

    12.2.0.1PSU20180417:

    640?wx_fmt=png

    640?wx_fmt=png

    640?wx_fmt=png

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

    问题分析


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

    11.2.0.4.8:

    640?wx_fmt=png

    12.2.0.1PSU2018106:

    640?wx_fmt=png

    登陆连接分析

    通过在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客户端发起连接:

    640?wx_fmt=png

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

    640?wx_fmt=png

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

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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

    4.版本测试

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

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

    640?wx_fmt=png

    问题解决


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

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

    建议方案


    1、对于数据库短连接较多的情况,由于此BUG存在,客观造成了连接资源的增加。建议协调应用尽可能改造成长连接,减少相关资源消耗;

    2、持续跟进SR,督促Oracle公司给出补丁(11g已经不出补丁了,12c周期也可能比较长);

    3、如果无法解决并且此问题影响生产,可以尝试卸载对应的PSU到20180417版本以下。

    出处:墨天轮(https://www.modb.pro/db/6951,复制到网页中打开)

    想了解更多关于数据库、云技术的内容吗?

    快来关注“数据和云"、"云和恩墨"公众号及"墨天轮”: modb.pro,我们期待大家一同学习与进步!

    Oracle Database 20c 十大新特性一览

    墨天轮小程序”DBASK“在线问答,随时解惑,欢迎了解和关注!

    Oracle Database 20c 十大新特性一览

  • 相关阅读:
    求两图的 对比度
    关于opencv中的颜色模型转换之CV_BGR2HSV
    转 C++函数返回值,你必须注意的问题
    opencv 3.2 vs2015 debug assertion __acrt_first_block == header
    vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案
    c++ opencv 3.2 +Mfc VS2015窗体显示图片方法
    c++中“箭头(->)”和“点号(.)”操作符的区别
    C# devexpress gridcontrol 分页 控件制作
    c#Md5 32位加密结果少了两个0的原因
    opencv 线,椭圆 圆
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13311908.html
Copyright © 2020-2023  润新知