Ora 03106 fatal two task communication protocol error

Attempted to create a new catalog and received an Oracle

Problem

Attempted to create a new catalog and received an Oracle

Symptom

ORA-03106 Fatal two-task communication protocol error

Resolving The Problem

From the Oracle online Help (contact the DBA or Oracle support for more information):

ORA-03106 Fatal two-task communication protocol error
Cause: The communication path between ORACLE and the user task has stopped.
This is an internal error message not normally issued.
Action: Contact Worldwide Customer Support.
Copyright (c) 1994, Oracle Corporation.

1. Make sure the system can connect to the database outside of Impromptu with SQLPlus.

2. Make sure the Path statement contains the path to the …OraxxxBin directory.

3. Make sure the Tnsnames.ora resides in the …NetxxxAdmin folder.

4. Make sure the correct DLL exist in the …OraxxxBin directory.

5. Make sure a valid Host file reside in the …WINxxxsystem32driversetc directory.

If any of the above fails,
contact the DBA and it may be necessary to reinstall the Oracle client software.

[{«Product»:{«code»:»SSTQPQ»,»label»:»IBM Cognos Series 7 PowerPlay»},»Business Unit»:{«code»:»BU053″,»label»:»Cloud & Data Platform»},»Component»:»Impromptu»,»Platform»:[{«code»:»PF025″,»label»:»Platform Independent»}],»Version»:»Impromptu 5.0;Impromptu 7.3″,»Edition»:»»,»Line of Business»:{«code»:»LOB10″,»label»:»Data and AI»}}]

May 29, 2021

I got ” ORA-03106: fatal two-task communication protocol error ”  error in Oracle database.

ORA-03106: fatal two-task communication protocol error

Details of error are as follows.

ORA-03106 fatal two-task communication protocol error

Cause: The communication path between Oracle and the user task has stopped. This is an internal error message not usually issued.

Action: Contact Oracle Support Services.



On 12.1.0.2, an INSERT statement succeeds in inserting rows yet generates an ORA-3106 error:
SQL> TRUNCATE table target_table;

Table truncated.

SQL> -- Table has NO rows
SQL> SELECT * FROM target_table;

no rows selected

SQL>
SQL> INSERT INTO target_table (id)
  2  SELECT t.id
  3  FROM (
  4        SELECT 1 id
  5             , XMLQUERY('/*/LIST_ITEMS' PASSING XMLTYPE('<ROOT><LIST_ITEMS><LIST_ITEM/></LIST_ITEMS></ROOT>') RETURNING CONTENT)
  6        FROM dba_tables
  7        WHERE rownum = :rw
  8        UNION ALL
  9        SELECT 2 id
 10             , XMLQUERY('/*/LIST_ITEMS' PASSING XMLTYPE('<ROOT><LIST_ITEMS><LIST_ITEM/></LIST_ITEMS></ROOT>') RETURNING CONTENT)
 11        FROM dual
 12        WHERE rownum = :rw
 13       ) t;
INSERT INTO target_table (id)
*
ERROR at line 1:
ORA-03106: fatal two-task communication protocol error

SQL> -- Despite the ORA-3106, rows were actually inserted
SQL> SELECT * FROM target_table;

     ID
-------
      1
      2


fatal two-task communication protocol error

This ORA-03106 error is related to the communication path between Oracle and the user task has stopped. This is an internal error message not usually issued.

Contact Oracle Support Services.

(Unpublished) Bug.20319808 – 47294: ORA-03106 WHILE UPDATING OR AND CSX COLUMN, BUT THE UPDATE IS SUCCESSFUL

Workaround:

Ignore the error:

SQL> -- Despite the ORA-3106, rows were actually inserted
SQL> SELECT * FROM target_table;

     ID
-------
      1
      2



Or, place the INSERT SELECT statement within a PLSQL block, see below:

SQL> TRUNCATE table target_table;

Table truncated.

SQL>
SQL> SELECT * FROM target_table;

no rows selected

SQL>
SQL> begin
  2   INSERT INTO target_table (id)
  3   SELECT t.id
  4   FROM (
  5         SELECT 1 id
  6              , XMLQUERY('/*/LIST_ITEMS' PASSING XMLTYPE('<LIST_ITEMS><LIST_ITEM/>') RETURNING CONTENT)
  7         FROM dba_tables
  8         WHERE rownum = :rw
  9         UNION ALL
 10         SELECT 2 id
 11              , XMLQUERY('/*/LIST_ITEMS' PASSING XMLTYPE('<LIST_ITEMS><LIST_ITEM/>') RETURNING CONTENT)
 12         FROM dual
 13         WHERE rownum = :rw
 14        ) t;
 15 end;
 16 /

PL/SQL procedure successfully completed.

SQL>
SQL> SELECT * FROM target_table;

  ID
----------
  1
  2

Do you want to learn Oracle Database for Beginners, then read the following articles.

Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )

 1,342 views last month,  1 views today

