Run compare during period of low activity on the table. If it is a huge table run compare with a where clause.
Example for compare using where clause:
sp_ctrl(SysA)> compare table scott.emp to scott.emp target SysB@o.oraB where "file >001005" repair
Another workaround is to increase the value of the parameter SP_DEQ_LOCK_WAIT from the (current) default of 300 seconds to a higher value. This parameter represents the time in seconds that compare (or repair) will attempt to lock the table for getting a read consistent view before timing out. See Knowledgebase article 112432 that explains the parameter and also delves on the nuances of setting it to a high or low value.
For more information on compare syntax refer to reference guide.