OPatch is the Oracle database's Interim (one-off) Patch Installer.
If OPatch is not installed into your Oracle Home ($ORACLE_HOME/OPatch), you may need to download it from Metalink and install it yourself.
OPatch Utility Basic Syntax
The OPatch utility is located in the/OPatch In the preceding command, the following variables are used:/opatch [-options] 
- 
command: The OPatch command, described in Table 1–1:
 
- 
options: The command-line arguments for the command, which are described in the following sections.
 
| Command | Description | 
|---|---|
| apply | Installs an interim patch. | 
| napply | Installs n number of patches (hence napply). | 
| auto | Applies Oracle Clusterware patches. | 
| lsinventory | Lists what is currently installed on the system. | 
| query | Queries a given patch for specific details. | 
| rollback | Removes an interim patch. | 
| version | Prints the current version of the patch tool. | 
<Path_to_OPatch>/opatch command -helpIf using Perl, use the following command:
perl opatch.pl command -help
$ cd $ORACLE_HOME/OPatch
$ opatch -help
Invoking OPatch 10.2.0.4.2
Oracle Interim Patch Installer version 10.2.0.4.2
Copyright (c) 2007, Oracle Corporation.  All rights reserved.
 Usage: opatch [ -help ] [ -r[eport] ] [ command ]
            command := auto
                       apply
                       lsinventory
                       napply
                       nrollback
                       rollback
                       query
                       version
                       prereq
                       util
      -help       Displays the help message for the command.
                 -report     Print the actions without executing.
 example:
   'opatch -help'
   'opatch auto -help'
   'opatch apply -help'
   'opatch lsinventory -help'
   'opatch napply -help'
   'opatch nrollback -help'
   'opatch rollback -help'
   'opatch prereq -help'
   'opatch util -help'
 
OPatch succeeded.
 
napply Command
This command applies interim patches to several Oracle homes at the same time.
Syntax
Use the following syntax for this command: opatch napply [patch_location] [-id comma-separated list of patch IDs] -delay ] [ -force ][-invPtrLoc ][-jdk ] [-jre ] [ -local ] [-minimize_downtime ] [-no_bug_superset ] -no_inventory ] [-oh ] [-retry ] [-silent ][-verbose ] [-no_relink][-pre [-opatch_pre_end] ][-post [-opatch_post_end] ][-no_sysmod][ -property_file ][ -local_node ][ -remote_nodes ][ -all_nodes ][ -phBaseFile ][-skip_subset] [-skip_duplicate] [-report] Examples •The following example applies all patches under the directory:
opatch napply •The following example applies patches 1, 2, and 3 that are under the directory:
opatch napply -id 1,2,3
auto Command
Ordinarily, a Clusterware patch requires several manual steps before and after you apply the patch, such as:- 
Stopping all dependent databases
 
- 
Stopping Clusterware resources
 
- 
Running pre-patch scripts
 
- 
Shutting down Clusterware
 
- 
Running post-patch scripts
 
- 
Starting Clusterware and dependent databases
 
Use the following syntax for this command:
Table 4–4 lists the options available for this command.
| Option | Description | 
|---|---|
| rollback | Rolls back the patch rather than applying it. | 
| oh | Comma-separated Oracle homes to patch. The default is all applicable Oracle homes. Use this option to patch RDBMS homes where no database is registered. | 
| och | Path of the Oracle Clusterware home. Use this option to patch only Oracle Clusterware homes where Oracle Clusterware has been stopped already. Do not use this option for Oracle Clusterware with a CRS stack that is up. | 
- 
The following example applies a patch with an unzipped patch location to all applicable Oracle homes on the system:
 opatch auto <patch_location>
- 
The following example rolls back the patch from all the applicable Oracle homes on the system:
 opatch auto -rollback <patch_location>
- 
The following example patches a selective list of Oracle homes:
 opatch auto <patch_location> -oh /tmp/oh1,/tmp/oh2,/tmp/oh3
- 
The following example only patches the CRS home when the Oracle Clusterware stack is down.
 opatch auto <patch_location> -och /tmp/ora_crs_home