Содержание

  1. GLXIQACC: Error ORA-03106: Fatal Two-task Communication Protocol Error When Performing Account Inquiry (Doc ID 2277940.1)
  2. Applies to:
  3. Symptoms
  4. Changes
  5. Cause
  6. To view full details, sign in with your My Oracle Support account.
  7. Don’t have a My Oracle Support account? Click to get started!
  8. Remote Oracle Database Support
  9. ORA-03106: fatal two-task communication protocol error
  10. Ora-03106 fatal two task communication protocol error
  11. Answers
  12. ORA-03106: fatal two-task communication protocol error
  13. Answers
  14. ORA-03106: fatal two-task communication protocol” error
  15. Answers

GLXIQACC: Error ORA-03106: Fatal Two-task Communication Protocol Error When Performing Account Inquiry (Doc ID 2277940.1)

Last updated on JULY 07, 2020

Applies to:

Symptoms

The following error is encountered when performing an account inquiry:

ERROR :В
ORA-03106: fatal two-task communication protocol error
FRM-40505: ORACLE error: unable to perform query.

The issue occurs for all users and seems to occur only when the intercompany segment is populated with a value. It doesn’t happen for all of them, but does each time a specific intercompany segment value is used.
This worked fine until recently.В

Changes

Upgraded database from 11.2.04 to 12.1.0.2 and also applied January CPU and PSU patches.

Cause

To view full details, sign in with your My Oracle Support account.

Don’t have a My Oracle Support account? Click to get started!

In this Document

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.

Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | | | | Legal Notices | Terms of Use

Источник

Remote Oracle Database Support

ORA-03106: fatal two-task communication protocol error

[RSP] 139100 SIVTMasterProProfList:1001 _getList_ SAVES=0 «CCS» «PRS» F 1 «18512» «» :0 17000 «Database error: SQL> FETCH SelectCursor USING SQL DESCRIPTOR electBindDesc_.» siv_t_mp_p0.sy_createddate, siv_t_mp_p0.rfu9, siv_t_mp_p0.mp_profname, siv_t_mp_p0.rfu8, siv_t_mp_p0.rfu7, siv_t_mp_p0.rfu6, siv_t_mp_p0.rfu5, siv_t_mp_p0.rfu4, siv_t_mp_p0.av_values, siv_t_mp_p0.rfu3, siv_t_mp_p0.rfu2, siv_t_mp_p0.rfu1, siv_t_mp_p0.sy_pendoperation, siv_t_mp_p0.rfu10, siv_t_mp_p0.vpn, siv_t_mp_p0.sy_modifieddate, siv_t_mp_p0.sy_committeddate, siv_t_mp_p0.domain, siv_t_mp_p0.sy_objectid, siv_t_mp_p0.metadata, siv_t_mp_p0.sy_profname, siv_t_mp_p0.sy_changeorderid, siv_t_mp_p0.sy_version, siv_t_mp_p0.sy_objectid FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_objectid = ‘SIVU0000Fe’ AND siv_t_mp_p0.sy_pendoperation != 2 AND (siv_t_mp_p0.sy_changeorderid = ‘SYxf004PZK’ AND siv_t_mp_p0.sy_version = 1 OR siv_t_mp_p0.sy_version = 0 AND NOT (siv_t_mp_p0.sy_objectid IN (SELECT siv_t_mp_p0.sy_objectid FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_changeorderid = ‘SYxf004PZK’ AND siv_t_mp_p0.sy_version = 1))).»

[SIVTMasterProProfList:1001]]» =TOP [->REQ] 139100 SIVTMasterProProfList:1001 _clearList_SAVES=0 OPEN GetInfoCursor.» ] 138999 LogMessage:1 systemadmin2 CCS PRS 18512 «:0» 0 17000 F 1 «!nouser!» «Database error: ORA-03114: not connected to ORACLE. (Code=-3114) (Position=0).» [EVT->] 138999 LogMessage:1 systemadmin2 CCS PRS 18512 «:0» 0 17000 F 1 «!nouser!» «Database error: SQL> OPEN GetInfoCursor.»

Источник

Ora-03106 fatal two task communication protocol error

I have this error when i am using the actuate server, i checked the NLS_LANGUAGE variable on the client and server (i checked those table NLS_SESSION_PARAMETERS, NLS_INSTANCE_PARAMETERS, NLS_DATABASE_PARAMETERS ) and it seems ok.
Do you have any ideas or tests that i can run to solve this problems,

Answers

ORA-3106 When Using Character Sets Other Than US7ASCII [ID 1018731.102]

Modified 22-OCT-2010 Type PROBLEM Status PUBLISHED

The customer has a database that is using a character set other than
US7ASCII and is getting an ORA-3106 fatal two-task communication protocol error.

NLS character set conversion can be the cause of this problem due to
an incorrect NLS environment setup. This causes the connection to be
terminated.

ORA-3106, OCI client, NLS_LANG, NLS, Character Set

When an user gets an ORA-3106 error, this can be caused by a difference
in database and client character sets used.

To retrieve the database character set, you need to log on to the
database using a DBA account and execute:
SELECT value
FROM NLS_DATABASE_PARAMETERS
WHERE parameter = ‘NLS_CHARACTERSET’;

The client character set can be obtained from the NLS_LANG environment
variable or Registry entry.

