以实际安排分享星空企业版案例分享遇到Oracle数据库错误时如何排查

一、 概述
目前星空企业版产品使用ORACLE数据库的项目也非常多,特别针对中型偏大型的项目,由于他们数据量大,对性能各项要求比较高,所以可能更多的这类型的客户会选择ORACLE数据库,大家都很清楚Oracle数据库比SqlServer维护成本高很多,难度大很多,门槛也高很多,但当项目使用Oracle数据库时,需要注意什么呢?如果面对在交付过程中遇到ORACLE 数据库报错时怎么办呢?下面就结合实际项目案例来分享一下使用oracle数据库时需要特别注意的事项及在系统使用过程中如何去甄别是Oracle数据本身的报错呢,并且如何处理这些报错,希望能帮助到更多的项目.
二、 数据库报错背景描述
项目1:
(1) 项目的星空企业版7.1版本使用的数据库为Oracle 11g,但项目上半年做账套拆分后有一个账套使用的12C,项目在做升级为企业版8.1之前,项目将另外一个账套使用的Oracle 11g 也升级为12C。
(2) 在升级为8.1的测试环境中,跑成本时出现Oracle数据库本身的报错,报错信息为:“Message:ORA-06502: PL/SQL: numeric or value error: character string buffer too small”,具体报错截图如下:

(3) 成本因为这个报错中断,在7.1版本当数据库升级为Oracle 12C也出现过,但数据库重启后能解决,但这次升级为星空8.1后多次重启也不能解决这个问题,是星空从7.1升级8.1版本花较长时间解决的问题。
项目2:
(1) 一锻造行业项目使用星空产品,数据库使用的是Oracle 12.1.0.2 版本
(2) 星空在上线过程中,用户反馈使用点击生产模块的一张单据的时候,出现以下错误,从报错来看,非星空企业版产品的报错,确定为数据库报错,报错如下截图:

三、 处理方案
项目1:排查和处理过程
(1) 从错误来看是数据库报错,Oracle维护的人员排查,查不出原因,并提单Oracle数据库 原厂,原厂回复是让从ERP自身排查,因此排查工作落到星空企业版这边负责成本的老师和总部负责Oracle的专家老师一起排查和分析,现场开发人员和客户的DBA协助
(2) 总部成本专业人员从日志初步排查出是余额表:T_HS_Balance,在日志中有中断报错,并让现场写一个插件来测,选择中断的SQL 来测,select * from T_HS_Balance,测试发现会重现问题(注意在数据库端直接执行肯定不会重现),因此基本锁定就是这个表存在问题
(3) 排查时还发现如果将这个表的数据转到一个新创建的表,问题也不会出现,因此发现这个表肯定是有比较特殊的处理,包括索引方面的处理等,总部Oracle的专家老师通过多方面排查,并通过现场的二开插件来快速验证的方式来排查问题
(4) 最终发现是由子分区表的相关属性引起,去掉子分区表以后,问题解决,运行这张表时不会报错
(5) 最后发现还不止这个表有问题,存储余额相关的几张表都会有问题,最后把这几张相关余额表的子分区去掉后问题全部解决,这几张表分别为:
T_HS_InivBalance T_HS_InivBalanceExp T_HS_InivBalanceEntry T_HS_InivBalanceExpEntry T_HS_Balance T_HS_BalanceExp T_HS_BalanceEntry T_HS_BalanceExpEntry
项目2:排查和处理过程
(1) 总部负责Oracle的老师凭专业能力很快就定位到时由于没打相关补丁引起
(2) 总部提供需要更新的补丁清单,打完Oracle这个版本相关补丁后,问题解决
四、 oracle数据库安装部署注意事项
1. 操作系统建议使用Linux操作系统,使用windows系统问题多
(1) Linux系统安全好、性能好、稳定好
(2) 比起其他操作系统,如:AIX、HP、WINDOWS等,ORACLE对LINUX系统的的支持力度最大,补丁最完全
(3) Linux版本建议选择Oracle Linux,Redhat Linux, Suse Linux,其他版本都没经过认证.
Linux系统安装注意事项
(1) Linux系统建议版本为:Oracle Linux(7.9)(官网有下载)
(2) 安装Linux时,建议选择使用英文语言,不要用中文,方便后期运维
(3) Linux 系统安装完成后,如果需要升级的需要先升级,确保系统正常运行后才可以安装数据库
2. Oracle 数据库版本选择建议
(1) 11.2.0.4或12.1.0.2(暂不推荐12.2、18C、19C及后续版本)
(2) 企业版(标准版不满足需求)
(3) 单节点或 Rac 环境均可,推荐使用 Rac
备注说明:RAC 提供数据库的高可用(双机互备:服务器1宕掉,还有服务器2提供数据库 服务)
3. Oracle 数据库升级注意事项
(1)Oracle数据库升级高版本比如ORACLE 12C或者12C以上版本时存在较大的风险,需谨慎,需在测试环境全面验证后才考虑数据库升级
(2)一般给客户的方案中一定要选择星空企业版支持得比较好的版本,如果客户选择高版本时要告诉客户存在的巨大风险,尽量使用星空对Oracle数据库支持比较好的稳定版本。
为什么不要推荐使用12.2.0.1版本呢?
(1) 金蝶云星空产品当前使用的 ODP.NET 驱动,也就是连接应用系统和数据库的接口程序,只在11204,12102版本认证过,高于此范围的,遇上故障的机会会增多
(2) 12.2.0.1,是12.2版本的初始发行版,对比18C(12.2.0.2),还是19C(12203),不论是BUG,还是性能,问题都是最多的,这个版本一般只用于学习、测试,不用于生产.
3. EM工具的安装
EM是数据库性能监控、SQL调优的利器,必须得安装它,当出现性能问题时也便于分析和解决问题,当总部专家支持时也需要通过EM工具进行分析,务必创建EM,并启动EM.
EM使用场景如下:
(1) 当系统出现性能问题时,需要分析数据库本身性能情况,查找性能引起的原因
(2) 需要监控SQL 执行情况时,使用EM非常方便,SQL执行情况非常清晰,一目了然
4. Oracle数据库安装完成后必须得安装补丁
(1)11.2.0.4 版本的补丁要求
建议打上这些补丁集,及小补丁(后续小补丁可能会有改动)
1) p28429134_112040_Linux-x86-64.zip -- GI 版本(20181016期,下同)。
p28204707_112040_Linux-x86-64.zip – 单节点。
p28440700_112040_Linux-x86-64.zip -- Ojvm。
2) 12646133,14078947,14275161,16016968,16086769_112041,16311211_11204171017, 17197563,17259786_11204160119(Post),17306264_11204170418,18405192 , 20033247,20048270,20250147,21050285_11204181016。
补丁更新注意事项:
1) 打补丁之前,须先阅读补丁自带的 Readme.html(txt)文件,按该文件要求操作。
2) 打完GI或者单节点的PSU补丁集后,再安装OJVM;安装完PSU+OJVM后,再打小补丁, 打小补丁时,需注意补丁版本与PSU版本的匹配度,小补丁的版本,必须是和PSU补丁集 同期,或者最接近PSU补丁期(必须小于PSU补丁期)。
如: 小补丁:21050285_11204181016 和补丁集 p28204707_112040_L
以实际安排分享星空企业版案例分享遇到Oracle数据库错误时如何排查
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



