我们有台测试服务器pro*c/oci应用总是发生各种比较奇葩的现象,就这一台机器会发生,其他几十台都不会发生。
sig 11的原因,内存地址访问越界。各signo的si_code含义可参考http://man7.org/linux/man-pages/man2/sigaction.2.html,在本异常中,signo=11表示SIGSEGV,si_code=1表示Address not mapped to object,也就是地址为空或者无效。更多完整的信息,可以参考http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html。
对于ora-24550 signo=11在oracle 11g下的发生,可以说是oracle 11g新引入的一个bug,从11g开始,Diagnosability features which are turned on by default on Oracle 11g Release 2 causes the problem.
Parameters are:
DIAG_ADR_ENABLED
DIAG_SIGHANDLER_ENABLED
DIAG_DDE_ENABLED
解决方法:
1. Such errors can occur if the "Diagnosability" features are 'ON'.
To turn off the OCI signal handler and re-enable standard Operating System failure processing, place the following parameter setting in sqlnet.ora:
DIAG_SIGHANDLER_ENABLED=FALSE
By default this parameter is set to true.
If you want to see the old behavior you can simply turn off the feature by placing the following parameter setting in your client side sqlnet.ora file under $ORACLE_HOME/network/admin directory.
2. In addition, please turn off other Diagnostics parameters as well by placing the following entries in the client side or server sqlnet.ora file. i.e., from where the application is run.
DIAG_ADR_ENABLED=OFF
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE
官方解释:https://doganay.wordpress.com/2012/03/16/ora-24550-signal-received-si_signo11-si_errno0-si_code1-si_addrc/
http://www.orafaq.com/forum/t/96259/
OCI ora-24550官方MOS解释:https://blog.csdn.net/it_man/article/details/42494829
https://blog.csdn.net/hzhsan/article/details/17189999
https://bbs.csdn.net/topics/360111259
log4cpp使用有问题。