When the database and client character sets differ you need to set
a proper ORA_NLS32 (for Oracle7 V7.3.x) or ORA_NLS33 (for Oracle8 and
higher) environment variable or Registry entry to point to the NLS
environment local to the Oracle environment. The environment variable
must be set prior to starting the Oracle database and/or client tools.

E.g. for an Oracle8i installation on an UNIX system, the ORA_NLS33
environment variable must point to the following directory:
$ORACLE_HOME/ocommon/nls/admin/data

An invalid value for ORA_NLS32 or ORA_NLS33 will result in the ORA-3106
error to be raised.

What happens with NLS character sets is that the data being returned
will be translated into the character set specified by NLS_LANG.
The ORA_NLS32 and ORA_NLS33 environment variables point to the files
used by a character set conversion. When these environment variables
point to an invalid location, no conversion can take place, causing
the ORA-3106 error to be raised.

Note:77442.1 ORA_NLS (ORA_NLS32, ORA_NLS33) Environment Variables.
Note:158577.1 NLS_LANG Explained

Источник

ORA-03106: fatal two-task communication protocol error

Dear Group members

I have installed Oracle 9.2.0.1.0 database on two computers.
First is db1 and second is db2. I want to access objects of db2 from db1 throgh sql. So i have made db link named «hr01». I have made neccessary addition in db1’s tnsname file. Now i am able to connect to db2 on db1 computer.

Problem is that i try to access db2 database from db1 throgh sql qyery so i have used this query
—> select emp_code from [email protected];
this query successfully runs and shows results.
then i run this query
—> select emp_code,emp_name,emp_desg from [email protected];
then it give error ORA-03106: fatal two-task communication protocol error.
then i run this query
—> select * from [email protected];
then it give error ORA-01455: converting column overflows integer datatype

Dear members tell me what is the problem. If i can access some columns of db2. Why not all columns or more columns are not accessable.

quick response will be much appriciated.

Thanks and regards

Answers

I am not very sure, but this could be a bug in 9.2.0.1.0

for ORA-03106 you can refer to Doc ID: Note:1012295.102 in metalink.

Thanks for help
But i have no meta link account. Please help me with anyother source. Is there there any solution to resolove this bug.

Thanks and regards

Well i am not very sure that its a bug.It might be and moreover why are you using 9.2.0.1 ?? I think you should apply 9.2.0.8 patch

Are the character set on both the database same .

As per metalink

Possible reasons for the ORA-03106 errors include:

1. Incompatibilities between the client application and the RDBMS server. For
example, version incompatibilities, or a client trying to use a feature not
supported by the database kernel.

2. When using database links or gateways.

3. Network or SQL*Net problems.

5. PL/SQL — language related.

1. Check for NLS incompatibilities between the client and server. This is
a very popular cause of the ORA-03106 error.

2. Check the alert log and RDBMS trace files for any pertinent information /
errors that coincide with receiving the ORA-03106 error.

3. Try to get a testcase and reproduce the problem in-house.

4. If a testcase is not possible, ask for SQL*Net trace files, SQL traces, and
try setting event 3106 to obtain the error stack.

5. In extreme circumstances, this could indicate that a shared memory segment
used by Oracle is corrupted. You will have to shut down the database,
possibly using the abort option. Make sure all semaphores have been
released by using the IPCS command on Unix. Oracle uses semaphores to
control concurrency between all of the background processes (pmon, smon,
drwr, lgwr, and oracle shadow processes). Semaphores are also used to
control Two-Task communication between the user process and the shadow
process.

6. Try and narrow down the code that may be causing it. For example it might
have started to happen after increasing the number of parameters in a PL/SQL
block or when using certain values for bind variables, etc.

7. If we still do not make headway, file a bug under RDBMS, but we still may
need some or all of the above information as indicated above

Edited by: Anand. on Oct 29, 2008 :- Asked about character set

Источник

ORA-03106: fatal two-task communication protocol” error

when i select blob data using dblink insert into another database i got ORA-03106: fatal two-task communication protocol” error. So how to resolve this problem.

Answers

Since you have not posted details about database and OS versions, nor details about exactly how you get this error, I would start with searching for «ORA-03106» in My Oracle Support and perusing thru the various documents the search returns

I used Oracle 11g enterprise edition and standard edition on Linux.

Both databases have tables with blob data type column. i have insert table data from standard edition to enterprise edition with dblink
system work fine from 1 years but now suddenly give error when i do bulk insertion it gives » ORA-03106: fatal two-task communication protocol” error»
and when i insert single record with blob size of 20k it give «unable to extend lob» .I checked table space size there is 454mb space available.

I used Oracle 11g enterprise edition and standard edition on Linux.

Both databases have tables with blob data type column. i have insert table data from standard edition to enterprise edition with dblink
system work fine from 1 years but now suddenly give error when i do bulk insertion it gives » ORA-03106: fatal two-task communication protocol” error»
and when i insert single record with blob size of 20k it give «unable to extend lob» .I checked table space size there is 454mb space available.

I used Oracle 11g enterprise edition and standard edition on Linux.

