视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ORA-24550:signalreceived:这个问题的原因及解决办法
2020-11-09 10:34:15 责编:小采
文档


ORA-24550: signal received: [si_signo=11] [si_errno=0] [si_code=1] [si_int=0] [si_ptr=(nil)] [si_addr=0x1]Killed我写了两

今天写了个多线程访问数据库的程序,一直运行的好好的,突然就出现了下面的问题:

ORA-24550: signal received: [si_signo=11] [si_errno=0] [si_code=1] [si_int=0] [si_ptr=(nil)] [si_addr=0x1]
Killed

我写了两个线程,第一个访问数据库都成功,但当第二个线程执行到数据库操作时,就突然出现了上面这么个玩意。

印象中以前也遇到过,但现在忘了解决方法了。

想了会,怎么会出现这情况,我又没有改程序,只是加了几行日志。

于是从网上寻找答案。。很多苦逼的同学和我一样都在寻找帮助,但都没有大神给出准确的答案。

有一个版本的解决方案是这样的(黄色部分):

ORA-24550:Signal Received Error的解决方法
有同事,用C++ SOCI开发对Oracle数据库进行DML操作时,发生该错误。
在网上查一下资料,都是说在服务器的sqlnet.ora文件中加入如下内容。

DIAG_ADR_ENABLED=OFF
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE

但是实际上发现问题还是处理不了。但是把该文件放到客户端(应用程序根目录),该问题就解决了。

但是直觉告诉我,我的这个问题肯定不是这个原因,如果是这个原因的话,那别的访问数据库的程序又可以跑的好好的。

于是继续从网上寻找大神,还是无果。

最后只能靠自己了。

还好我用的那编辑工具可以有回退操作,先回到不加日志的那个点,编译运行,这个问题就没有了。

所以断定,这肯定和我打的那些日志有关。于是一行日志一行日志检查,,终于找出了有问题的地方。

LOG((char *)"INFO","%s",m_index, "\n\n\n" );

这一行日志打错了,应该是: LOG((char *)"INFO","%d: %s",m_index, "\n\n\n" );

再删除添加这行日志试了下,果然是这个日志导致了那个错误出现。

这个日志的底层是sprintf 和一个变参函数。我在用由这些函数封装的函数时,用错了。但是编译没有报错,运行时,没运行到这个地方也没有出错。

总结一下,这样的问题,看上去我们就会想到是oracle数据库的错误信息,但有时候不是,我这个就只是其他的语句的错误,估计是执行的时候内存方面问题

所以说,你们出现这个问题,不要盲目去只想是数据库的操作问题。多看看自己的其他代码是否有问题。

相关阅读:

ORA-01172、ORA-01151错误处理

ORA-00600 [2662]错误解决

ORA-01078 和 LRM-00109 报错解决方法

ORA-00471 处理方法笔记

ORA-00314,redolog 损坏,或丢失处理方法

ORA-00257 归档日志过大导致无法存储的解决办法

下载本文
显示全文
专题