Compare processes errors out as seen in "show compare" output. Compare logs on source (*desvr* log) and target (*declt* log), show the following:
146: Warning: Call to read 8 bytes (de_sock_read,L909), unexpectedly returned 0 bytes.
146: Process writing may have exited with an error.
146: The warnings may due to either "compare cancel"command or network errors.
146: Error 1 calling de_sock_read (de_msg_receive_header,L191)
146: Error 1 calling de_msg_receive_header (de_msg_receive_nodata_msg,L1571)
146: Status : Error
146: Error 1 calling de_msg_receive_nodata_msg in de_compare_server (1715)
000: COMPARE CURRENT STATUS:Thu Dec 11 23:05:17 2008 (elapsed 0.390000 seconds), ready to fetch first batch, including the order by sorting. (de_batch_setup,L1093:de_log_line,L323)
000: Oracle Error 904: ORA-00904: "COLUMN_NAME": invalid identifier
000: Error ORA-904 calling OCIStmtExecute (de_lob_get_length,L1484)
000: Oracle Warning 904: ORA-00904: "COLUMN_NAME": invalid identifier
000: Error ORA-904 calling de_lob_get_length (de_lob_read,L1091)
000: Error 1 calling de_lob_read (de_select_specCol,L398)
000: Error 1 calling de_select_specCol (de_select_fetch_rows,L1823)
000: Error 1 calling de_select_fetch_rows in de_batch_setup
The problem is due to a missing column on the target table with respect to the source table.
When running compare, it is assumed that the source and target tables have identical column definitions, except when comparing tables involved in vertical partitioning. In this case, the compare process finds that the structure of the target table differs from the source table since the target table does not have the column COLUMN_NAME, resulting in the Oracle error ORA-00904. Moving forward, the user has two options:
1. To use vertical partitioning and specify the columns to be replicated, if you intend to retain the target table structure. Once the activation is finished, you should be able to sync the target table in future using compare. The compare will take into cognizance the difference in structures between source and target tables, and only compare the common columns.
2. Stop Post, change the target table structure by adding the missing column COLUMN_NAME so that the structure of target table matches with the source, and then start Post. After this, you should be able to run compare anytime.
Please refer to the Shareplex Admin Guide for details on replicating a subset of the columns of source table using Shareplex Vertical Partitioning.
Compare will work if target contains more columns than source but it will error out with ORA-00904 if target contains fewer columns than source. Refer to the Reference Guide for information on using compare commands.