					OPATCH FAQ
			Copyright (c) Oracle Corporation 2006

General Questions:

Q1.	What are some of the new functionalities in OPatch?

	First of all, you can turn on debug by "setenv OPATCH_DEBUG TRUE"
	Unix, C-shell) or "set OPATCH_DEBUG=TRUE" (Windows).  This will
	print out more debug messages.  Do not turn this on RAC system.

	a) 'opatch query -all' will allow you to query detailed information 
         about a patch.

	b) -jre and -jdk options allow you to use specified executable java and 
         jar instead of the ones from Oracle Home. 

	c) 'opatch lsinventory' will list all patches with the applied date 
         chronologically.

	d) 'opatch lsinventory -detail' will list all patches and which files 
         were modified while 'opatch lsinventory -all -detail' will show
         all Oracle Homes with their Interim patches.

	Log files of 'opatch inventory' are saved in ORACLE_HOME/.patch_storage
	Log files of apply/roll-back are saved in 
	ORACLE_HOME/.patch_storage/<patch>

	Below is the output of 'lsinventory -all -detail'

                ORACLE_HOME      LOCATION
                -----------      --------
		Home1			/private/phi_local/OraHome1
            	There is no Interim Patch
		Home2			/private/phi_local/OraHome2
      		There is no Interim Patch
		Home3			/private/phi_local/OraHome6

  		  Installed Patch List:
  		  =====================
  		 1) Patch 20 applied on Mon Aug 11 15:53:51 PDT 2003
      		    [ Base Bug(s): 21  ]
  		 2) Patch 80 applied on Fri Aug 01 16:15:52 PDT 2003
      		    [ Base Bug(s): 80 81  ]

	Below is the output of 'lsinventory -detail':

  	Installed Patch List:
  	=====================
  	1) Patch 1 applied on Wed Jul 23 12:50:33 PDT 2003
      	[ Base Bug(s): 1  ]
      	/private/phi_local/OraHome2/lib/NewClass.class -->  OH/lib
      	/private/phi_local/OraHome2/lib/xsu111.jar -->  OH/lib
      	oracle/xml/sql/Foo.class --> 							
		/private/phi_local/OraHome2/lib/xsu12.jar
		oracle/xml/sql/XSUMesg.class --> 
		/private/phi_local/OraHome2/lib/xsu12.jar
      	oracle/xml/sql/Foo.class --> /private/phi_local/OraHome2/lib/xxx.jar

	
	It shows that:
		Patch 1 was applied on July 23, 2003 at 12:50
		NewClass.class was copied to OH/lib
		xsu111.jar was copied to OH/lib
		Foo.class was updated to xsu12.jar
		XSUMesg.class was updated to xsu12.jar
		Foo.class was also updated to xxx.jar

        + LsInventory also shows you info. about RAC if OPatch detects.   

        + By default, LsInventory will no longer show list of installed 
          components.  To show installed components, use -detail option.


	e) You don't need an Oracle Home to use OPatch for patching files.

	f) 'opatch lsinventory' now generates a log file under 
         $ORACLE_HOME/.patch_storage.

	g) OPatch saves Apply & RollBack log files in 
         $ORACLE_HOME/.patch_storage using time stamp down to
         'hour-minute-second' level.  In other words, users will not
         lose any log file even if they run OPatch repeatedly in a
         short period of time.

	h) OPatch allows you to patch any destination -- not just an "Oracle Home"

	i) OPatch allows you to patch an Oracle Home where some of the files 
	are missing.  


