首页 > 数据库 >Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例

Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例

时间:2023-06-19 14:08:19浏览次数:38  
标签:10.1 core Tuxedo patch client Oracle 9.2 客户端


这是一个CU**系统调用的查询天气预报的Tuxedo服务,Oracle Pro*C程序,连接的是Oracle 10.2.0.4库,出现问题的现象是不定时的产生core,服务down,触发Tuxedo服务的自动重启机制,但一般MAXGEN配置是100,即1天内若重启100次后服务就不会自动重启了,只能人工干预,每次重启后会好一阵,且该服务已经由被同步调用改为异步调用,因此实际业务上影响不大,只是几乎每天都会有自动重启的报警。

查看产生的core文件,如下是其堆栈信息,

Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例_客户端

根据提示的应用程序行,找到应用生成的中间.c文件,

Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例_客户端_02


Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例_SQL_03

这是其中一个core,对应于select sysdate into:sysdate from sys.dual;这条SQL语句,再查看其他core,还有针对于其他一些SQL语句的情况,很随机,单独执行这些SQL均正常。

查下MOS,发现有一篇文章和这很像,Core dump - Access Violation in Client Applications After Upgrade to 9.2.0.8, 10.1.0.5 , 10.2.0.x 11.1 and the client or server is still a prior version (文档 ID 455832.1)。描述信息是:

Existing applications (and new applications) encounter a core dump after a database or client-side patch up to versions 9.2.0.8, 10.1.0.5 or 10.2 is applied. This is because these versions contain a patch for Bug 3396162(not a published bug), a patch which must be applied to both client and server for it to be effective, and when mismatched to a client or server that does not contain the patch, causes a core dump/ Access Violation.

强调如果数据库端或客户端打了patch到9.2.0.8,10.1.0.5或10.2版本,才会碰见这种core。原因是这些版本包含了bug3396162的patch,这个patch需要在客户端和服务端同时应用,一旦出现两端只有一边打了patch,就会可能产生core。

而且有一段说明,这个问题的错误栈并不是每次都会碰见,再次强调只要客户端或服务端只有一边打了这个patch,则就会碰见这个bug。

This issue is intermittent and the error stack is not seen 100% of the time. However, if there is a client / server mismatch where the patch for bug 3396162 has been applied to either client or server, but not to both environments, this bug will be encountered.

如下堆栈信息的描述和上面core的堆栈基本一致,

Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例_SQL_04

给出的wrokaround,

The client and server versions must both contain the fix for bug 3396162. This patch is automatically included in 9.2.0.8, 10.1.0.5 and 10.2.0.x or higher releases. The fix is to ensure the patch is applied to both client and server environments.

客户端和服务端必须包含3396162这个bug的补丁,这个补丁自动包含于9.2.0.8,10.1.0.5和10.2.0.x或更高版本中。

其他版本可以下载patch:3396162,

There exists some patches for 9.2.0.7, 10.1.0.3 and 10.1.0.4 for some platforms, downloadable as Patch :3396162.

Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例_SQL_05

再次检查应用程序,发现makefile中使用的Oracle客户端库的版本是9.2.0.7,很符合这篇文章的描述,即客户端应用使用的Oracle版本是9.2.0.7,数据库服务端的版本是10.2.0.4,接着推进一些佐证。

1.和DBA确认9.2.0.7库并未应用这个补丁3396162。
2.测试环境中,让开发人员使用原始9.2.0.7编译的应用程序跑一个一天的持续性测试,发现确实会出现core,而且出现问题的SQL是很随机,和生产环境的现象一致。
3.让开发人员使用9.2.0.8以上的客户端库来重新编译应用程序,再次做持续性测试,发现不会再产生core了。

解决方案
使用9.2.0.8以上的Oracle客户端重新编译应用程序,替换生产环境的二进制文件,重启应用。

总结
C程序出现core dump,跟踪core的信息,往往可以进一步定位问题的出处。


标签:10.1,core,Tuxedo,patch,client,Oracle,9.2,客户端
From: https://blog.51cto.com/u_13950417/6512748

相关文章

  • Oracle 12c CC安装部署攻略 (上)
    之前统一管理非生产数据库的Oracle11gGC(GridCo)环境所用虚机被破坏了,导致无法访问,干脆安装CC(CloudControl)新环境,现在Oracle提供了12cCC和13cCC两个大版本的安装介质,可以从如下链接找到对应版本,http://www.oracle.com/technetwork/oem/enterprise-manager/downloads/index......
  • 安装Oracle Linux碰见的几个问题
    今儿需要部署一个Oracle环境,为了简单些,选择了Oracle提供的Linux版本介质:OracleLinux-R6-U2-Server-x86_64-dvd.iso,在安装的过程中碰见了几个常见的问题,简要记录下,便于日后查找。问题1:无法登陆图形界面按照正常流程安装后,默认是没有安装图形界面的,因此进入的是命令行界面,若不用静......
  • Oracle的隐式转换
    都说Oracle存在NUMBER和VARCHAR2类型的隐式转换,严格意义上需要避免,但为何需要避免,从下面的实验进行验证。1.创建测试表和索引createtabletn(idnumber,namevarchar2(1));createindexidx_tnontn(id);createindexidx_tnontn(name......
  • 《Oracle Concept》第三章 - 6
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。索引范围扫描索引范围扫描是一种按序扫描索引的方式,具有如下特征:在检索条件中指定了索引中的一个或者更多......
  • 《Oracle Concept》第三章 - 10
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。键值压缩技术Oracle能支持使用键值压缩技术对B树索引或者索引组织表中的主键列值部分进行压缩。键值压缩......
  • 《Oracle Concept》第三章 - 8
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。反向索引反向索引也是一种B-树类型的索引,和普通B-树索引不同的是,他会在物理层上将每个索引键值的字节逆序......
  • 《Oracle Concept》第三章 - 5
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。索引扫描在索引扫描中,数据库会在语句中指定索引列值,遍历索引来提取数据。如果数据库扫描索引,他会消耗N次I......
  • Tuxedo服务无法启动的问题解决(涉及MP下tlisten和TLOG的报错)
    今天同事说有一个Tuxedo应用在做测试,但重启了机器和Tuxedo环境后,服务仍无法启动,这次的问题排查和处理比较典型,值得梳理一次。应用环境:OS:SunOS5.9Tuxedo:9.1,MP双机环境问题现象:由于服务不可用,之前有同事使用kill干掉了一些Tuxedo进程,但无法确定具体范围。重启了服务器和Tuxedo......
  • 如何根据v$parameter查询Oracle隐含参数
    Oracle的隐含参数在Oracle的官方文档中是不会出现的,这些参数主要是Oracle内部用于控制某些功能的开关,或者就像今天eygle讲的,Oracle牛逼之处就是可能几年前开发的一个功能就放到当时的版本中,让你“试用”,但你却不知道,如果碰巧因为遇见了这个问题的bug,Oracle会告诉你可以使用这个参数......
  • 关于ASP.NET.CORE中的Failed to read parameter "string param" from the request bod
    先上报错信息Microsoft.AspNetCore.Http.BadHttpRequestException:Failedtoreadparameter"stringparam"fromtherequestbodyasJSON.--->System.Text.Json.JsonException:'s'isaninvalidstartofavalue.Path:$|LineNumber:0|By......