lsinventory Command
Thelsinventory command reports what has been installed 
on the system for a particular Oracle home directory, or for all 
installations. The following syntax is used for this command:<Path_to_OPatch>/opatch lsinventory [-all] [-bugs_fixed asc|desc] [-delay (value)] [-detail] [-invPrtLoc (path)] \ 
[-jre (location)] [-patch asc|desc] [-oh (Oracle Home location)] [-retry (value)]
Table 4–5 describes the options available for the lsinventory command.| Option | Description | 
|---|---|
| all | Reports the name and installation directory for each Oracle home directory found. | 
| bugs_fixed | Reports bugs fixed by installed patches in a tabular format. Besides 
the bugs fixed, the report also displays the installed patches, 
installed times, and bug descriptions. The fixed bugs are sorted per 
installed patch. The default display is patches in descending order 
based on installed time and ascending order of bugs within each patch. 
You can use 'asc' or 'desc' with this option to enforce sort order on 
bugs within each patch. You can use this option with the patch or patch_id option to obtain sort orders with installed patches. | 
| delay | Specifies how many seconds to wait before attempting to lock the inventory in the case of a previous failure. You can use this option only if the -retry option is specified. | 
| detail | Reports the installed products and other details. You cannot use this option with the -alloption. | 
| invPtrLoc | Specifies the location of the oraInst.locfile. This option is needed when theinvPtrLocoption was used during installation. Oracle recommends using the default Central Inventory for a platform. | 
| jre | Specifies the location of a particular JRE (Java) to use instead of the default location under the Oracle home directory. | 
| oh | Specifies the Oracle home directory to use instead of the default directory. | 
| patch | Lists the patch IDs installed in the Oracle home in ascending (asc) or descending (desc) order, which is the default, based on installed time. | 
| retry | Specifies how many times the OPatch utility should try when there is an inventory lock failure. | 
opatch lsinventory -detail:Oracle interim Patch Installer version 10.2.0.4.6 Copyright (c) 2009, Oracle Corporation. All rights reserved.. Oracle Home : /home/oracle_TEST/product/10.2.0/db_1 Central Inventory : /home/OUIHome_Opatch from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.4.6 OUI version : 10.2.0.4.6 OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui Log file location : /home/oracle_ TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log Patch history file: /scratch/userid/newDB/cfgtoollogs/opatch/opatch_history.txt Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_ 1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt -------------------------------------------------------------------------------- Installed Top-level Products (1): Oracle Database 10g 10.2.0.4.6 There are 1 products installed in this Oracle Home. Installed Products (10): Agent Required Support Files 10.2.0.4.6 Assistant Common Files 10.2.0.4.6 Bali Share 1.1.18.0.0 Buildtools Common Files 10.2.0.4.6 Character Set Migration Utility 10.2.0.4.6 Database Configuration and Upgrade Assistants 10.2.0.4.6 Database SQL Scripts 10.2.0.4.6 Database Workspace Manager 10.2.0.4.6 DBJAVA Required Support Files 10.2.0.4.6 Enterprise Edition Options 10.2.0.4.6 There are 10 products installed in this Oracle Home. Intermin patches (1) : Patch 111000 : applied on Mon May 23 19:44:08 IST 2008 Created on 27 Jul 2007, 05:43:46 hrs PST8PDT Bugs fixed: 111000 Files Touched: /qmtest.o --> ORACLE_HOME/lib/libserver11.a libmapsym.so --> ORACLE_HOME/lib/libmapsym.so ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/ioracle /oracle/xml/jaxb/orajaxb.class --> ORACLE_HOME/lib/xml.jar Patch Location in Inventory: /home/oracle_TEST/product/10.2.0/db_1/inventory/oneoffs/111000 Patch Location in Storage area: /home/oracle_TEST/product/10.2.0/db_1/.patch_storage/111000_Jul_27_2007_05_43_46 -------------------------------------------------------------------------------- OPatch succeeded.The following example shows the output of
opatch lsinventory -bugs_fixed asc:Oracle interim Patch Installer version 10.2.0.4.6
Copyright (c) 2009, Oracle Corporation.  All rights reserved..
Oracle Home       : /home/oracle_TEST/product/10.2.0/db_1
Central Inventory : /home/OUIHome_Opatch
   from           : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc
OPatch version    : 10.2.0.4.6
OUI version       : 10.2.0.4.6
OUI location      : /home/oracle_TEST/product/10.2.0/db_1/oui
Log file location : /home/oracle_
TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log
Patch history file: /scratch/userid/newDB/cfgtoollogs/opatch/opatch_history.txt
Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_
1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt
 --------------------------------------------------------------------------------
Installed Top-level Products (2):
 
Oracle Database 10g                                                  10.2.0.4.6
Oracle Database 10g Release 2 Patch Set 2                            10.2.0.4.6
There are 2 products installed in this Oracle Home.
 
 
List of Bugs fixed by Installed Patches:
 
Bug        Fixed by          Installed at                   Description
           Patch
---        --------          ------------                   -----------
 