Q2.	What does:
	" Exception in thread "main" java.lang.UnsatisfiedLinkError:
	no oraInstaller in java.library.path" mean?

	This is a unix specific issue.

	The most frequent reason for this is the liboraInstaller shared
	object file cannot be located at run time. The extension is
	".so" for most systems, ".sl" for most other systems. It means
	LD_LIBRARY_PATH (or SHLIB_PATH, LIBPATH, DYLD_LIBRARY_PATH or
	it's equivalent) doesn't include a path to liboraInstaller file.

	The file is located under the "oui" hierarchy (normally under
	oui/bin/<plaform name>, like oui/bin/solaris). The "oui" directory
	should be in the same directory as the oraInventory directory that 
	is pointed to by the oraInst.loc file.  


Q3.	Where does OPatch officially reside?

	Opatch will always reside in ORACLE_HOME/OPatch. It is also 
	recommended to place it there.
	

Q4.	When applying a patch what does it mean when I get the message
	"Not a valid patch area." and what can I do about it?

	This simply means the directory OPatch is using to find the
	patch doesn't match the template for what it's checking for.
	Normally your running OPatch on directory out from where you
	think you are.

	When starting OPatch the directory needs to have:

	a. a directory .../etc that has the files that drive OPatch,
	b. a directory .../files that has patches for the files, and
	c. the directory should have the same name as patch id.

	The third point can be confirmed by the file:
		.../<patch_id>/etc/config/inventory
	which is an XML file. The second line of the file has the
	XML tag "reference_id number" and this number is the patch_id.

	If you didn't start OPatch from the directory <patch_id> then
	you can tell OPatch where to look for this directory by giving
	the directory as the last argument to "apply", i.e.

	opatch apply /tmp/<patch_id>

	Another cause is your patch directory is not a number.  Some
	patches p.zip, when being unzipped, creates directory p1234.
	You probably need to remove the prefix 'p' and have only
	number for the directory (this is the patch id).  Make sure
	that the number is the same as the number listed in the file
	1234/etc/config/inventory as 'reference_id number="1234"'


Q5.	When applying a patch I got the following error: 
	"The errors encounted were:
        Couldn't create file for the make commands. 
	Error is: Permission denied"

	This means you do not have write permission to the patch
	area itself.


Q6.	When applying a patch I got the following error:
	"Exception in thread "main" java.lang.NoClassDefFoundError: O2O"

	This means OPatch can not find the O2O.class which is supposed
	to be located under .../jlib.  Check if you have the O2O.class
	file there.  Another reason is you might have ftp'ed OPatch
	*not* using binary mode.


Q7.	When applying a patch I got the following error:
	"sh: ar: not found"

	This means that the patch involves archiving a file, and OPatch
	can not find the executable "ar" in your PATH.  Reset your PATH
	and try OPatch again.

  
Q8.	When applying a patch I got the following error:
	"OPatch can't find command 'fuser'"

	OPatch uses 'fuser' on Unix to check for active Oracle instances.
	On certain HP-UX, only super-user can run 'fuser'. 

	There are 2 ways to work around this problem: 
	1) Set /tmp first on your PATH.  Create a script 'fuser' which
	does nothing.  Make sure you shut down Oracle instances.  Then
	run OPatch.
	2) Be super-user and give executable permission to 'fuser' to
	other users.  Please be advised that this work-around exposes
	potential security hole in your system.  Use at your own risk. 

	HP has been notified about the problem that 'fuser' is not
	executable.  HP has released patches to change 'fuser'
	settings in for both HP-UX 11.0 and 11.11:
		PHCO_29348  s700_800 11.00 fuser(1M) cumulative patch
		PHCO_29349  s700_800 11.11 fuser(1M) cumulative patch 
	Please apply the above patch to your HP machines before proceeding.


Q9.	-oh option does not seem to work

	This option informs OPatch about the location of ORACLE_HOME.
	Generally, OPatch uses the environment variable ORACLE_HOME, if you
	want to override that value or want to use different ORACLE_HOME, 
	you can use this option. If this option doesn't work, then try setting
	the environment variable instead and use it.

 
Q10.	-report option does not seem to work

	-report option is not implemented yet.


Q11.	Where can I find info. about patch 123 that I applied last year?

	Look at the file $ORACLE_HOME/.patch_storage/<patch>/inventory.
	It has info. about the patch such as bugs fixed and bugs descr.
	You can also use 'opatch lsinventory -detail' to see which files
	had been modified by the patch.


