Links
Home
Oracle DBA Forum
Frequent Oracle Errors
TNS:could not resolve the connect identifier specified
Backtrace message unwound by exceptions
invalid identifier
PL/SQL compilation error
internal error
missing expression
table or view does not exist
end-of-file on communication channel
TNS:listener unknown in connect descriptor
insufficient privileges
PL/SQL: numeric or value error string
TNS:protocol adapter error
ORACLE not available
target host or object does not exist
invalid number
unable to allocate string bytes of shared memory
resource busy and acquire with NOWAIT specified
error occurred at recursive SQL level string
ORACLE initialization or shutdown in progress
archiver error. Connect internal only, until freed
snapshot too old
unable to extend temp segment by string in tablespace
Credential retrieval failed
missing or invalid option
invalid username/password; logon denied
unable to create INITIAL extent for segment
out of process memory when trying to allocate string bytes
shared memory realm does not exist
cannot insert NULL
TNS:unable to connect to destination
remote database not found'>ora-02019
exception encountered: core dump
inconsistent datatypes
no data found
TNS:operation timed out
PL/SQL: could not find program
existing state of packages has been discarded
maximum number of processes exceeded
error signaled in parallel query server
ORACLE instance terminated. Disconnection forced
TNS:packet writer failure
see ORA-12699
missing right parenthesis
name is already used by an existing object
cannot identify/lock data file
invalid file operation
quoted string not properly terminated
lock held by in-doubt distributed transaction

lock held by in-doubt distributed transaction

2005-02-10       - By Tony.Adolph@(protected)

Reply:     1     2     3     4     5  

For all / any that are interested Oracle Support fixed my problem by
inserting dummy rows into pending_trans$ and pending_sessions$
They recommend the following note, but none of the scenarios here require
what they advocated in our case:  Note: 126069.1 Manually Resolving
In-Doubt Transactions

but anyway, here's what happened:

SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */
 2  KTUXESTA Status,
 3  KTUXECFL Flags
 4  FROM x$ktuxe WHERE ktuxesta!='INACTIVE' AND ktuxeusn= 4;

 KTUXEUSN   KTUXESLT   KTUXESQN STATUS           FLAGS  
-- ---- -- -- ---- -- -- ---- -- -- ---- ---- --- -- ---- ---- ---- ------

        4         18       4935 PREPARED         SCO|COL|REV|DEAD  

