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
directory. You can run it with various commands and options. The following command shows the syntax for the OPatch utility: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 -all option. |
invPtrLoc | Specifies the location of the oraInst.loc file. This option is needed when the invPtrLoc option 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: /opatch query [-all] [-jre (Location)] [-jdk (Location)]\
[-oh (Location)] [patch_location]
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 -retry option with the apply command. |
id | Indicates the patch to be rolled back. Use the -lsinventory command to display all patch identifiers. To successfully roll back a patch, you must supply the patch identifier. |
invPtrLoc | Specifies the location of the oraInst.loc file. This option is needed when the -invPtrLoc option 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 post option. This option is used with the post option. If you do not use this argument, everything after post is passed into post . |
opatch_pre_end | Marks the end of the pre options. This option is used with the pre option. If you do not use this argument, everything after pre is passed into pre . |
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 post script besides the standard parameters. |
pre | Specifies the parameters to be passed inside the pre script 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. |