Q12.	I just want to run 'opatch version' and 'opatch help', but
	OPatch keeps prompting for ORACLE_HOME as follow:
	"Please enter the location for ORACLE_HOME"

	If you just want to get opatch version and help text, you
	can set ORACLE_HOME to any directory.  For example,
	"setenv ORACLE_HOME /tmp" would be good.   


Q13.	Why do I get the message:
	" Exception in thread "main" java.lang.NullPointerException
	  at XXX.main..."
	
	Make sure that if your ORACLE_HOME was installed with -invPtrLoc, 
	then you have to supply -invPtrLoc when invoking Opatch.


Q14.	How do I find out what values for ORACLE_HOME are valid?

	Use the command "lsinventory -all" to get a list of all recorded
	ORACLE_HOME entries.


Q15.	How can I to minimize the downtime when applying a patch to my RAC?

	The short answer is to use the "-minimize_downtime" flag to the 
	"apply" command and follow the prompts.


Q16.	How does the "-minimize_downtime" flag work?

	The local node is always patched first. This is used as a base to
	to patch the other nodes. The user is prompted for the list of
	nodes to patch first out of the remaining nodes. For each node in
	this first list the user is asked to stop the instance and then
	the patch is propagated to that node before continuing to the 
	next node. 

	When the initial group of nodes has been patched the user is asked
	to bring down the remaining nodes. When this is done the patch is
	propagated to this last group and the inventory is updated.

	
Q18.	What is the difference between "rolling RAC" and "minimum downtime"?

	With a normal patch the system resources being used need to be
	released. This means stopping the instance of the database. When
	using the minimum downtime argument it reduces the time the data
	base is inaccessible. This can be specified on the command line.

	In rolling RAC the instance on one node is inactive. This is 
	for the node to be patched. It can then be activated again. This
	means there a mixture of patched and unpatched nodes operating
	together. A patch is issued by Oracle as being rolling RAC
	installable. There is no command line argument for this feature.


Q19.	Why does OPatch keep saying "This is not a RAC system"?

	If you have RAC, 'opatch lsinventory' will print out RAC info. such
	as number of nodes, node names and local node name.  If 'opatch
	lsinventory' doesn't show anything RAC-related, it means that
	either you don't have RAC, or your RAC is not functioning correctly.

	OPatch currently uses some APIs to detect if the system is RAC.
	The most common problem causing the APIs to fail is because
	of the library path not being set correctly as described in
	Q5. above.

	Please try setting the library path as following: 
	Solaris 9iR2 home:
		LD_LIBRARY_PATH = $OUI_INSTALL_LOCATION/bin/solaris:$ORACLE_HOME/lib
		If it's 64-bit Solaris, append $ORACLE_HOME/lib32  
	Solaris 10G home:
		LD_LIBRARY_PATH = $ORACLE_HOME/oui/lib/solaris
		If it's 64-bit Solaris, append $ORACLE_HOME/lib32 

	HP-UX
		SHLIB_PATH=$ORACLE_HOME/lib32:/usr/lib

	Another reason OPatch fails to detect RAC is that the Cluster
	Ware is not up & running on the nodes.  In 10G, you can check
	by running $CRS_HOME/bin/olsnodes to see if it correctly returns
	a list of nodes for your RAC.  To locate CRS_HOME, please use 
	the following steps:
	1) Open Central Inventory ContentsXML/inventory.xml
	2) Look for the pattern
	<HOME NAME="crshome" LOC="/path/crshome" 
	TYPE="O" IDX="1" CRS="true"> 
	Since CRS="true", this is the CRS Home (CRS is Oracle Cluster
	Ware for 10G) installed under /path/crshome.  So you can do:
	3) cd /path/crshome
	4) olsnodes 


Q20.	What is a rolling RAC patch and how do I enable it?

	Rolling RAC patching allows the interoperation of a patched
	node and an unpatched node simultaneously. This means only one
	node is out of commission while it is patched.

	This cannot be enabled from the command line. Oracle supplies
	a patch that is recognized as being suitable for rolling RAC.

	To test if a patch is a rolling patch, you can use 'opatch query -all'