1000000    6079591   Mon Oct 13 02:03:42 PDT 2008   test bug
6079591    6079591   Mon Oct 13 02:03:42 PDT 2008   MLR BUG FOR 10.2.0:.3 FOR CPU:JUL2:007
300500     300500    Fri Sep 05 02:25:34 PDT 2008   Demo bug for patching files
300501     300500    Fri Sep 05 02:25:34 PDT 2008   Demo bug for patching files
300502     300500    Fri Sep 05 02:25:34 PDT 2008   Demo bug for patching files
6121268    6121268   Tue Aug 19 23:32:33 PDT 2008   DB-10.2.0.3-MOLECULE-007-CPUJUL2007
6121266    6121266   Tue Aug 19 23:32:27 PDT 2008   DB-10.2.0.3-MOLECULE-018-CPUJUL2007
6121264    6121264   Tue Aug 19 23:32:22 PDT 2008   DB-10.2.0.3-MOLECULE-017-CPUJUL2007
6121263    6121263   Tue Aug 19 23:32:14 PDT 2008   DB-10.2.0.3-MOLECULE-016-CPUJUL2007
.....
.....
(Middle section of report is intentionally excluded.)
.....
.....
6121248    6650096   Tue Feb 12 05:50:48 PST 2008   DB-10.2.0.3-MOLECULE-015-CPUJUL2007
6650096    6650096   Tue Feb 12 05:50:48 PST 2008   DB-10.2.0.3-MOLECULE-036-CPUJAN2008
6121247    6650095   Tue Feb 12 05:50:41 PST 2008   DB-10.2.0.3-MOLECULE-006-CPUAPR2007
6397946    6650095   Tue Feb 12 05:50:41 PST 2008   DB-10.2.0.3-MOLECULE-031-CPUOCT2007
6650095    6650095   Tue Feb 12 05:50:41 PST 2008   DB-10.2.0.3-MOLECULE-035-CPUJAN2008
6650081    6650081   Tue Feb 12 05:50:35 PST 2008   DB-10.2.0.3-MOLECULE-034-CPUJAN2008
6646853    6646853   Tue Feb 12 05:50:28 PST 2008   MLR BUG FOR 10.2.0.3 FOR CPUJAN2008
6452863    6452863   Tue Feb 12 05:50:12 PST 2008   TRACKING BUG FOR CPUJUL2007
 --------------------------------------------------------------------------------
 OPatch succeeded.
The following example shows the output of opatch lsinventory -patch desc:Oracle interim Patch Installer version 10.2.0.4.6
Copyright (c) 2009, Oracle Corporation.  All rights reserved..
Oracle Home       : /home/oracle_TEST/product/10.2.0/db_1
Central Inventory : /home/OUIHome_Opatch
   from           : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc
OPatch version    : 10.2.0.4.6
OUI version       : 10.2.0.4.6
OUI location      : /home/oracle_TEST/product/10.2.0/db_1/oui
Log file location : /home/oracle_
TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log
Patch history file: /scratch/userid/newDB/cfgtoollogs/opatch/opatch_history.txt
Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_
1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt
 --------------------------------------------------------------------------------
Interim patches (39) :
Patch  6079591      : applied on Mon Oct 13 02:03:42 PDT 2008
   Created on 21 Jun 2007, 03:42:18 hrs PST8PDT
   Bugs fixed:
     6079591, 1000000
 
Patch  300500       : applied on Fri Sep 05 02:25:34 PDT 2008
   Created on 07 Nov 2005, 04:57:14 hrs US/Eastern
   Bugs fixed:
     300500, 300501, 300502
 --------------------------------------------------------------------------------
 OPatch succeeded.
