While replicating 9i Supported DDL, the following errors are observed on target Shareplex event_log:
Notice 2010-03-29 15:26:18.186348 29838 4029111200 s:1 Poster: Replicated DDL "CREATE OR REPLACE PACKAGE BODY REPORTS.AS.. FUNCTION <function_name>..." (posting from NAME1, queue QUEUE_NAME, to NAME2) [module opo]
Warning 2010-03-29 15:26:17.796450 29840 4030135200 s:1 Poster: OCI Warning: ORA-24344: success with compilation error. (posting from NAME1, queue QUEUE_NAME, to NAME2) [module opo]
The procedural object did not compile successfully on target.
The error is typical when replicating 9i Supported DDL (by configuring the parameter SP_OCT_REPLICATE_ALL_DDL to 1 on source). The probable reason is that the procedure was created and compiled successfully on source but on target it fails as the dependent object(s) are invalid. Some of the common reasons are missing dependent objects, permission problems when compiling procedures, invalid username, etc. One way to troubleshoot this is to try and manually compile the procedure and see the compilation errors and fix them as appropriate.
See Solution SOL52606 for details on factors that can cause the failure of DDL on target when 9i Supported DDL is enabled. The workarounds are:
A. On target ignore the DDL by configuring the parameter SP_OPO_STOP_ON_DDL_ERR to 0 for the time being and restart Post. From this point on all DDL errors will be ignored by Post. Once the Post is past the problematic DDL, the paremeter can be reset to the default of 1 by the sp_ctrl command Ã¢â‚reset param <parameter name>;;Ã¢â‚. Keeping it enabled indefinitely is not a good idea. See SOL21396 for details. In brief:
sp_ctrl>set param SP_OPO_STOP_ON_DDL_ERR 0
To enable it back
sp_ctrl>reset param SP_OPO_STOP_ON_DDL_ERR
B. You can also configure the parameter SP_OPO_CONT_ON_ERR to ignore the Oracle error ORA-01418. See SOL277 for details.
C. If it was not an intent to replicate 9i Supported DDL (typically the DDL on non-replicating tables), then it may be worth disabling the feature by setting the parameter SP_OCT_REPLICATE_ALL_DDL to 0 on source. To do this:
sp_ctrl>reset param SP_OCT_REPLICATE_ALL_DDL (the parameter is live and will take place immediately).
See SOL36703 for details on 9i Supported DDL, and SOL53602 for details on pros and cons of using this feature.