Q21.	What is the basic actions that happen when applying a rolling
	RAC patch?

	The user is prompted to stop the instances on the node to be
	patched. First the local node is patched then the user is
	asked for the next node to patch from a list. As each node is
	patched the user is prompted when it is safe to restart the
	patched node.

	The cycle of prompt for a node, stop the instances on the node,
	patch the node and restarting the instances continues until 
	stopped by the user or all nodes are patched.


Q22.	Is it possible to stop applying a patch after applying it to
	a few nodes and what are the issues?

	Yes, it is possible to interrupt the process. 

	There is a prompt that allows the user to stop applying the 
	patch. This means another patch cannot be applied until the 
	process is restarted and all nodes are patched or the partially 
	applied patch is rolled back.

Q23.	Is there a limit to partially applying a patch and then 
	rolling it back and what are the issues?

	There is a limit. The locking mechanism only allows you to
	partially apply a patch and then rollback the partially 
	applied patch. If the user tries to apply a partially
	rolledback patch manual intervention will be needed to fix
	the state of the system.

Q24.	Can rollback be interrupted?

	Yes, rolling back a patch can be stopped after any node in
	the same way applying a patch can be stopped. However the
	rollback process needs to finish before applying another
	patch or reapplying the same patch.

Q25.	ERROR: Interim inventory update exception...
	Files on system are patched but Inventory Update has failed.  
	Please run 'opatch lsinventory' to check if the patch has been 
	recorded in Inventory.

	The above message means that files on your system are patched but the 
	inventory update has failed. Therefore, it's very likely that 'opatch 
	lsinventory' will not show the patch.  If you want to roll back the patch,
	please invoke the shell script
	$ORACLE_HOME/.patch_storage/<patch>/rollback_<patch>.sh.

	There are many possible causes.  The most common ones are:

	1) The patch refers to a component X which needs a base component Y.
	And your ORACLE_HOME inventory does not have that component Y or 
	has Y not at a desired version level. If this is the case, you can
	run 'lsinventory', then look at the file <patch>/etc/config/actions 
	and <patch>/etc/config/inventory to check for required components and
	their versions.

	2) ORACLE_HOME is 9.2.0.1 which has been updated to 9.2.0.2, then 9.2.0.3.
	and/or you have OUI pre 2.2.18 version.  If this is the case, please 
	upgrade to OUI 2.2.18 and try the patch again.

	3) You are invoking OPatch from a read-only location.


Q26.	Does OPatch work in Cygwin environment?

	OPatch has incompatibility issues with Cygwin kind of environments.
    	OPatch mistakes Cygwin environment to be a Unix like environment
    	and does not use Windows specific code that exists inside OPatch.
    	So it is recommended not to use OPatch in Cygwin environment.

Q27.	I saw a pre-patch script being invoked during 'opatch apply', but then
	OPatch failed before it updated the inventory.  Should I manually run that 
	pre-patch script to roll back whatever it has done the system?

	First please read the readme file called pre.txt under <patch_ID>/custom 
	to see what the pre-patch script (it is named 'pre' on Unix, 'pre.bat' on 
	Windows) is supposed to the system.  If you think the change has been made
	and you want to reverse it back, you can manually invoke the pre-patch 
	script as following:
        'pre -rollback' 
    
Q28.	I saw the following OPatch error when it tried to update inventory:
	"ERROR: Unknown inventory save error: null".  What does it mean?

	It's been reported that on Linux environment, if oracm is running, OPatch 
	might run into the above error when updating inventory.  It is possible 
	that the patch might succeed despite the null pointer exception.  Please 
	run LsInventory to check if the patch was OK or not.  One work-around is 
	to shut down oracm and try the patch again.