The following example shows the output of opatch lsinventory -detail:Oracle interim Patch Installer version 10.2.0.4.6 Copyright (c) 2009, Oracle Corporation. All rights reserved.. Oracle Home : /home/oracle_TEST/product/10.2.0/db_1 Central Inventory : /home/OUIHome_Opatch from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.4.6 OUI version : 10.2.0.4.6 OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui Log file location : /home/oracle_ TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_ 1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt -------------------------------------------------------------------------------- Installed Top-level Products (1): Oracle Database 10g 10.2.0.4.6 There are 1 products installed in this Oracle Home. Installed Products (10): Agent Required Support Files 10.2.0.4.6 Assistant Common Files 10.2.0.4.6 Bali Share 1.1.18.0.0 Buildtools Common Files 10.2.0.4.6 Character Set Migration Utility 10.2.0.4.6 Database Configuration and Upgrade Assistants 10.2.0.4.6 Database SQL Scripts 10.2.0.4.6 Database Workspace Manager 10.2.0.4.6 DBJAVA Required Support Files 10.2.0.4.6 Enterprise Edition Options 10.2.0.4.6 There are 10 products installed in this Oracle Home. Intermin patches (1) : Patch 102000 : applied on Mon May 23 19:44:08 IST 2008 Created on 27 Jul 2007, 05:43:46 hrs PST8PDT Bugs fixed: 102000 Files Touched: /qmtest.o --> ORACLE_HOME/lib/libserver10.a libmapsym.so --> ORACLE_HOME/lib/libmapsym.so ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/ioracle /oracle/xml/jaxb/orajaxb.class --> ORACLE_HOME/lib/xml.jar Patch Location in Inventory: /home/oracle_TEST/product/10.2.0/db_1/inventory/oneoffs/102000 Patch Location in Storage area: /home/oracle_TEST/product/10.2.0/db_1/.patch_storage/102000_Jul_27_2007_05_43_46 -------------------------------------------------------------------------------- OPatch succeeded.
query Command
Thequery command queries a specific patch for specific 
details. It provides information about the patch and the system being 
patched. The following syntax is used for this command:| Option | Description | 
|---|---|
| all | Retrieves all information about a patch. This is equivalent to setting all options. | 
| jdk | Specifies the location of a particular JDK (jar) to use instead of the default location under the Oracle home directory. You cannot use the -jdk and -jre options together. | 
| jre | Specifies the location of a particular JRE (Java) to use instead of the default location under the Oracle home directory. You cannot the use -jdk and -jre options together. | 
| oh | Specifies the Oracle home directory to use instead of the default directory. | 
rollback Command
Therollback command removes a specific interim patch 
from the appropriate Oracle home directory. The following syntax is used
 for this command:/opatch rollback -id (patch_id) [-ph (patch directory)] \ [-delay] (value) [-invPtrLoc (path)] [-jdk (location)] [-jre (location)]\ [-local] [-oh (Oracle Home location)] \ [-post (options to be passed into post) [-opatch_post_end]] \ [-pre (options to be passed into pre) [-opatch_pre_end]] [-retry (value)] \ [-silent] [-verbose] [-no_relink] [-no_sysmod][-remote_nodes (node1,node2)][-local_node (node_name)] 
rollback Command Options
| Option | Description | 
|---|---|
| delay | Specifies how many seconds the OPatch utility should wait before attempting to lock the inventory again, if you use the -retryoption with theapplycommand. | 
| id | Indicates the patch to be rolled back. Use the -lsinventorycommand to display all patch identifiers. To successfully roll back a patch, you must supply the patch identifier. | 
| invPtrLoc | Specifies the location of the oraInst.locfile. This option is needed when the-invPtrLocoption is used during installation. Oracle recommends using the default Central Inventory for a platform. | 
| jdk | Specifies the location of a particular JDK (jar) to use instead of the default location under the Oracle home directory. | 
| jre | Specifies the location of a particular JRE (Java) to use instead of the default location under the Oracle home directory. | 
| local | Specifies that the OPatch utility should roll back and update the 
local node and update the inventory of the local node. It does not 
propagate the patch or inventory update to other nodes. You can use this option on Oracle Real Application Clusters environments and non-clustered environments. If you shut down an entire cluster before patching, you can use this argument for non-rolling patches. | 
| local_node | Specifies to the OPatch utility that this is the local node for the cluster. You can use this option on Oracle Real Application Clusters environments. | 
| no_sysmod | Specifies that the OPatch utility need not update the files in the system. It will only update the inventory. | 
| no_relink | This option does not perform any make operation in the patch. You can use it during multiple patch removals and to perform the compilation step only once. | 
| oh | Specifies the Oracle home directory to use instead of the default directory. | 
| opatch_post_end | Marks the end of the postoption. This option is used with thepostoption. If you do not use this argument, everything afterpostis passed intopost. | 
| opatch_pre_end | Marks the end of the preoptions. This option is used with thepreoption. If you do not use this argument, everything afterpreis passed intopre. | 
| ph | Specifies the valid patch directory area. The utility uses the command types found in the patch directory to identify which commands are used for the current operating system. | 
| post | Specifies the parameters to be passed inside the postscript besides the standard parameters. | 
| pre | Specifies the parameters to be passed inside the prescript besides the standard parameters. | 
| remote_nodes | Specifies to the OPatch utility the list of remote nodes. You can use this option on Oracle Real Application Clusters environments. | 
| report | Prints the action to the screen without executing it. | 
| retry | Specifies how many times the OPatch utility should try in case of an inventory lock failure. | 
| silent | Suppresses user interaction and defaults any answers to "yes". The Oracle Real Application Clusters setup does not support this option. | 
| verbose | Prints output to the screen as well as to the log file. | 
