This is basic but very important with respect to working of concurrent requests.
Of late, one of our test instances experienced repeated issue in concurrent processing. Looking into concurrent log, i observed the below error and was clear that there was an issue with APPLPTMP (which was changed before which there wasn’t any issue faced).
ORA-20100: File filename.tmp creation for FND_FILE failed
Often these errors contain additional information appended to the end. For example:
ORA-20100: File l7921858.tmp creation for FND_FILE failed.
You will find more information on the cause of the error in request log. in Package CSI_ITEM_INSTANCE_PVT Procedure UPDATE_ITEM_INSTANCE
From error , It is clear that Concurrent manager is not able to access APPLPTMP Directory.
The error is essentially saying that the file system reported a problem during the write operation to the temporary directory. There can be a number of reasons for this, including:
The reason in our case was : we changed the APPLPTMP in context file to “/tmp/TST” and ran autoconfig but directory “/tmp/TST” didn’t exist physically on DB tier. Although UTL_FILE_DIR contained both old and new values, but it is recommended to have $APPLPTMP as first entry in UTL_FILE_DIR list of values.
Now, What is APPLPTMP and its Significance ? “APPLPTMP is a special directory used only for PLSQL temporary files. When a concurrent program uses the FND_FILE package, the concurrent manager uses APPLPTMP as the directory to which it writes temporary files. FND_FILE uses the UTL_FILE package, which can only write to directories specified in init.ora. Thus, APPLPTMP must be one of the directories listed in init.ora in order for FND_FILE to work.
The following steps provide general setup verifications for the temporary directory ::
Verify the temporary directory setup
a) Check the UTL_FILE_DIR settings of your system:
SELECT value FROM v$parameter WHERE name = ‘utl_file_dir’;
The first directory path defined in this parameter should be the temporary directory e.g. /tmp/TST
b) Ensure this directory physically exists and is not full
c) Verify that this directory has write permissions for the application user (applmgr) – change directory file permission to 777
e.g. chmod 777 /tmp/TST
d) Check the APPLPTMP variable value is the same as the first directory path defined in UTL_FILE_DIR
e.g. echo $APPLPTMP
How is APPLTMP different from APPLPTMP ?
APPLTMP does not need a utl_file_dir entry. It is a pointer to the the temporary directory used by the application, and is not referenced by the database. It is generally recommended that the location be the same simply to avoid any confusion that might be caused by multiple temporary file locations, but this is not a requirement, and you may certainly use different and non-shared locations for each host if you wish.
i.e you can have APPLTMP=’/tmp/TST’ (Apps Node) or ‘$INST_TOP/appltmp’ with Full permission.
Autoconfig establishes the “default” value for %s_applptmp% variable to be /tmp/TST”when osd=”UNIX”.
For %s_appltmp% however, the default value is = %s_temp%”…which is defined at context file creation….Usually, this defaults to $INST_TOP/temp.
Stand Alone R12 environments (with no modification to standard paths) define s_applptmp=/tmp/TST and s_appltmp=$INST_TOP/temp.
For more details on troubleshooting such a scenario , look into the below note:
Concurrent Processing – Troubleshooting Concurrent Request ORA-20100 errors in the request logs [ID 261693.1]