Q29.	Where does OPatch look for Perl?

	On Unix: 
	   First, OPatch tries to look for Perl from ORACLE_HOME/perl/bin/perl.
	   If it's not there, OPatch then tries ORACLE_HOME/Apache/perl/bin/perl.
	   If it cannot find Perl there, it then tries to get Perl from your PATH
	   by basically doing 'which perl' and grepping to get the path. 
	   If not found, it errors out

	On Windows:
	   OPatch tries to look for Perl from ORACLE_HOME as follow:
	   First, %%ORACLE_HOME%\perl\5.6.1\bin\MSWin32-x86\perl.exe
	   If not found, then 
	   %ORACLE_HOME%\Apache\perl\5.00503\bin\MSWin32-x86\perl.exe
	   If not found, it errors out
    
	On any platform, you can use your version of Perl to invoke OPatch
	as follow:
	   perl opatch.pl ...
	For example: /tmp/perl opatch.pl apply 1     OR
	C:\Perl\bin\perl.exe opatch.pl lsinventory
	
Q30.	I set up RAC system by manually copy Oracle Home from one node
	to another.  Would OPatch / OUI recognize this system as RAC?
	
	First, this is not a supported set-up. The supported, safe way is to use
	OUI utility attach-home and attach-node.  Please consult OUI document. 

	All the steps list below are not supported.  Please use with care and
	with your own risk; it might corrupt your inventory & might not 
	recovered.

        *********************************************************************
        ATTENTION: Steps listed below are not recommended nor supported by
                   OPatch & OUI.  Please use OUI utility attach-node and
                   attach-home instead.
        *********************************************************************

	- Run 'opatch lsinventory'.  If your Cluster Ware is working OK,
	you will see output as below:
        --------------------------------
        Cluster Present, Non-RAC Install
        -------------------------------- 
     
	- If you run OPatch now, it would recognize your system as non-RAC 
	install, hence will not propagate changes to other nodes.

	- If you want OPatch and OUI to recognize your system as RAC, do 
	the following:

	a) run $OH/bin/lsnodes
	   let's assume that this command returns "node1" and "node2"
	b) modify the Central_Inventory/ContentsXML/inventory.xml to add all
	   the nodes from the output of step 1) to the node list.  The
	   node list looks like this:
               <HOME_NAME ...... (this is the Oracle Home you are patching)

                  <NODE_LIST>
                     <NODE_NAME="node1"/>
                     <NODE_NAME="node2"/>
                  </NODE_LIST>

               </HOME>

	This inventory.xml NODE_LIST is used by OUI to propagate files,
	so even though 'lsnodes' returns you the node list, w/o the
	above modification, OPatch still thinks you do not have RAC.

	c) repeat step a) and b) for all the nodes

	d) run 'opatch lsinventory' on all nodes.  The output should
	   look like the following if you run on node1:

               ----------------------------
               Multi-Nodes RAC System
               Node List: 
                 node1 
                 node2 
               Local Node: node1 
              ----------------------------
	You are done. OPatch would recognize RAC and propagate files. 

Q31.	OPatch could not get inventory of the home; but I know I do have
	the Oracle Home installed and set in the environment

	Run 'opatch lsinventory' and check if you see one of the
	following cases:

	1) Your Oracle Home is a symbolic link, then you would
	see the output below:
 
        WARNING: Oracle_Home is a symbolic link:
        A
        --->
        B

	This means your Oracle_Home is set in the environment as "A"
	but it is indeed a symbolic link to "B".  To get around
	this problem, modify your Central Inventory
	ContentsXML/inventory and replace string "A" by "B".  Reset
	your env. var. ORACLE_HOME to "B" and try again.

	2) Your Oracle Home is not a symbolic link, then you would
	see the output below:

        ERROR: OPatch Exception:
           OUI found no such ORACLE_HOME ...

	This means the ORACLE_HOME value set in the environment did
	not exists in the Central Inventory ContentsXML/inventory.xml
	If you have installed this Oracle Home using -invPtrLoc,
	you have to pass the same -invPtrLoc option to OPatch   

Q32.	My Oracle Home on Windows doesn't have Perl, so I download and 
	install Perl from Active State.  Now OPatch doesn't work...

	Set the env. var. ACTIVE_STATE_PERL to TRUE (all upper-case)
	(set ACTIVE_STATE_PERL=TRUE) 
	Run 'opatch lsinventory' to see if it works. 
        See Q36, Q43.
        
