ORA-02049: TIMEOUT: DISTRIBUTED TRANSACTION WAITING FOR LOCK
Sessions, Wait Events
oerr ora 02049 - The number of seconds specified in the distributed_lock_timeout initialization parameter were exceeded while waiting for a lock or for a begin transaction hash collision to end.
SYMPTOMS
An application reports multiple errors ORA-02049: timeout: distributed transaction waiting for lock in the application's log file.
DEMO
DEMO: ORA-02049: TIMEOUT: DISTRIBUTED TRANSACTION WAITING FOR LOCK
RELATED
HOW TO IDENTIFY BLOCKED AND BLOCKING SESSIONS IN ORACLE DATABASE
HOW TO FIND ALL SESSIONS HOLDING A TABLE LOCK
CAUSE
The error occurs when a local session through a database link attempts to modify a locked row of a table in a remote database. The local session fails with a timeout if it waits longer than a time specified in seconds by distributed_lock_timeout initialization parameter.
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
distributed_lock_timeout integer 60
oracle@dbpilot.net> oerr ora 02049
02049, 00000, "timeout: distributed transaction waiting for lock"
// *Cause: "The number of seconds specified in the distributed_lock_timeout
// initialization parameter were exceeded while waiting for a lock
// or for a begin transaction hash collision to end."
// *Action: Treat this timeout as a deadlock. Roll back the transaction and
// try again.
SOLUTION
1. As a DBA you can increase the distributed_lock_timeout parameter to a high value. It will requre a database bounce after that.
SQL> sho parameter distributed_lock_timeout
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
distributed_lock_timeout integer 60
SQL> alter system set distributed_lock_timeout=600 scope=spfile;
System altered.
SQL> shutdown immediate
SQL> startup
SQL> show parameter distributed_lock_timeout
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
distributed_lock_timeout integer 600
2. As a developer, you can handle the ORA-2049 as a 'try again' exception in your code.
REFERENCES
OERR: ORA-2049 "timeout: distributed transaction waiting for lock" Reference Note (Doc ID 19332.1)
Written At
05 OCT 202019:00
Red Hat Release
7.x x64
Database Release
19.6.0.0.0
Tags In
Share
- Accounts
- Auditing
- AWR
- Bash Scripts
- Datapump
- Default Category
- Demos
- Directory Objects
- Environment Variables
- Initialization Parameters
- Iptables
- Java Program
- Memory Usage
- Metadata API
- Networker
- NLS Settings
- Optimizer Statistics
- ORA-00942
- ORA-01031
- ORA-01720
- ORA-28001
- ORA-31671
- Oracle Database
- Oracle Enterprise Manager
- Performance Tunning
- Postfix
- Privilegies
- Processes
- Queries
- Red Hat Enterprise Linux
- Redo Logs
- Session Tracing
- Sessions
- SQL Trace
- SQLPlus
- Statspack
- Tablespaces
- UTL_FILE
- UTL_FILE_DIR
- Wait Events
- Yum