Oracle E-Business Suite Pre-install Patches Report – Obtaining patches easy way!

This post should be useful for Apps DBAs who are planning to upgrade their customer’s E-Business Suite environments from 11i to R12. As we all know, a long time passed since such projects have started and since then, the Upgrade exercise has improved a lot, mostly because of new patches and tools that Oracle has provided to avoid certain errors and bugs during the Upgrade driver. One of such tools is a Pre-install patches report for R12.1 upgrade which contains a list of essential patches that you must apply in pre-install mode before upgrading. If you haven’t met this report before, do visit a following MoS note – Oracle E-Business Suite Pre-install Patches Report [Video] [ID 1448102.1] and watch the video as well. It is worth to mention that the report is being constantly updated  (approximately once a month) based on Oracle and the customers experience and new patches are being added (if any). As it is stated in the topic – I am going to cover the easy way of downloading the patches listed in the report (please let me know if you have a better way of doing the same).

I came to know this report during another Upgrade project I was working on. If you take a look into the MoS note I’ve mentioned, you would find a strong recommendation from Oracle to apply most of the patches. Furthermore, in the current version of the report, there are 199 patches all together. Quite a big amount isn’t it? While the html report contains patch URL’s and gives us the ability to click on each patch number to download it manually, I would be quite annoying task to go through them one-by-one in order to the get patches in right place. We also know that well-known os tools like wget or curl which serves us to download files directly on server from remote URL’s. In fact, it is also possible to get a wget script from Oracle as well when pressing the “Download” button for any patch using “Wget Options” link (if someone haven’t noticed it yet).

What I was thinking about – is how it is possible to get all those patches on server instantly with no manual work or what would be the fastest way of doing this? I have also found the thread on Oracle forums where someone had asked: “… is there any better way to download multiple patches in a single operation?”. So I decided to share my way of doing this task.

What you will need:

1) wget installed on your server
2) firewall opened to access from you server or exporting you own proxy host if you have the direct access restricted

export http_proxy=
export https_proxy=

3) working MoS credentials 🙂

Get the patch report archive from note [ID 1448102.1] using any preferred way of copying the file on your server and unzip it.

[applmgr@test EBS_PREINST]$ unzip 
   creating: EBS_12.1_Preinstall/
  inflating: EBS_12.1_Preinstall/EBS.html  
  inflating: EBS_12.1_Preinstall/ATG.html  
  inflating: EBS_12.1_Preinstall/PJ.html  
  inflating: EBS_12.1_Preinstall/FIN.html  
  inflating: EBS_12.1_Preinstall/PRC.html  
  inflating: EBS_12.1_Preinstall/BIS.html  
  inflating: EBS_12.1_Preinstall/SCM.html  
  inflating: EBS_12.1_Preinstall/HRMS.html  
  inflating: EBS_12.1_Preinstall/FSA.html  
  inflating: EBS_12.1_Preinstall/CRM.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_EBS.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_ATG.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_PJ.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_FIN.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_PRC.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_BIS.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_SCM.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_HRMS.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_FSA.html  
  inflating: EBS_12.1_Preinstall/SUMMARY_CRM.html  
  inflating: EBS_12.1_Preinstall/env-host-query.js  
  inflating: EBS_12.1_Preinstall/isd.css  
  inflating: EBS_12.1_Preinstall/sorttable_tsfix.js  
  inflating: EBS_12.1_Preinstall/blaf-en-ie.css  
  inflating: EBS_12.1_Preinstall/index.html  
  inflating: EBS_12.1_Preinstall/2.html

Notice the EBS.html file which contains all patch numbers that are available in current report. Let’s filter those numbers out, translate them into real patch archive filenames and place them in separate file using standard Linux command line tools:

cd EBS_12.1_Preinstall
grep patch_number= EBS.html | awk {'print $5'} | cut -f 2 -d "'" | cut -f 1 -d "'" | sed 's/:/_/g' | awk {'print "p" $1 ""'} > patchlist.lst

You should end up with a list of 199 patches similar to this:

[applmgr@test EBS_12.1_Preinstall]$ head -10 patchlist.lst
[applmgr@test EBS_12.1_Preinstall]$ cat patchlist.lst | wc -l 

All the patches in report are GENERIC (suits for all platforms), so we are good to go with such way of translating patch numbers to patch archive names, however there are six exception patches which are available for other platforms as well and also have NLS translations (which in fact should be ignored as per Oracle recommendation, see the same note 1448102.1). So basically, we would need to define the correct platform in file name for these exceptions. In my example, I will use patches for Linux platform. Please note that the example is shown in the lastest patch report version that is available (Jan 11). If you would be using same approach in future versions, don’t forget to check the change log and see if there are some new patches that had been added that might apply for the same exception condition. So let’s switch patch names from GENERIC to LINUX for these 6 exceptions and write them down in new file:

[applmgr@fitest EBS_12.1_Preinstall]$ sed s/ patchlist.lst | \
sed s/ | \
sed s/ | \
sed s/ | \
sed s/ | \
sed s/ > patchlist_last.lst

Now you should end up with full and correct patch list and you are ready to download them. The remaining part is to pass them to a correct wget command. Export your MoS username and password:

export HTTP_USER=<your MoS username>
export HTTP_PASSWORD=<your MoS password>

Now pass them to a wget command together with the patchlist that we’ve just created:

export HTTP_USER=andrejs.karpovs@***.com
export HTTP_PASSWORD=***
while read i ; do wget --http-user=$HTTP_USER --http-password=$HTTP_PASSWORD --no-check-certificate --output-document=$i "$i" ; done < patchlist_last.lst

You should be seeing output similar to this (output is shortened and some parts extracted due to high amount of data):

--2013-02-14 11:22:49--
Connecting to||:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
2013-02-14 11:23:01 (9.91 MB/s) - “” saved [10011/10011]
Saving to: “”

100%[================================================================================>] 28,586       128K/s   in 0.2s    

2013-02-14 11:23:08 (128 KB/s) - “” saved [28586/28586]

Standby and have some coffee for about 10 minutes or less/more depending on your download speed. The wget command should go in a cycle one-by-one and download all 199 patches in one turn.
I have tested the approach multiple times without any issues, do let me know if you face one. In my opinion, this is a quite efficient way of reaching the end result and get all the patches to your server. The same approach might be adopted for other patching needs as well (not only patches from Pre-Install report) but that requires some more analysis and investigation.
Happy downloading and Happy Valentines Day! 🙂


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s