You mention that you do not want the redo applied to the standby database immediately. This means that you want to have "data divergence," meaning the data in both the primary and the standby are not in sync. The next question you need to answer is if you are allowed to have data loss. Is it imperitive that the standby database receive every transaction on the primary? If you require zero data loss but can have data divergence, then you will be running your Data Guard configuration in "instant protection mode." If you do not require zero data loss and can have data divergence, then you will be running your Data Guard configuration in "rapid protection mode." Instant protection mode can have poorer performance than rapid protection mode, but that is the price to be paid for zero data loss.
You do not need any shell scripts to apply the redo at the standby site. Configure Oracle correctly and let Oracle handle this for you. In your primary, you'll want to set you init parms similar to the following:
LOG_ARCHIVE_DEST_2 = 'SERVICE=standby LGWR SYNC AFFIRM DELAY=20';The above parameter says that the transmission is synchronous (SYNC) and that the standby site must send confirmation of receipt (AFFIRM) for zero data loss. The DELAY component indicates that there will be a delay of 20 minutes before the redo is applied to the standby database. Since the above is for zero data loss, this is for the instant protection mode. For rapid protection mode, simply change SYNC to ASYNC and AFFIRM to NOAFFIRM.
All of this is fully documented in the Data Guard documentation.
This was first published in December 2005