Q33.	'opatch lsinventory -detail' shows that I do not have any products
	installed on the Oracle Home.  'opatch apply' gives an error
	saying the same thing.  What happens?
	
	Your Oracle Home has a central inventory and a local inventory.
	This happens probably because the central inventory has a 
	newer timestamp than the local inventory.  Just "touch" the
	local inventory so that it a newer timestamp.  Files and
	directories to be "touched" are:
	Oracle_Home/inventory/ContentsXML
            Oracle_Home/inventory/ContentsXML/comps.xml

Q34.	OPatch fails to detect my Platform ID.  What can I do?

	OPatch uses "uname -a" (Unix) and "ver" (Windows) to detect
	your platform ID.  Sometime it fails, for example, due to
	locale setting.  If it fails, you would see the following
	error message:

		OPatch detects your platform as xyz while this patch 8801 
	supports platforms:
   		46 (Linux)
   	453 (Sun SPARC Solaris)
   		59 (HP)
   	100 (Win32)
   
	This patch is not suitable for this operating system.
	Please contact support for the correct patch.

	If you know your platform ID, you bypass the platform
	detection code and instruct OPatch to use a platform ID
	you define.  For example, if you know your Platform ID
	is 123 and OPatch fails to detect it, do:

	setenv OPATCH_PLATFORM_ID 123
 
	Then run OPatch again.

	If you don't know your platform ID, please contact 
 	support.
 
Q35.	OPatch doesn't invoke make on the remote node.  What should I do?

	This question is applicable on Unix only.  On Unix, OPatch supports
	running "make" command on local node and remote nodes.  OPatch relies
	on Unix "rsh" command to do so.  On certain systems, "rsh" is not 
	available or not set up, causing OPatch not being able to invoke "make" 
	command on the remote nodes.

	Work-around 1:
	If you have ssh working, you call tell OPatch to use that.  This is done
	by setting the environment variable OPATCH_REMOTE_SHELL.  For example, if
	you have a working /usr/bin/ssh, "setenv OPATCH_REMOTE_SHELL /usr/bin/ssh"
	OPatch will check for the env. var. and set the command to /usr/bin/ssh. 

	Work-around 2: 
	See if your "rsh" work by invoking "rsh -n remote-node 'ls /tmp'"
	(on HP, it is "remsh"). If it doesn't work, please contact Oracle Support. 
	Otherwise continue on with steps below.

	Do "which rsh".  Let's assume your rsh points to /usr/bin/rsh.
	Do "which ssh".  Let's assume your ssh points to /usr/bin/ssh.
	Test to see if your "ssh" work by invoking "ssh -n remote-node 'ls /tmp'"
	If it doesn't work, please contact Oracle Support.  OPatch needs either
	"rsh" or "ssh" to work.  If it does work, continue on with steps below.
	Back up your /usr/bin/rsh to /usr/bin/rsh.org
	Replace your "rsh" by "ssh" by creating a symbolic link that points from
	      	/usr/bin/rsh to /usr/bin/ssh.  
	This is done by invoking the command
      		"ln -s /usr/bin/ssh /usr/bin/rsh".
	Test to make sure your symbolic link /usr/bin/rsh work by invoking
	      	"rsh -n remote-node 'ls /tmp'"
	Try OPatch again.
  
Q.36	What Perl versions work fine with OPatch?

	AIX5.1/perl 5.6.0: works
	AIX5.1/perl 5.6.1: error
	AIX5.1/perl 5.8.0: works
   
	(On Windows, many factors affect the compalibity of OPatch and Perl.
	For example, if you have space in your Java path, it might work
	or not work depending on versions of Perl and Per distributors)
  
	Windows, Oracle Home perl 5.6.1, 5.8.3: works
	Windows, Active State Perl 5.6.1, 5.8.7: works 

        If you don't have Perl, you can download Perl from Metalink using bug
        number 2417872 

