When trying to activate a new config, it fails with the below errors in the event log:
Logging user command: oracle activate config
quest_config.file2
Process launched: sp_tconf (for o.SID1) [pid = 14370]
Notice: Oracle env - SID1:/u01/app/oracle/product/9.2
[sp_tconf(pdb)/14370]
Compiling a configuration file: datasrc - o.SID1; file -
quest_config.file2
Notice: Oracle version 92 [sp_tconf(osp)/14370]
Notice: New activation id 187 [sp_tconf/14370]
Error: 17000 - Error opening file
/quest/005/splex/state/o.SID1-objcache.189: No such file or directory.
[sp_tconf(osp)/14370]
Config compilation completed: datasrc - o.SID1; file -
quest_config.file2
Bad config file: file - quest_config.file2; INT Error, cant
open or read object cache file. See log for more details - ReadObjCache
Process exited sp_tconf (for o.SID1) [pid = 14370] -
exit(1)
In later versions of SharePlex the event log entries may be slightly different but convey the same issue:
Activation: 17006 - Cannot open object cache: Input/output: <$SP_SYS_VARDIR>/state/o.sid-objcache_sp_conf.x: open() failed (activating sid sidname) [module osp]
Error 2011-02-09 10:36:25.917163 29607 4136249952
Activation: 17006 - Cannot open object cache: Input/output: <$SP_SYS_VARDIR>/state/o.sid-objcache_sp_conf.x: open() failed (activating sid sidname) [module osp]
Error 2011-02-09 10:36:25.951627 29607 4136249952 Compile of "config file name" for sid o.sid failed: INT Error, can't open or read object cache file. See log for more details - ReadObjCache
Info 2011-02-09 10:36:26.046533 19560 4136556224 Activation exited with code=1, pid = 29607 (activating sid sidname)
Shareplex internal tables are not clean.
There are a number of reasons this could happen. Information in Shareplex internal tables indicates presence of an earlier config whereas the vardir/state directory contents are not consistent with the contents of internal tables, specifically with shareplex_actid table.
Some of the common reasons are:
1. ora_cleansp not run correctly; either specifying the wrong vardir or the vardir may have been moved.
2. Using wrong login info when running ora_cleansp.
3. Internal table values and existing object cache file values do not match, due to files possibly deleted from the SharePlex variable directory.
4. Residual values in internal tables, due to Shareplex running on the database in the past, whereby though the vardir has been cleaned, care was not taken to remove values from Shareplex internal tables.
5. One may forget to run cleanup.sql on target prior to activating a reverse config, resulting in this type of error.
6. If a user inadvertently changes the Shareplex user on the source side when running ora_setup, and if incidentally that newly changed user exists in the database (say due to some past replication), then it will populate the Shareplex internal tables with entries from that changed user and consequently it will look for an invalid object cache as per the directives from the shareplex_actid table. The content of the field ACTID in this internal table canbe viewed to confirm if indeed this happened. This can also cause the above error.
The easiest way to resolve the problem is to shutdown Shareplex and run ora_cleansp and then reactivate (and resync as needed). In situations where the vardir is clean and only the internal tables need to be cleaned, running cleanup.sql may be enough before activating again. The internal table shareplex_actid should not contain any row when this problem is reported. If it does, running cleanup.sql is enough.
If the issue occurs due to wrong user specified when running ora_setup, as per para 6 above, then ora_setup needs to be re-run with the correct Shareplex user, followed by ora_cleansp on both source and target, sync of target database and activation.