Both databases have tables with blob data type column. i have insert table data from standard edition to enterprise edition with dblink
system work fine from 1 years but now suddenly give error when i do bulk insertion it gives » ORA-03106: fatal two-task communication protocol” error»
and when i insert single record with blob size of 20k it give «unable to extend lob» .I checked table space size there is 454mb space available.

Vaibhav wrote:
hi ,

I used Oracle 11g enterprise edition and standard edition on Linux.

Both databases have tables with blob data type column. i have insert table data from standard edition to enterprise edition with dblink
system work fine from 1 years but now suddenly give error when i do bulk insertion it gives » ORA-03106: fatal two-task communication protocol” error»
and when i insert single record with blob size of 20k it give «unable to extend lob» .I checked table space size there is 454mb space available.

Источник

Written by Embarcadero USA on Monday, 12 July 1999 Posted in DATA

 Question and Answer Database

     FAQ: FAQ4507B - Oracle database link, cursor, ORA-03106: fatal two-task communication protocol error
Category: Database (Oracle)
Platform: All-32Bit
 Product: All-CBuilder,   BC++5.x,   C++Builder1.0,   C++Builder3.x,   C++Builder4.x,   Delphi2.x,   Delphi3.x,   Delphi4.x,   VdBase7.x,   

Question:

Why am I receiving the Oracle error ORA-03106: "fatal two-task 
communication protocol error" when using an Oracle database link
and Oracle cursors?



Answer:

SQL> print rc1
ERROR:
ORA-03106: fatal two-task communication protocol error
ORA-02063: preceding line from MARSLNK

As indicated in the SQL Plus output above this problem can be 
reproduced without using the BDE and/or BDE clients (Delphi, 
BCB, etc.).

The example SQL Plus output shows examples show the creation 
of an Oracle database link, synonym, stored procedure, package, 
package body, along with the execution and "printing" of the 
Oracle cursor data.


===========================

create public database link MARSLNK using 'srvr_tcp.borland.world'


===========================
EXECUTE PROCEDURE AND FETCH DATA FROM CURSORS VIA SQL*PLUS:

variable rctl refcursor;
execute cursortest_4(:rctl);

print rctl



variable rc1 refcursor;
execute cursortest_2(:rc1);

print rc1


===========================

create or replace procedure cursortest_4 (rc1 in out DMOD.rctl) AS

begin

open rc1 for

SELECT CUSTOMER_N, NAME

FROM IDXCUSTM

ORDER BY UPPER(NAME);

end;

===========================
create or replace procedure cursortest_2

(rc1 in out cursorpack.rctl) AS

begin

open rc1 for

SELECT *

FROM IDXCUSTM;

end;

===========================

create or replace package cursorpack IS

type rctl is ref cursor return IDXCUSTM%rowtype;

end;

===========================

create or replace PACKAGE DMOD

IS

type rctl is ref cursor;

end;

===========================

Log in to the Oracle server as the administrator to create the 
public database link:


SQL*Plus: Release 3.3.4.0.0 - Production on Thu Oct 22 16:36:15 1998

Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.


Connected to:
Oracle7 Server Release 7.3.4.0.0 - Production
With the distributed, replication and parallel query options
PL/SQL Release 2.3.4.0.0 - Production

SQL> CREATE PUBLIC DATABASE LINK MARSLNK USING 'srvr_tcp.borland.world';

Database link created.


===========================
Log into the Oracle server as user to create the synonym, packages 
and  procedures followed by execution of the procedures and 
printing/fetching the cursor rows:


SQL*Plus: Release 3.3.4.0.0 - Production on Thu Oct 22 16:40:35 1998

Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.


Connected to:
Oracle7 Server Release 7.3.4.0.0 - Production
With the distributed, replication and parallel query options
PL/SQL Release 2.3.4.0.0 - Production

SQL> CREATE SYNONYM IDXCUSTM FOR [email protected];

Synonym created.

SQL> create or replace PACKAGE DMOD
  2  
  2  IS
  3  
  3  type rctl is ref cursor;
  4  
  4  end;
  5  /

Package created.

SQL> create or replace package cursorpack IS
  2  
  2  type rctl is ref cursor return IDXCUSTM%rowtype;
  3  
  3  end;
  4  /

Package created.

SQL> create or replace procedure cursortest_2
  2  
  2  (rc1 in out cursorpack.rctl) AS
  3  
  3  begin
  4  
  4  open rc1 for
  5  
  5  SELECT *
  6  
  6  FROM IDXCUSTM;
  7  
  7  end;
  8  /

Procedure created.

SQL> create or replace procedure cursortest_4 (rc1 in out DMOD.rctl) AS
  2  
  2  begin
  3  
  3  open rc1 for
  4  
  4  SELECT CUSTOMER_N, NAME
  5  
  5  FROM IDXCUSTM
  6  
  6  ORDER BY UPPER(NAME);
  7  
  7  end;
  8  /

Procedure created.

SQL> variable rctl refcursor;
SQL> execute cursortest_4(:rctl);

PL/SQL procedure successfully completed.

SQL> print rctl
ERROR:
ORA-03106: fatal two-task communication protocol error
ORA-02063: preceding line from MARSLNK