Q.37	I am trying to install a database patch for 9.2.0.5 on 
	RAC environment and the following error is displayed in the windows 
	where I am running the opatch:

	"OPatch has detected a list of nodes in the environment. 
	It is possible that you have a RAC but the Cluster Ware 
	is not working properly. Please consult the FAQ"

	To fix this, check if $ORACLE_HOME/oui/oraparam.ini has the entry 
	CLUSTERWARE={"oracle.crs","10.1.0.2.0"}

	If it is there, comment out the line using # as
	# CLUSTERWARE={"oracle.crs","10.1.0.2.0"}

Q.38    I am trying to install a patch on windows, the patch location being
        c:\My Patches\300100, but the complete patch location is not read 
	by OPatch.

	Yes, OPatch does not support path having spaces in it. The solution
        is to move the patch to a path that does not have spaces and then 
        give that location to opatch.

        Infact, OPatch will not work if there are spaces in paths of 
	Oracle Home, Patch location, JRE/JDK locations(if user wants to
	give -jre/-jdk option).

Q.39    OPatch fails with error code 100, saying Oracle Home is not registered
	with the central inventory, even though it is registered.
	
	"The Oracle Home d:\oracle\ora92 is not registered with the Central Inventory.
	OPatch was not able to get details of the home from the inventory.
	ERROR: OPatch failed because of Inventory problem.
	OPatch returns with error code = 100"

	If C:\WINNT\System32 is not in the PATH, then OPatch cannot 
	locate cmd.exe as this is where it resides. 
	Add C:\WINNT\System32 to the PATH. Please note that the ORACLE_HOME 
	must also be the first ORACLE_HOME in the PATH

Q.40    During applying a rolling patch, if user exits before finishing 
	patching all the nodes, then some nodes' binaries are patched and 
        but OPatch would not update inventory for any node, including
        the local system.   

        You will need to run OH/.patch_storage/<ID>/rollback_<ID>.sh on
        all patched nodes, then try one of the following:
   
        1) Run 'opatch apply -local' on both patched and unpatched nodes.
        2) Try 'opatch apply' again on this node.

Q.41    What is OPATCH_IS_SHARED?

        If you do not set env. var. OPATCH_IS_SHARED, then OPatch will not
        detect CFS.  If you set it to "DETECT", OPatch will do CFS detection.
        If you set it to "TRUE", OPatch will not detect CFS and will take it
        as a shared Oracle Home.  Likewise, if you set it to "FALSE", 
        OPatch will not detect CFS and will take it as a non-shared
        Oracle Home.

        If you set it to something else, then it is the same thing as
        setting it to "FALSE".

Q.42    While applying a patch I got the following error, what shall I do?
        "The following problems were encountered when trying to backup 
        Java class files:
        1. /private/oradb1/rdbms/jlib/xdb$1test.jar
        [ object: XDBServletRequest$ParamNames.class ] "

        OPatch doesnot support a jar action which is modifying a jar file, 
        which has a '$' character in its name. 
        OPatch supports '$' in filenames only for copy actions and 
        class files in jar actions.

Q.43    While applying the patch on Windows, I got the error
        "The filename, directory name, or volume label syntax is incorrect."
        What should I do now?

        This can be because of an issue with the perl that you are using.
        Try setting an environment variable "OPATCH_QUOTE_PERL_CMD" to "TRUE" 
        and try again.
        See Q32, Q36

Q.44    My ORACLE_HOME is a symbolic link, and rac propagation and remote make 
        is failing. What do I do?

        OPatch can work with symbolic links, but the symbolic link should be same
        on all the nodes. If not, the rac propagation fails.
        Set the same symbolic links on all the nodes and try again.

Q.45    I see some patch verification being done during apply, but the same 
        does not happen during rollback. Why?

        Yes, during application of the oneoff patch, after the inventory 
        updation the inventory and file system is checked to confirm that all 
        the required changes are made. This is a step which confirms the proper
        patch application.
        But the same thing is not done during rollback, because during rollback
        OPatch does not have a target to be compared against. 
 
     
==========================================================================
Modified 01/10/06
