A Shareplex process complains "Notice: Can't find home for Oracle SID...."
説明
Processes like activation (sp_tconf, sp_conf, etc), Capture (sp_ocap), ora_setup, Post (sp_opst), compare client (sp_declt), Reconcile (sp_oreconcile), etc, may complain about not finding Oracle SID as the following message from sp_tconf shows:
01/25/04 01:12 SharePlex was started on cpu 833dd76d using port 14009 01/25/04 01:12 SharePlex Production License 01/25/04 01:12 Logging user command: oracle activate config config_name 01/25/04 01:12 Process launched: sp_tconf (for o.SID1) [pid = 21217] 01/25/04 01:12 Notice: Cant find home for Oracle SID SID1 [sp_tconf(pdb)/21217] 01/25/04 01:12 Bad config file: file - unknown; Cant set ORACLE_SID and ORACLE_HOME for database o.SID1 01/25/04 01:12 Process exited sp_tconf (for o.SID1) [pid = 21217] - exit(1)
原因
Cause: Either a host language program call specified an invalid cursor or the value of the MAXOPENCURSORS option in the precompiler command were too small. All cursors must be opened using the OOPEN call before being referenced in any of the following calls: SQL, DESCRIBE, NAME, DEFINE, BIND, EXEC, FETCH, and CLOSE. The Logon Data Area (LDA) must be defined by using OLON or OLOGON. If the LDA is not defined, this message is issued for the following calls: OPEN, COM, CON, ROL, and LOGOFF.
対策
The usual remedy for this problem is to ensure that ORACLE_HOME, ORACLE_SID are set correctly in ones environment, and that oratab has correct entry for this SID before trying to activate. One needs to ensure that the case is also correct for SID name in oratab and that no other character besides ":" in oratab. For example, there have been cases where ":" was replaced by "=" sign in oratab prompting Shareplex to complain. Sometimes the SID names are commented in oratab file which causes this error.
If the environment is correct and the corresponding SID entry exist in oratab, one may want to ensure that the SID used in Shareplex files or commands is correct. In that case the problem may lie elsewhere as the following situations show:
1. Running reconcile on source instead of on target 2. Specifying incorrect SID name in config file 3. A missing "o." in the Datasource specification in file/command as with config file or reconcile command 4. If the instances in a database cluster for which one is installing SharePlex for RAC/OPS have different names (ORACLE_SIDs), then you need to create a TNS alias for them and place it in oratab file. The SharePlex for RAC/OPS replication processes reference the ORACLE_SID to determine which data to replicate (for source clusters) and which instance to post to (for target clusters).