Pages

Tuesday, June 16, 2026

Unexpected Error: ORA-02054: transaction 94.44.4071354 in-doubt

Scenario
A transaction on a local and on a remote database fails at commit
The error:
Unexpected Error: ORA-02054: transaction 94.44.4071354 in-doubt

To see real error, check alert.log on the remote server.
The actual error is not propagated to the local server
Error 2091 trapped in 2PC on transaction 94.44.4071354. Cleaning up.
Error stack returned to user:
ORA-02054: transaction 94.44.4071354 in-doubt
ORA-02091: transaction rolled back
ORA-00001: unique constraint (USER_A.TABLE_A_UK) violated
ORA-02063: preceding 2 lines from REMOTE_DB

Sunday, June 7, 2026

Oracle Obsolete Parameters

ORA_NLS32 vs ORA_NLS33 vs ORA_NLS10
ORA_NLS33 and ORA_NLS10 are Oracle environment variables used to locate National Language Support (NLS) files, which dictate how the database handles locales, character sets, and linguistic sorting.

ORA_NLS32
Used for Oracle versions 7.3.x.

ORA_NLS33
Was used for Oracle versions Oracle 8, 8i, and 9i.
It typically points to $ORACLE_HOME/ocommon/nls/admin/data directory

ORA_NLS10
Used for Oracle 10g and later. 
It typically points to $ORACLE_HOME/nls/data directory

Deprecation
In Oracle 10g and newer, Oracle embeds the NLS path automatically. 
Setting ORA_NLS or ORA_NLS33 is often unnecessary unless you are running legacy 9i applications on a newer client.

If an older client is required to connect to a newer database, you can sometimes set ORA_NLS10 to point to older 9i data files 
to preserve backward-compatible definitions

ORACLE_LPPROG and ORACLE_LPARGS
These are legacy Oracle environment variable used on UNIX and Linux operating systems to specify the name or path of the system's line printer spooler utility (LPR).

ORACLE_LPPROG
Defines the command executable itself. 
By default, Oracle assumes standard UNIX printing utilities like lp or lpr.

ORACLE_LPARGS
Acts as its companion variable, used to define the command-line arguments or flags passed to that printer program.

ORA-07222
If Oracle tries to print directly from an application and fails due to misconfigured variables, 
it will return the operating system-specific error ORA-07222: slspool: line printer spooler command exited with an error. 
To resolve that error, one would need to set ORACLE_LPPROG and ORACLE_LPARG properly.

Modern Enterprise
In Modern Enterprise reporting and printing are now handled via middle-tier application servers 
rather than spawning command-line lpr processes straight out of the database instance or local terminal profile.
Making these variables obsolete.


ORACLE_TERM
ORACLE_TERM is a legacy Oracle environment variable used to define the terminal type for character-mode Oracle tools, 
such as SQL*Plus, Oracle Forms , and Oracle Menu.
It is obsolete as of Oracle 10g.
It tells Oracle how to interpret keystrokes and map functional keyboard shortcuts inside a text-based, terminal-oriented interface.
Key Mapping: It points Oracle to a specific keyboard definition file (a .res or resource file).
Display Layout: It ensures that text-based boxes, lines, and colors render correctly in a command-line terminal window.
Compatibility: It translates hardware terminal signals (like an old VT100 physical terminal or an xterm window) into commands Oracle utilities understand.

ORACLE_TERM vs TERM
The TERM OS variable tells the Linux/UNIX shell how to draw the terminal screen.
ORACLE_TERM tells the Oracle application how to translate your keyboard inputs into database utility commands.