no rows selected

SQL> variable rc1 refcursor;
SQL> execute cursortest_2(:rc1);

PL/SQL procedure successfully completed.

SQL> print rc1
ERROR:
ORA-03106: fatal two-task communication protocol error
ORA-02063: preceding line from MARSLNK



no rows selected

SQL> 

7/13/99 10:49:35 AM
 

Article originally contributed by Bill Curtis

Tags:
Delphi
C++Builder
Database
Database Engines

Check out more tips and tricks in this development video:

No iframes

Error:

ORA-24330: internal OCI error

ORA-03106: fatal two-task communication
protocol error

ORA-03114: not connected to ORACLE

Where: Error logged on oracle
11.2.0.2 client application server. Application based on c/c++ coding. Solaris 10
SPARC

Database
11.2.0.2 compatible, Solaris 10 SPARC

Background:

ORA-24330: internal OCI error & ORA-03114: not connected to ORACLE errors
caused due to session disconnection by ORA-03106:
fatal two-task communication protocol error

So, if you
receive any of these three errors there could be other error strings relevant
to it.

First time
we observed ORA-24330: internal OCI error
& started hunting for resolution, but did not find anything than contact
oracle support , However debugging further in logs found other two errors i.e. ORA-03114 & ORA-03106

Showing
complete error logs below, where you will find the sql statement & errors

Being DBA It
may take many efforts to get all these errors out of thousands of application logs.

Initially we
found just OCI Error which took us in wrong direction completely until we (application
team) sighted ORA-03106: fatal two-task
communication protocol error

[RSP] 139100
SIVTMasterProProfList:1001 _getList_ 
SAVES=0 < «CCS»  «PRS»  F 1 «18512»  «»:0 17000 «Database error: SQL> FETCH SelectCursor USING SQL
DESCRIPTOR electBindDesc_.» 
<  «CCS»  «PRS»  F 1 «18512»  «» 
:0 17000 «Database error: SELECT siv_t_mp_p0.sy_createddate,
siv_t_mp_p0.rfu9, siv_t_mp_p0.mp_profname, siv_t_mp_p0.rfu8, siv_t_mp_p0.rfu7,
siv_t_mp_p0.rfu6, siv_t_mp_p0.rfu5, siv_t_mp_p0.rfu4, siv_t_mp_p0.av_values,
siv_t_mp_p0.rfu3, siv_t_mp_p0.rfu2, siv_t_mp_p0.rfu1,
siv_t_mp_p0.sy_pendoperation, siv_t_mp_p0.rfu10, siv_t_mp_p0.vpn,
siv_t_mp_p0.sy_modifieddate, siv_t_mp_p0.sy_committeddate, siv_t_mp_p0.domain,
siv_t_mp_p0.sy_objectid, siv_t_mp_p0.metadata, siv_t_mp_p0.sy_profname,
siv_t_mp_p0.sy_changeorderid, siv_t_mp_p0.sy_version, siv_t_mp_p0.sy_objectid
FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_objectid = ‘SIVU0000Fe’ AND
siv_t_mp_p0.sy_pendoperation != 2 AND (siv_t_mp_p0.sy_changeorderid =
‘SYxf004PZK’ AND siv_t_mp_p0.sy_version = 1 OR siv_t_mp_p0.sy_version = 0 AND
NOT (siv_t_mp_p0.sy_objectid IN (SELECT siv_t_mp_p0.sy_objectid FROM siv_t_mp_p
siv_t_mp_p0 WHERE siv_t_mp_p0.sy_changeorderid = ‘SYxf004PZK’ AND
siv_t_mp_p0.sy_version = 1)))
.» 
<  «CCS»  «PRS»  F 1 «18512»  «» 
:0 17000 «Database error:
ORA-24330: internal OCI error. (Code=-24330) (Position=0).»  < 
«CCS» 
«ATR»  P 1
«18512»  «»  SIVTMasterProProfList:1001 85010
«Getlist failed. [VPN Access Path Master Profile P List #1001 

[SIVTMasterProProfList:1001]]»  =TOP [->REQ] 139100
SIVTMasterProProfList:1001 _clearList_SAVES=0 <  «CCS»  «PRS»  F 1 «18512»  «» 
:0 17000 «Database error: SQL> OPEN GetInfoCursor.»  < 
«CCS» 
«PRS»  F 1
«18512»  «»  :0 17000 «Database error: ORA-03114: not connected to ORACLE.
(Code=-3114) (Position=0).» 
<  «CCS»  «PRS»  I 1 «18512»  «» 
:0 17097 «Database server is no longer accessible, forcing NPA
shutdown and restart.»  =TOP [EVT->] 138999 LogMessage:1 systemadmin2
CCS PRS 18512 «:0»  0 17000 F 1
«!nouser!»  «Database error: ORA-03114: not connected to
ORACLE
. (Code=-3114) (Position=0).» [EVT->] 138999 LogMessage:1
systemadmin2 CCS PRS 18512 «:0» 
0 17000 F 1 «!nouser!» 
«Database error: SQL> OPEN GetInfoCursor.»

