Thursday, February 25, 2010

ORA-20001: Unabled to call fnd_ldap_wrapper.create_user

Hi,
Recently we integrated our R12 instance with SSO/OID and we used provisiontype 4, which means no bidirectional flow of users. Subsequently when we tried to create users in R12 (not OID) we encountered the following error:
ORA-20001: APP-FND-02600: Unable to create user ALISBT due to the following reason(s):
ORA-20001: Unabled to call fnd_ldap_wrapper.create_user due to the followingreason:An unexpected error occurred. Please contact your System Administrator...

Fix:

When you have provision type 4 setup in your environment, you should set the following profile option correctly:

Application SSO LDAP Synchronization ==> DISABLED

In our environment it was set to enabled by default, due to which we faced the issue. Set the aforesaid provide option to disabled at site level and you will be able to create users successfully.

PS: We were able to overcome this issue quickly with help of my colleague and friend Srinivasan K, who is an expert in R12 SSO integration and I must acknowledge his excellent contribution here. Thanks Srini!

- Aravind Kamath Posral

Thursday, February 4, 2010

How to use non-default inventory location pointer with opatch

Hi,
This post again, is not a "fix-a-problem" kind of post. This is more to do with how to work around a tight spot and hence dont be surprised to see the disclaimer at the end!

If you are in a situation where you need to use a inventory location pointer from a non-default location, you can use the following command:

a. to query:
opatch lsinventory -invPtrLoc [full path to oraInst.loc]
eg. opatch lsinventory -invPtrLoc /apps/sdev/apps/tech_st/10.1.2/oraInst.loc

b. to apply a patch:

opatch apply -invPtrLoc [full path to oraInst.loc]
eg. opatch apply -invPtrLoc /apps/sdev/apps/tech_st/10.1.2/oraInst.loc

Just to add, the default location of the oraInst.loc file will be /etc/oraInst.loc and/or /var/opt/oracle/oraInst.loc. You might encounter a situation wherein there are multiple oracle homes on the same server and multiple maintenance activities are happening in parallel, in which case, if your oraInst.loc at non-default location has the correct location of the oracle inventory of the desired oracle home, you have the flexibility of using the same.

Further, if you dont have an inventory, you can create one using the following steps:

1. Define an inventory location for the new inventory information to be created.
2. Create the empty oraInventory directory with the appropriate shell username (who owns the oracle home file system) in the path specified in oraInst.loc

3. $./runInstaller -silent -attachHome -invPtrLoc /var/opt/oracle/oraInst.loc ORACLE_HOME="[full_path_to_ORACLE_HOME]" ORACLE_HOME_NAME="[ORACLE_HOME_NAME]"

DISCLAIMER: The above steps have worked well for me in various situations in the past, but I cannot guarantee that this will work well in all situations. Hence, please use your discretion if you plan to use these commands. You will be doing the same at your own risk. Have adequate back-out measures in place before you try the aforesaid steps in particular and any step from any of my other posts in general :)

- Aravind Kamath Posral