SQL> insert into pending_trans$
 2  (
LOCAL_TRAN_ID,GLOBAL_TRAN_FMT,GLOBAL_ORACLE_ID,STATE,STATUS,SESSION_VECTOR,RECO
_VECTOR,TYPE#,FAIL_TIME,RECO_TIME)
 3  values( '4.18.4935',306206, /* */ 'XXXXXXX.12345.1.2.3', /* These
values can be used without any */
 4  'prepared','P', /* modification. Most of the values are */
 5  hextoraw( '00000001' ), /* constant. */
 6  hextoraw( '00000000' ), /* */
 7  0, sysdate, sysdate );

1 row created.

SQL> insert into pending_sessions$ values('4.18.4935',1,
 2  hextoraw('05004F003A1500000104'),'C',0,30258592,'',146);

1 row created.

commit;

SQL> select * from pending_sessions$

LOCAL_TRAN_ID          SESSION_ID  
-- ---- ---- ---- ---- -- ---- --  
BRANCH_ID  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
I      TYPE# PARENT_DBID  
- -- ---- -- -- ---- ---- ---  
PARENT_DB  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
DB_USERID  
-- ---- --  
4.18.4935                       1  
05004F003A1500000104  
C          0 30258592  
 
      146  
 

SQL> select * from pending_trans$;

LOCAL_TRAN_ID          GLOBAL_TRAN_FMT  
-- ---- ---- ---- ---- -- ---- ---- --  
GLOBAL_ORACLE_ID  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------  
GLOBAL_FOREIGN_ID  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
TRAN_COMMENT  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
STATE            S H SESSION_ RECO_VEC      TYPE# FAIL_TIME  
-- ---- ---- --- - - -- ----- -- ----- -- ---- -- -- ---- ---- -----  
HEURISTIC_TIME     RECO_TIME          TOP_DB_USER  
-- ---- ---- ----- -- ---- ---- ----- -- ---- ---- ---- ---- ---- --  
TOP_OS_USER  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------  
TOP_OS_HOST  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
TOP_OS_TERMINAL  
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
GLOBAL_COMMIT#       SPARE1 SPARE2                             SPARE3  
-- ---- ---- --- -- ---- -- -- ---- ---- ---- ---- ---- -- -- ---- --  
SPARE4  
-- ---- ---- ---- ---- ---- --  
4.18.4935                       306206  
XXXXXXX.12345.1.2.3  
 
 
prepared         P   00000001 00000000          0 10-FEB-05  
                  10-FEB-05  
 
SQL> rollback force '4.18.4935';

Rollback complete.

SQL> execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('4.18.4935');
BEGIN DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('4.18.4935'); END;

*
ERROR at line 1:
ORA-30019 (See ORA-30019.ora-code.com): Illegal rollback Segment operation in Automatic Undo mode
ORA-06512 (See ORA-06512.ora-code.com): at "SYS.DBMS_TRANSACTION", line 65
ORA-06512 (See ORA-06512.ora-code.com): at "SYS.DBMS_TRANSACTION", line 85
ORA-06512 (See ORA-06512.ora-code.com): at line 1


SQL> select count(*) from tracking.tracked_lacosa_backend_request;
select count(*) from tracking.tracked_lacosa_backend_request
                             *
ERROR at line 1:
ORA-01591 (See ORA-01591.ora-code.com): lock held by in-doubt distributed transaction 10.15.4693


SQL> alter session set "_smu_debug_mode" = 4;

Session altered.

SQL> execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('4.18.4935');

PL/SQL procedure successfully completed.

SQL> select count(*) from tracking.tracked_lacosa_backend_request;
select count(*) from tracking.tracked_lacosa_backend_request
                             *
ERROR at line 1:
ORA-01591 (See ORA-01591.ora-code.com): lock held by in-doubt distributed transaction 10.15.4693


----*************  Notice here the transaction id changed *************
-- --

SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */
 2  KTUXESTA Status,
 3  KTUXECFL Flags
 4  FROM x$ktuxe WHERE ktuxesta!='INACTIVE' AND ktuxeusn= 10;

 KTUXEUSN   KTUXESLT   KTUXESQN STATUS           FLAGS  
-- ---- -- -- ---- -- -- ---- -- -- ---- ---- --- -- ---- ---- ---- ------

       10         15       4693 PREPARED         SCO|COL|REV|DEAD  

SQL> insert into pending_trans$ (
LOCAL_TRAN_ID,GLOBAL_TRAN_FMT,GLOBAL_ORACLE_ID,
 2  STATE,STATUS,SESSION_VECTOR,RECO_VECTOR,TYPE#,FAIL_TIME,RECO_TIME)
 3  values( '10.15.4693',
 4  306206, /* */
 5  'XXXXXXX.12345.1.2.3', /* These values can be used without any */
 6  'prepared','P', /* modification. Most of the values are */
 7  hextoraw( '00000001' ), /* constant. */
 8  hextoraw( '00000000' ), /* */
 9  0, sysdate, sysdate );

1 row created.

SQL> insert into pending_sessions$ values('10.15.4693',1,
 2  hextoraw('05004F003A1500000104'),'C',0,30258592,'',146);

1 row created.

SQL> commit;

Commit complete.

SQL> rollback force '10.15.4693';

Rollback complete.

SQL> execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('10.15.4693');

PL/SQL procedure successfully completed.

SQL> select count(*) from tracking.tracked_lacosa_backend_request;

 COUNT(*)  
-- ---- --  
    98697  

Yee Ha!

Tony




"Powell, Mark D" <mark.powell@(protected)>
02/09/2005 02:13 PM

To
"'Tony.Adolph@(protected)'" <Tony.Adolph@(protected)>, oracle-l@(protected)
cc

Subject
RE: lock held by in-doubt distributed transaction






Is tracking.tracked_lacosa_request a local table or remote?  If remote did
you check the dba_pending* views on the remote system.  The bug I was
thinking of showed entries in the pending views but your problem does not
so it is likely a different bug.

I checked metalink for the ORA-01591 (See ORA-01591.ora-code.com)error and got around 47 hits.  I
glanced at a few but I did not see a perfect match.  I think you will need
to open an iTAR and get help directly from Oracle.  Please let the board
know how this is resolved.

HTH -- Mark D Powell --

-- --Original Message-- --
From: Tony.Adolph@(protected) [mailto:Tony.Adolph@(protected)]
Sent: Wednesday, February 09, 2005 3:37 AM
To: mark.powell@(protected)
Cc: oracle-l@(protected); oracle-l-bounce@(protected)
Subject: RE: lock held by in-doubt distributed transaction


Hi Mark,

Thanks for the feedback. I tried...

SQL> alter session set "_smu_debug_mode" = 4;

Session altered.

SQL> exec dbms_transaction.purge_lost_db_entry('4.18.4935');
BEGIN dbms_transaction.purge_lost_db_entry('4.18.4935'); END;

*
ERROR at line 1:
ORA-06510 (See ORA-06510.ora-code.com): PL/SQL: unhandled user-defined exception
ORA-06512 (See ORA-06512.ora-code.com): at "SYS.DBMS_TRANSACTION", line 94
ORA-06512 (See ORA-06512.ora-code.com): at line 1

:-(

Tony


"Powell, Mark D" <mark.powell@(protected)>
Sent by: oracle-l-bounce@(protected)
02/08/2005 06:48 PM

Please respond to
mark.powell@(protected)



To
oracle-l@(protected)
cc

Subject
RE: lock held by in-doubt distributed transaction








I believe this is a bug.  The first solution I saw was support telling
people to convert their systems to using regular rollback segments but I
believe that you can issue ' alter session set "_smu_debug_mode" = 4; ' to
get around the problem.  I do not have the bug number so before you alter
your session you may want to check metalink on the hidden parameter.
HTH -- Mark D Powell --


-- --Original Message-- --
From: oracle-l-bounce@(protected)
[mailto:oracle-l-bounce@(protected)]On Behalf Of Tony.Adolph@(protected)
Sent: Tuesday, February 08, 2005 11:55 AM
To: oracle-l@(protected)
Cc: Maxim.Demenko@(protected)
Subject: lock held by in-doubt distributed transaction


Hi folks,
One of our developers has just reported this error after a simple select:

select COUNT(*) FROM tracking.tracked_lacosa_request
                            *
ERROR at line 1:
ORA-01591 (See ORA-01591.ora-code.com): lock held by in-doubt distributed transaction 4.18.4935

So I looked for the in doubt transaction as follows:

select * from dba_2pc_neighbors;

and

select * from dba_2pc_pending;

but both returned no rows.

I tried the same query and also get the same error.  I bounced the
database (immediate) and still get the error and all the time with the
same transaction id 4.18.4935.  I got the developers to bounce their jboss

but no joy.

I tried dbms_transaction.purge_lost_db_entry:

SQL> exec dbms_transaction.purge_lost_db_entry('4.18.4935');
BEGIN dbms_transaction.purge_lost_db_entry('4.18.4935'); END;

*
ERROR at line 1:
ORA-30019 (See ORA-30019.ora-code.com): Illegal rollback Segment operation in Automatic Undo mode
ORA-06512 (See ORA-06512.ora-code.com): at "SYS.DBMS_TRANSACTION", line 65
ORA-06512 (See ORA-06512.ora-code.com): at "SYS.DBMS_TRANSACTION", line 85
ORA-06512 (See ORA-06512.ora-code.com): at line 1

Any ideas folks?

Cheers
Tony

--
http://www.freelists.org/webpage/oracle-l


--
http://www.freelists.org/webpage/oracle-l



--
http://www.freelists.org/webpage/oracle-l