**** 数据库-监听故障处理-故障单
**** 数据库-监听故障处理 |
|||
故障反馈人 |
张** |
工单接收时间 |
2024年9月11日 9:10 |
审核/复核人 |
张**/张*** |
处理完毕时间 |
2024年9月11日 9:22 |
报告人 |
柏* |
报告时间 |
2024年9月11日11:22 |
故障环境 |
IP: 180.5.115.** 数据库版本: 10.2.0.4.0 |
||
故障现象 |
告警时间: 起始于:2024-09-10 22:00
告警现象: 数据库监听程序存在,客户端访问时,监听程序卡死。 |
||
故障分析 |
查询系统日志: Sep 10 14:24:04 zbzl kernel: ps[31279]: segfault at 0 ip 00007f8f21ab9795 sp 00007ffeaa2355c8 error 4 in libc-2.12.so[7f8f21993000+197000] 这种信息一般都是由内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core, 并在系统日志里面输出一条这样的信息。 其中 kernel 后面的ps 代表程序名,[31279]进程ID号, error number是4, 转成二进制就是100, 即bit2=1, bit1=0, bit0=0, 按照上面的解释,我们可以得出这条信息是由于用户态程序读操作访问越界造成的。 error number是由三个字位组成的,从高到底分别为bit2 bit1和bit0,所以它的取值范围是0~7. bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界 bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界 bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
在最近一段时间 ,监听程序也有内存越界情况, 查询数据库告警日志: Tue Sep 10 22:00:03 2024 Errors in file /oracle/admin/zbzl/bdump/zbzl_j000_12876.trc: ORA-07445: exception encountered: core dump [ksdfsql()+245] [SIGSEGV] [Address not mapped to object] [0x000000358] [] [] ORA-00600: internal error code, arguments: [kghstack_free2], [], [], [], [], [], [], []
ksedmp: errors signalled while dumping diagnostics ORA-00607: Internal error occurred while making a change to a data block ORA-00602: internal programming exception ORA-07445: exception encountered: core dump [kgidmp()+613] [SIGSEGV] [unknown code] [0x000000000] [] [] ORA-07445: exception encountered: core dump [kgidmp()+613] [SIGSEGV] [unknown code] [0x000000000] [] [] ORA-07445: exception encountered: core dump [ksdfsql()+245] [SIGSEGV] [Address not mapped to object] [0x000000358] [] [] ORA-00600: internal error code, arguments: [kghstack_free2], [], [], [], [], [], [], [] Shadow_Core_Dump = PARTIAL
报错解释: ORA-07445: exception encountered: core dump [kgidmp()+613] [SIGSEGV] [unknow]表明Oracle数据库遇到了一个未知的段错误(SIGSEGV),这通常是由于数据库内部错误或者内存问题引起的。
报错解释: ORA-00602 是 Oracle 数据库中的一个错误代码,表示内部编程异常。这个错误通常发生在数据库的内核组件中,可能是由于数据库内部的程序错误或系统资源不足引起的。 它通常出现在Oracle服务器内部管理程序中,表明在执行一个存储过程时发生了无法自行处理的逻辑错误或系统内部发生故障。
解决办法: 1.在发生core dump 时候,程序名为: kgidmp 和ksdfsql ,由此可以判断在执行SQL时,传参数过大,或者在执行大表操作,导致共享内存不足,内存分配失败。 查询数据库SGA/PGA 配置确实有点低:
主机配置是 8C/16G,建议先增加配置,数据库可以先不升级处理
2.但是,oracle官方也给出建议是BUG: 经过查MOS,这是一个已知的BUG(18093317),说是数据库版本不同引起的。 通过应用补丁解决: Patch 31103343: DATABASE PATCH SET UPDATE 11.2.0.4.200714
数据库时遇到ORA-07445错误的解决过程。该问题是已知bug,通过打补丁(Patch 10432045)来解决。
根据以上报错错误号,一般分析方向:
|
||
问题原因 |
|
||
处理方案 与建议 |
处理过程: 1、 停止监听 停止不掉监听,杀掉监听进程 重启监听: 测试数据库使用正常。
|