SIVTMasterProProfList:1002 _getList_ 
SAVES=0 <  «CCS»  «PRS»  F 1 «29644»  «» 
:0 17000 «Database error: SQL> FETCH SelectCursor USING SQL
DESCRIPTOR SelectBindDesc_.»  < «CCS» 
«PRS»  F 1
«29644»  «»  :0 17000 «Database error: SELECT
siv_t_mp_p0.sy_createddate, siv_t_mp_p0.rfu9, siv_t_mp_p0.mp_profname,
siv_t_mp_p0.rfu
8, siv_t_mp_p0.rfu7, siv_t_mp_p0.rfu6,
siv_t_mp_p0.rfu5, siv_t_mp_p0.rfu4, siv_t_mp_p0.av_values, siv_t_mp_p0.rfu3,
siv_t_mp_p0.rfu2, siv_t_mp_p0.rfu1, siv_t_mp_p0.sy_pendoperation, siv_t_mp_p0.rfu10,
siv_t_mp_p0.vpn, siv_t_mp_p0.sy_modifieddate, siv_t_mp_p0.sy_committeddate,
siv_t_mp_p0.domain, siv_t_mp_p0.sy_objectid, siv_t_mp_p0.metadata, siv_t_mp_p0.sy_profname,
siv_t_mp_p0.sy_changeorderid, siv_t_mp_p0.sy_version, siv_t_mp_p0.sy_objectid
FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_objectid = ‘SIVU0000Fe’ AND
siv_t_mp_p0.sy_pendoperation != 2 AND (siv_t_mp_p0.sy_changeorderid =
‘SYxf004M5G’ AND siv_t_mp_p0.sy_version = 1 OR siv_t_mp_p0.sy_version = 0 AND NOT (siv_t_mp_p0.sy_objectid IN
(SELECT siv_t_mp_p0.sy_objectid FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_changeorderid = ‘SYxf004M5G’ AND siv_t_mp_p0.sy_version = 1)))
.» 
<  «CCS»  «PRS»  F 1 «29644»  «» 
:0 17000 «Database error: ORA-03106:
fatal two-task communication protocol error
. (Code=-3106)
(Position=0).»  <  «CCS»  «ATR»  P 1 «29644»  «» SIVTMasterProProfList:1002 85010 «Getlist failed. [VPN Access Path
Master Profile P List #1002 [SIVTMasterProProfList:1002]]»  =TOP

Cause &
Analysis:

As I explained earlier getting exact bunch of errors &
the actual error out of it was the trick to get into correct direction to solve
this problem 

ORA-03106: fatal two-task communication protocol was the actual error & rest are
side effects of it causing disconnection of DB session 

Here, I would like to show step by step analysis that we did
rather than jumping to solution directly which is at the end. In case the
solution is not relevant to your problem you may get some hint or direction to
resolve your problem based on analysis shown here below …

Day 1: 
Application Team reported error ORA-03114
first time appearing within specific time interval 2-4 PM IST

What we did?  Of
course pointed finger to network 

[EVT->] 138999 LogMessage:1 systemadmin2 CCS PRS 18512
«:0»  0 17000 F 1
«!nouser!»  «Database
error: ORA-03114: not connected to
ORACLE.
(Code=-3114) (Position=0).»[EVT->] 138999 LogMessage:1 systemadmin2 CCS PRS 18512
«:0»  0 17000 F 1
«!nouser!»  «Databaseerror: SQL> OPEN GetInfoCursor.»
 

Issue went in Network and system admin’s bucket as no error was
reported in alert log of DB

Day 2: Network team were ready to capture the log to
identify what’s going wrong between client & server communications, but Nothing
Found suspicious at Network level!

System admin also hold the line of control, they enabled something
like tcpdump, packet snooping and other traces, No luck!

Day 3: Yes, it was DBA’s turn on day 3

We did below to capture what’s going wrong between 2-4 PM IST

I. Ensure
AWR snaps being taken

II. Enabled
10046 trace for every incoming session from application server host

III.
Continuously Monitored TOP cpu/memory/locking session, load on DB & APPS
server

What we observed?

    — Load found to be going high on both DB &
Apps server between 2-4 PM IST when error occurs

    — Huge COMMIT operation from application as if
some batch job being executed

    — RMAN backup was running causing huge IO

    — 5 Queries with poor execution plan including a
DML executing almost 50 K time , two of the SELECT queries using /*+
FIRST_ROWS_1*/ which suggests a COMMIT after every row causing high COMMIT rate

    — Log file sync , db sequential read , DB CPU were
amongst top 5 wait events

What we did?

   — Highlighted these DB observation to application
team for their analysis

   — As log file sync observed , when checked the
redo log file it was just 50 MB * 3 redo groups, so we replaced it by 1G * 6
Redo Log group with 2 member each

   — RMAN backup scheduled changed to Night

What we got
from application in reply to DB observation is New Error i.e. ORA-24330:
internal OCI error
along with previous ORA-03114: not connected

Day 4: ORA-24330:
internal OCI error
made this issue interesting for others (application,
network team) as it confirms to be complete oracle issue either at oracle client
or database

What we did /
found?

    — Logged Sev 1 SR in My Oracle Support (MOS)

    — Relevant to OCI error ORA-24330 found below
oracle notes

Effect of client_result_cache_size On Client
Applications Or OCI Based Applications (Doc ID 1300727.1)
Bug 10427522 ORA-24330 «internal OCI error» during DML (Doc ID
10427522.8)

In above
oracle notes, it was suggested to
disable 11g feature of client result cache by setting client_result_cache_size=0
in parameter file

If value set
for client_result_cache_size is
greater than 0, then during heavy DML buffer size limited to this value causing
OCI error

But client_result_cache_size
was already set to zero on db, still we enforced it by adding parameter client_result_cache_size=0
in pfile as db was running with pfile than spfile with a db reboot

At the end
of day 4 we were completely dependent & waiting for SR updates for recommendation to get breakthrough

At the end
of the day 4, one major challenge was to re-produce the scenario which
application team was unable to do it using a sample code and till now exact
part of the application code was not identified

MOS
expecting us to create a testcase by re-producing the problem using below, but
we were unable to do so

make
-f demo_rdbms.mk build EXE=testcase OBJS=testcase.o

Day 5:
Fortunately last day of Hunt, followed by Happy Weekend

Again error
appeared at 3:46 PM IST & this time application team introduced us to new
ORA error i.e.

ORA-03106: fatal two-task communication
protocol error along with previous ORA-24330
& ORA-03114

It is not
like the new errors appearing every day but as I mentioned in beginning, huge
application logs to be mined (log created for almost every server process id at
application level) took time to identify the ORA- errors which was there right
from the beginning of the issues but we got it on day 5, unfortunately (or say fortunately
on day 5 at least)

SIVTMasterProProfList:1002 _getList_ 
SAVES=0 <  «CCS»  «PRS»  F 1 «29644»  «» 
:0 17000 «Database error: SQL> FETCH SelectCursor USING SQL
DESCRIPTOR SelectBindDesc_.»  < «CCS» «PRS»  F 1
«29644»  «»  :0 17000 «Database error: SELECT
siv_t_mp_p0.sy_createddate, siv_t_mp_p0.rfu9, siv_t_mp_p0.mp_profname,
siv_t_mp_p0.rfu
8, siv_t_mp_p0.rfu7, siv_t_mp_p0.rfu6,
siv_t_mp_p0.rfu5, siv_t_mp_p0.rfu4, siv_t_mp_p0.av_values, siv_t_mp_p0.rfu3,
siv_t_mp_p0.rfu2, siv_t_mp_p0.rfu1, siv_t_mp_p0.sy_pendoperation, siv_t_mp_p0.rfu10,
siv_t_mp_p0.vpn, siv_t_mp_p0.sy_modifieddate, siv_t_mp_p0.sy_committeddate,
siv_t_mp_p0.domain, siv_t_mp_p0.sy_objectid, siv_t_mp_p0.metadata, siv_t_mp_p0.sy_profname,
siv_t_mp_p0.sy_changeorderid, siv_t_mp_p0.sy_version, siv_t_mp_p0.sy_objectid
FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_objectid = ‘SIVU0000Fe’ AND
siv_t_mp_p0.sy_pendoperation != 2 AND (siv_t_mp_p0.sy_changeorderid =
‘SYxf004M5G’ AND siv_t_mp_p0.sy_version = 1 OR siv_t_mp_p0.sy_version = 0 AND NOT (siv_t_mp_p0.sy_objectid IN
(SELECT siv_t_mp_p0.sy_objectid FROM siv_t_mp_p siv_t_mp_p0 WHERE siv_t_mp_p0.sy_changeorderid = ‘SYxf004M5G’ AND siv_t_mp_p0.sy_version = 1)))
.» 
<  «CCS»  «PRS»  F 1 «29644»  «» 
:0 17000 «Database error: ORA-03106:
fatal two-task communication protocol error
. (Code=-3106)
(Position=0).»  <  «CCS»  «ATR»  P 1 «29644»  «» SIVTMasterProProfList:1002 85010 «Getlist failed. [VPN Access Path
Master Profile P List #1002 [SIVTMasterProProfList:1002]]»  =TOP 


Also a hint
that error is appearing while selecting rows from blank LOB datatype column value
of the table, which application team were able to replicate using a sample
pro*C code found on oracle site

Ansidyn1.pc is an Oracle Pro*C program that
implements a dynamic SQL interpreter. Using the ANSI embedded SQL syntax,
Ansidyn1.pc accepts dynamic SQL at the input command prompt (SQL>

We tried to
compile this proc*C code which expects DB Username, Password & db service name
as input

proc
mode=ansi ansidyn1

Pro*C/C++: Release 11.2.0.2.0 — Production
on Sat Mar 23 15:34:31 2013

Copyright (c) 1982, 2009, Oracle and/or its
affiliates.  All rights reserved.

System default option values taken from:
/rdbms/11gR2/db_2/precomp/admin/pcscfg.cfg

Error at line 41, column 10 in file
ansidyn1.pc 

#include «tt_version.h« 
………1
PCC-S-02015, unable to open include file

But got so
many errors, so we need to rely on application team who handed over complied
code file a.out

There were solutions
to this compilation error, but i did not tried as got readily available
compiled file

./a.out CE ***1234 CEPRD

Connecting as CE@CEPRD
Connected

You are now in a SQL intrepreter shell using
ANSI Dynamic SQL.

Please enter SQL DDL and DML statements, eg
create table, select, commit etc

SQL> select
sraddcmds from sr_cfglet_p;

SRADDCMDS

ANSI sqlstate: 63000:

ORA-03106:
fatal two-task communication protocol error

SQL> exit

In the select
query used above to re-produce the problem sraddcmds was the CLOB column of
table sr_cfglet_p with few empty rows

So the root
cause of the problem was error being thrown for LOB empty column values

Now, Next
question was why is it so ?

With the
help of Oracle support we did get the answer i.e. db_securefile=ALWAYS parameter

ALWAYS

All LOBs
created in the system are created as SecureFile LOBs. If the LOB is not created in an
Automatic Segment Space Managed tablespace, then an error will occur
. Any BasicFile LOB storage options are ignored. The SecureFile defaults will be
used for all storage options not specified.

LOBs are
allowed to be created as SecureFiles.

If the COMPATIBLE initialization parameter
is not set to 11.1 or higher, then LOBs are not treated as SecureFiles.

So action
plan was to make set  db_securefile=PERMITTED ,  but huge setback was just by setting a db
parameter it was not going to resolve the problem completely as LOB tables we
created with ALWAYS  options will throw same error if only db parameter
is changed . So post changing db_securefile to PERMITTED it was mandatory to re-create those tables

Changing DB
parameter along with tables re-creation was very much effort consuming task,
as it involves major structure changes at schema as well at code level

To save
these efforts a workaround was suggested to put some data or string «NULL» in
all blank columns along with modifying column to NOT NULL constraint & set the
DB parameter.

So that new
tables will be created under default option of PERMITTED wherein LOBS are
allowed to be created as secure files without restriction of ASSM

Due to some
issues oracle analyst was unable to re-produce the problem in his setup &
he was suspecting one parameter sql92_security=TRUE
which is when set to FALSE could
resolve the issue, but that did not happen

Bug has been
created by MOS as below for this issue which is in progress while I am writing
this article and you may get benefited with the solution/patch once made available

Bug 16536665 — ORA-3106 WHEN CLOB NULL AND SQL92_SECURITY=TRUE AND DB_SECUREFILE=ALWAYS

Just before
enlisting solution, here are few snaps showing how we came to conclusion that
setting parameter PERMITTED will resolve this issue

Test_1.  Tests based on setting db_securefile PERMITTED/ALWAYS
at session level to re-produce the problem

When sample table
created with session level parameter PERMITTED no error observed, but it does
when set to ALWAYS

At Apps: test_lob_2  is created when session level  ALWAYS value was set for db_securefile
parameter

Test_2.  To test the workaround
that blank LOB column row removal or replacing with some value could resolve
the issue 

 At DB:

At App:  Yes, it worked. But need to move such
columns to NOT NULL for future

1. Set db_securefile to PERMITTED & re-create all LOB data type tables (Workaround)

2. Replace blank row column values of the table by some
value or NULL flag, and enable NOT NULL constraint for those columns

3. Apply Patch 


<Patch 14727315> DATABASE PATCH SET UPDATE 11.2.0.2.9 (INCLUDES CPUJAN2013)
since it includes accoding to
11.2.0.2 Patch Set Updates — List of Fixes in each PSU (Doc ID 1340011.1)
the fix for
Bug 11723722ORA-3106 READNG SECUREFILES BY OCI SQLTYPE SQLT_LBI AND SQLT_CHR

Lesson Learned:

As the parameter db_securefile default value is PERMITTED , which got changed to ALWAYS as a part if database hardening as per CSI benchmark 11g


Need to have proper testing & review from application after DB hardening

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Comments

@sannPropelApps

After getting a connection from pool,it is throwing Error: ORA-03106: fatal two-task communication protocol error,what may be the cause,though pool was created successfully and connection from that pool successfully.

@cjbj

Check for trace files. Google shows various causes. Last time I saw this was when I was executing the exact same query text in the same connection with a LOB, the first time with fetchAsString, and the second time getting a Lob. My solution was to change the statements by adding a whitespace. Disabling the statement cache also worked. But, as I say, you could have other causes.

@cjbj
cjbj

mentioned this issue

Jun 28, 2021

@stale

This issue has been automatically marked as inactive because it has not been updated recently. It will be closed if no further activity occurs. Thank you for your contributions.

@stale
stale
bot

added
the

inactive

This was marked by stalebot as inactive

label

Jul 12, 2021

@stale

This issue has been automatically closed because it has not been updated for a month.

2 participants

@cjbj

@sannPropelApps

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Oracle network error
  • Ora 01843 not a valid month ошибка
  • Ora error 471
  • Oracle net configuration assistant failed windows 10 как исправить
  • Ora 01843 not a valid month как исправить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии