OID: User's Provisioning status stuck in Pending state.

Recently we hit an error when trying to provision a user for Real Time Collaboration within Oracle Collaboration Suite. When the user logged in they were met with the following error:

<username> is not provisioned to this application.

Via the Oracle Internet Directory (OID) Provisioning Console I could see that this user was stucking in pending status. Working with Oracle Support we determined that this user was deleted and recreated for some reason and there was orphan data.

By querying the RTC.RTC_USERS table within the OID database the PROVISION_STATUS column for this user had a value of DELETED. The solution to this problem was to:
  • delete the user via the OID Provisining Console
  • remove the ophan data
  • recreate the user
  • Re-provision the user for the applications they required.

Some queries:

select * from rtc.rtc_users where upper(user_name) = 'JOHNDOE';

Oracle support mentioned there may be more than one row of orphan data. So this query is just to determine how many bad rows there are.

Backup the table just in case you make a mistake or something goes horribly wrong.

create table rtc.rtc_users.BAK20090420 as select * from rtc.rtc_users;

Delete the bad data:

delete * from rtc.rtc_users where upper(user_name) = 'JOHNDOE';

Verify row count is the same as your first query above and commit. You can now recreate the user and provisioning should go through.


RPM Tip - Determining the architecture of an installed package.

As many of you are aware, one of the first steps prior to installing Oracle is to determine which operating system packages are required. On 64bit systems you are required to have both the 32bit and 64bit versions installed for some.

For example, one such required package is libstdc++-devel. If you execute rpm with the -qa options (q for query mode, a for all installed packages) you will see the following if it is installed:

[oravis@myserver~]$ rpm -qa | grep libstdc++-devel

If your on a 64bit OS how do you know if this is the 32bit or 64bit version? You need specify a query format in the rpm command. In the following example I extract the name, version, release and architecture information for the libstdc++-devel package.

[oravis@myserver ~]$ rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}_%{ARCH}.rpm \
%{INSTALLTIME:date}\n" | grep libstdc++

libstdc++-devel-3.4.6-10_x86_64.rpm Mon 06 Oct 2008 07:46:50 PM EDT
libstdc++-devel-3.4.6-10_i386.rpm Mon 06 Oct 2008 07:46:50 PM EDT

So based on this output I have both of the required packages and I can quickly identify which package I need to install if one is missing. Note: I always pipe rpm to grep because if you don't specify the package name properly you won't get any results. ie:

[oravis@myserver ~]$ rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}_%{ARCH}.rpm \
%{INSTALLTIME:date}\n" libstdc

[oravis@myserver ~]$