Fixing txkCfgUtlfileDir.pl Error in getUtlFileDir Mode After Restoring Oracle EBS 19c Database
Recently, after restoring an Oracle E-Business Suite database backup on Oracle Database 19c, I faced an issue while executing the txkCfgUtlfileDir.pl utility in getUtlFileDir mode.
This script is normally used in EBS 19c environments to fetch or manage the UTL_FILE_DIR configuration during database upgrade, clone, or restore-related activities. However, in my case, the script failed with an error indicating invalid APPS credentials, even though the APPS password was correct.
After troubleshooting, the issue was not related to the APPS password. The actual problem was with the database listener registration due to an incorrect local_listener parameter.
Environment Details
In this case, the activity was being performed on an Oracle EBS 19c database tier after restoring the database backup.
Example environment details:
Database Version : Oracle Database 19c
Application : Oracle E-Business Suite
Activity : Database restore / post-restore configuration
Utility : txkCfgUtlfileDir.pl
Mode : getUtlFileDir
Issue Description
After sourcing the database environment file, I executed the txkCfgUtlfileDir.pl script from the $ORACLE_HOME/appsutil/bin directory.
su – oraprod
. /u02/proddb/db/19.0.0/PROD_ebsdb.env
cd /u02/proddb/db/19.0.0/appsutil/bin
Then I executed the script:
perl txkCfgUtlfileDir.pl
-contextfile=/u02/proddb/db/19.0.0/appsutil/PROD_ebsdb.xml
-oraclehome=/u02/proddb/db/19.0.0
-outdir=/u02/proddb/db/19.0.0/appsutil/log
-mode=getUtlFileDir
The script prompted for the APPS password, but after providing the correct password, it failed with the following error:
ERROR DESCRIPTION:
(FATAL ERROR
PROGRAM : (txkCfgUtlfileDir.pl)
FUNCTION: main::validateAppsSchemaCredentials [ Level 1 ]
ERRORMSG: Invalid APPS database user credentials.
)
ERRORCODE = 1
At first glance, the error looked like an APPS schema password issue. However, the password was correct, so I started checking database connectivity and listener registration.
Listener Status Check
I checked the database listener status:
lsnrctl status PRECDB
The listener supports no services
Although the listener process was running, the database service was not registered with the listener. Because of this, the EBS utility could not properly validate the APPS schema credentials through the expected database service.
Oracle Database 19c uses the LOCAL_LISTENER parameter for local listener service registration, and the LREG process registers database services with the configured listener. Oracle documentation also notes that service registration is controlled through LOCAL_LISTENER and REMOTE_LISTENER, and ALTER SYSTEM REGISTER can be used to force immediate registration.
Additional Check
I also tried starting the database listener using the EBS script:
cd /u02/proddb/db/19.0.0/appsutil/scripts/PROD_ebsdb/
./adcdblnctl.sh start PRECDB
The listener was already started, but the script kept waiting for the database service:
Listener PRECDB has already been started.
Waiting for service PROD to be available…
Waiting for service PROD to be available…
Waiting for service PROD to be available…
This confirmed that the listener was running, but the database service was not registered.
Root Cause
The root cause was an incorrect local_listener database parameter.
Because local_listener was not pointing to the correct hostname and database listener port, the database was unable to register its service with the listener.
As a result:
lsnrctl status PRECDB
The listener supports no services
Due to missing service registration, the txkCfgUtlfileDir.pl utility failed during APPS credential validation.
Solution
Connect to the database as SYSDBA:
sqlplus / as sysdba
show parameter local_listener;
Set the correct local_listener value using the database hostname and listener port:
alter system set local_listener=’ebsprod.com:1526′ scope=both;
alter system register;
Now re-check the listener status:
lsnrctl status PRECDB
This time, the database service should be visible under the listener services section.
Re-run the Failed Utility
After correcting the local_listener parameter and confirming that the database service was registered with the listener, I re-ran the same command:
cd /u02/proddb/db/19.0.0/appsutil/bin
perl txkCfgUtlfileDir.pl
-contextfile=/u02/proddb/db/19.0.0/appsutil/PROD_ebsdb.xml
-oraclehome=/u02/proddb/db/19.0.0
-outdir=/u02/proddb/db/19.0.0/appsutil/log
-mode=getUtlFileDir
This time, the script completed successfully.
Final Fix Summary
show parameter local_listener;
alter system set local_listener=’hostname.domain:dbport’ scope=both;
alter system register;
Then validate:
lsnrctl status <listener_name>
Once the database service is properly registered, re-run:
perl txkCfgUtlfileDir.pl -mode=getUtlFileDir
Oracle Solutions We believe in delivering tangible results for our customers in a cost-effective manner