При запуске некоторых приложений на сервере 172.19.112.43 oracle вызывает сбой приложений. Oracle версии 12.2, версия Linux - Red Hat Enterprise Linux Server версии 6.0 (Сантьяго).
Пожалуйста, найдите под следом аварии:
0 0x00007f332756754b in raise () from /lib64/libpthread.so.0
1 0x00007f33233eb212 in skgesigOSCrash () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
2 0x00007f3323a0b535 in kpeDbgSignalHandler () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
3 0x00007f33233eb550 in skgesig_sigactionHandler () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
4 <signal handler called>
5 0x00007f332144220c in kpudfni () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
6 0x00007f3321442f9b in kpudfn2 () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
7 0x00007f33213c5e8a in sqlcucDefine () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
8 0x00007f3323d225cb in sqlall () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
9 0x00007f3323d1f5bc in sqlnst () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
10 0x00007f3323d1b206 in sqlcxt () from /home0/ora12c/app/ora12c/product/12.2.0/dbhome_1/lib/libclntsh.so.12.1
11 0x00007f3326a88c51 in CSTDbConnection::ProcessSelect (this=0x646900 <objDBConn>, VecColumnsobj=std::vector of length 1, capacity 1 = {...}, VecWheresobj=
std::vector of length 1, capacity 1 = {...}, strOrderBy="") at STDbConnException.cpp:11377
Это происходит во многих приложениях. То же приложение работает абсолютно нормально с Oracle 12.1, но при запуске приложений в Oracle 12.2 происходит сбой . Мы также отключили функции диагностики на стороне клиента и сервера, установив следующие параметры в файле sqlnet.ora.
DIAG_ADR_ENABLED = OFF
DIAG_SIGHANDLER_ENABLED = FALSE
DIAG_DDE_ENABLED = FALSE
Но даже это не помогло. Кусок кода, который выдает эту ошибку:
short nIndex7=0;
int intVecIndex=0;
int LastIndex =0;
while(true)
{
memset(szDBErrorCode,'\0',DB_ERROR_LEN);
vector<CSTColumn> objVecColumns;
//cout<<"Inside While Loop"<<endl;
EXEC SQL FETCH select_cursor INTO DESCRIPTOR 'out';
Оператор FETCH выдает ошибку для всех приложений. Иногда запрос на выбор выполняется несколько раз, прежде чем выдать ошибку.
Cpp часть кода, выдающая ошибку:
short nIndex7=0;
int intVecIndex=0;
int LastIndex =0;
//EXEC SQL WHENEVER NOT FOUND DO BREAK ;
while(true)
{
memset(szDBErrorCode,'\0',DB_ERROR_LEN);
vector<CSTColumn> objVecColumns;
//cout<<"Inside While Loop"<<endl;
/* EXEC SQL FETCH select_cursor INTO DESCRIPTOR 'out'; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )822;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlcxt(&my_context, &sqlctx, &sqlstm, &sqlfpn); // This line gave the core
}
Может кто-нибудь, пожалуйста, пролить свет на это.