This is a quick tip on properly using symbolic links with Oracle E-Business Suite 12.2 host concurrent programs. How symbolic links are created in Oracle EBS 12.2 is different than previous versions because of the use of a dual file system and online patching.
Linux Symbolic Links
Symbolic links (or symlinks) are used in Linux as a pointer or shortcut to another file or directory. The syntax can be pretty simple.
$ ln -s myfile yourfile
For example, if I wanted to have a shortcut to a file called TheBestPizzaEverList.txt, I could do something like this:
$ ln -s TheBestPizzaEverList.txt PiList.txt
$ ls -l PiList.txt
lrwxrwxrwx 1 alfredo alfredo 24 Jun 1 22:53 PiList.txt -> TheBestPizzaEverList.txt
Now anytime I want to do something with this file, I can use the symbolic link which is much shorter.
Symbolic Links in EBS
In Oracle EBS, a symbolic link is created to reference a host program in a concurrent program. Commonly, this host program is a shell script. This shell script should be named with the extension .prog (e.g. myscript.prog). The shell script is placed in the custom top bin directory (e.g. $XXCUST_TOP/bin).
In versions of Oracle EBS prior to 12.2, the following symbolic link syntax would have been used.
$ ln -s $FND_TOP/bin/fndcpesr $XXCUST_TOP/bin/myscript
Listing the directory would show us the symbolic link that was created.
$ myscript -> /u01/app/applmgr/appl/fnd/12.0.0/bin/fndcpesr
Symbolic Links in EBS 12.2
Oracle EBS 12.2 has a dual file system. The files systems are fs1 and fs2. Either one of these files systems can be designated as the run or patch file system at any time. When performing patching and maintenance activities, we may need to run fs_clone. This is the process that synchronizes the patch file system with the run file system.
If you were to use the commands in the example above, we would be creating the symbolic link with the relative path of the current file system. For example, if the current run file system is fs1 and we created a symbolic link, it would look like this.
myscript -> /u01/app/applmgr/EBS/fs1/EBSapps/appl/fnd/12.0.0/bin/fndcpesr
Why is this an issue? Well the problem is the next time you perform a cutover, the reference to fndcpesr would now be the patch file system. If you were to begin patching and fndcpesr or any of it’s dependencies would be updated, you may find yourself with a broken host program.
The correct way to create a symbolic link in EBS 12.2.x is to use the following syntax.
ln -s ../../../fnd/12.0.0/bin/fndcpesr $XXCUST_TOP/bin/myscript
When listing the directory it would look like this.
myscript -> ../../../fnd/12.0.0/bin/fndcpesr
When using the above syntax, it doesn’t matter which file system is designated as run. It will always be using the current FNDCPESR in the current files system.
In conclusion, by following the proper syntax you will eliminate the chance for any issues with your host concurrent programs in production.